oracle设置初始化参数中的scope子句

使用alter system 语句可以设置初始化参数,例如要修改sga_target的值为0,

通过下面的语句可以查询sga_target是静态参数还是动态参数:

SQL> select name,issys_modifiable from v$parameter where name='sga_target';

NAME                                     ISSYS_MODIFIABLE
---------------------------------------- ------------------
sga_target                               IMMEDIATE

 

可知sga_target参数为动态参数,可在线修改:

SQL>alter system set sga_target=0 scope=both;

 

SCOPE 子句指定了参数改变的使用范围,它可以取如下的值:

1.SPFILE。改变仅对SPFILE文件生效。对于动态参数而言,改变将在下一次启动时生效。静态参数只能通过这种方式改变。

2.MEMORY。仅在内存中应用改变的值。对于动态参数而言,改变将立即生效,但在下一次启动时将恢复为原来的值,因为SPFILE文件中的参数值没有改变。静态变量不允许使用此参数。

3.BOTH。改变同时应用于SPFILE文件和内存。对于动态参数而言,改变将立即生效,而且在下一次启动时依然有效。静态变量不允许使用此参数。

 

由上可知:静态参数只能通过SPFILE方式改变,动态参数可通过三种方式改变,不同的方式有不同的效果。

 

动态修改sga_target参数值为0:

SQL> show parameter spfile;

NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
spfile                               string                 F:\ORACLE\PRODUCT\10.2.0\DB_1\
                                                            DATABASE\SPFILEORCL.ORA

 

SQL> show parameter sga_target;

NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------
sga_target                           big integer            584M

 

SQL> alter system set sga_target=0 scope=both;

系统已更改。

SQL> show parameter sga_target;

NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- -------------------
sga_target                           big integer            0                                                   %可见已立即生效

 

SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup;
ORACLE 例程已经启动。

Total System Global Area  612368384 bytes
Fixed Size                  1250428 bytes
Variable Size             251661188 bytes
Database Buffers          352321536 bytes
Redo Buffers                7135232 bytes
数据库装载完毕。
数据库已经打开。
SQL>
SQL> show parameter sga_target;

NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------
sga_target                           big integer            0                                      %可见在SPFILE中的值也已修改              

 

 

注:

1。省略scope子句也能达到scope=both的效果,推测scope的缺省值为scope=both?

SQL> alter system set sga_target=0;

系统已更改。

SQL> show parameter sga;

NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
lock_sga                             boolean                FALSE
pre_page_sga                         boolean                FALSE
sga_max_size                         big integer            584M
sga_target                           big integer            0
SQL>
SQL>
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。

Total System Global Area  612368384 bytes
Fixed Size                  1250428 bytes
Variable Size             251661188 bytes
Database Buffers          352321536 bytes
Redo Buffers                7135232 bytes
数据库装载完毕。
数据库已经打开。
SQL>
SQL>
SQL> show parameter sga

NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
lock_sga                             boolean                FALSE
pre_page_sga                         boolean                FALSE
sga_max_size                         big integer            584M
sga_target                           big integer            0

 

2。选择scope子句为memory时,仅在内存中应用改变的值,对于不同的会话,只要没有会话重启数据库,该改变均生效

SQL> select sid from v$mystat where rownum=1;

       SID
----------
       158

SQL> show parameter sga_target;

NAME                                 TYPE
------------------------------------ ----------------------
VALUE
------------------------------
sga_target                           big integer
0

 

SQL> select sid from v$mystat where rownum=1;

       SID
----------
       138

 SQL> show parameter sga_target;

NAME                                 TYPE
------------------------------------ ----------------------
VALUE
------------------------------
sga_target                           big integer
0

 

SQL> select sid from v$mystat where rownum=1;

       SID
----------
       158

SQL> alter system set sga_target=580m scope=memory;

系统已更改。

SQL>  show parameter sga_target;

NAME                                 TYPE
------------------------------------ ----------------------
VALUE
------------------------------
sga_target                           big integer
584M

 

SQL> select sid from v$mystat where rownum=1;

       SID
----------
       138

 SQL> show parameter sga_target;

NAME                                 TYPE
------------------------------------ ----------------------
VALUE
------------------------------
sga_target                           big integer
0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值