动态参数 -服务器参数spfile 随时改 静态参数 -文本参数 必须加上scope=spfile 重启实例生效
会话参数 随时 在当前会话端有效
这三个参数如何看呢?我怎么知道何时加scope=spfile,何时加scope=memory?
比如现在我修改pga_aggregate_target大小
SQL> show parameter pga NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ pga_aggregate_target big integer 188M
SQL> select name,isses_modifiable,issys_modifiable,isinstance_modifiable from v$parameter where name='pga_aggregate_target'; NAME -------------------------------------------------------------------------------- ISSES ISSYS_MOD ISINS ----- --------- ----- pga_aggregate_target FALSE IMMEDIATE TRUE SQL>
解释:
isses_modifiable-->false当前session不可以修改-->alter session set pga_aggregate_target=120m 不可以
issys_modifiable-->immdie表示system修改后可以立即生效,是个动态参数-->alter system set pga_aggregate_target=120m 可以
issys_modifiable-->false表示system是个静态参数
isinstance_modifiable-->true当前实例可以被更改-->alter system set pga_aggregate_target=120m scope=memory; 可以
spfile是动态参数文件,里面设置了Oracle 的各种参数。所谓的动态,就是说你可以在不关闭数据库的情况下,更改数据库参数,记录在spfile里面。更改参数的时候,有4种scope选项。scope就是范围++ scope=spfile 仅仅更改spfile里面的记载,不更改内存,也就是不立即生效,而是等下次数据库启动生效。有一些参数只允许用这种方法更改
++ scope=memory 仅仅更改内存立即生效,不改spfile。也就是下次启动就失效了
SQL> show parameter pga NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ pga_aggregate_target big integer 188M SQL> alter system set pga_aggregate_target=120m scope=memory 2 ; System altered. SQL> show parameter pga NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ pga_aggregate_target big integer 120M SQL>
++ scope=both 内存和spfile都更改++ 不指定scope参数,等同于scope=both.
所以有时候发现修改不了有些参数就直接scope=spfile