Oracle中alter system命令参数之scope

SCOPE

The SCOPE clause lets you specify when the change takes effect. Scope depends on whether you started up the database using a client-side parameter file (pfile) or server parameter file (spfile).

scope可指定对system的修改何时生效,scope=memory|spfile|both ,值取决于数据库使用pfile还是spfile启动

MEMORY 

MEMORY indicates that the change is made in memory, takes effect immediately, and persists until the database is shut down. If you started up the database using a parameter file (pfile), then this is the only scope you can specify.

scope=memory,表示修改立即生效,持续到数据库关闭为止,若数据库使用pfile启动,这是唯一可选值,也是默认值。

SPFILE 

SPFILE indicates that the change is made in the server parameter file. The new setting takes effect when the database is next shut down and started up again. You must specify SPFILE when changing the value of a static parameter that is described as not modifiable in Oracle Database Reference.

scope=spfile ,会修改spfile参数,新设置只有在重新使用spfile启动数据库的时候生效。

另外,若是修改静态参数(不能直接生效的参数),必须指定scope=spfile,否则若指定memory或者both会报如下错误:

ORA-02095: specified initialization parameter cannot be modified

因为静态参数不能直接通过修改内存而生效,只能通过修改spfile然后重启数据库生效。

BOTH

BOTH indicates that the change is made in memory and in the server parameter file. The new setting takes effect immediately and persists after the database is shut down and started up again.

scope=both,表示修改会发生在内存上立即生效,并修改spfile保证数据库重启后也生效。

If a server parameter file was used to start up the database, then BOTH is the default. If a parameter file was used to start up the database, then MEMORY is the default, as well as the only scope you can specify.

若数据库使用spfile启动,则scope=both是默认值

若数据库使用pfile启动,则scope=memory是默认值,也是唯一值。

静态参数,不能通过修改内存(默认scope值或scope=memory或scope=both)来生效,要通过修改spfile(),重启数据库来生效。

原文地址:https://www.cnblogs.com/timlong/p/6089680.html