浅谈设置spfile中的参数值

问题: 为什么不能用文本编辑器来编辑或者修改spfile中的键值对?

回答: 因为spfile是二进制文件,必须使用alter system 命令,


语法如下:

alter system set parameter=value <comment='text'> <deferred>
                 <scope=memory|spfile|both> <sid='sid|*'>
                 <container=current|all>

  • parameter=value表示更改的参数名以及参数的新值。
  • comment='text'是一个与此参数相关的可选注释。若设置这个注释后,将会放入v$parameterde视图中的UPDATE_COMMENT字段中。
SQL> r
  1* select name,UPDATE_COMMENT from v$parameter where name like 'sga%'

NAME                                                                             UPDATE_COMMENT
-------------------------------------------------------------------------------- ------------------------------
sga_max_size                                                                     internally adjusted
sga_target

 

  • deferred 指定系统修改是否对以后的会话生效,即:对当前会话无效,新建会话生效。我们可以查看数据库必须要使用deferred的参数。 
SQL> select name from v$parameter where ISSYS_MODIFIABLE='DEFERRED';

NAME
--------------------------------------------------------------------------------
backup_tape_io_slaves
recyclebin
audit_file_dest
object_cache_optimal_size
object_cache_max_size_percent
sort_area_size
sort_area_retained_size
olap_page_pool_size

8 rows selected. (此返回结果因版本各异)

因此,当我们需要修改spfile中的以上参数时,必须使用DEFERRED,且不是立即生效,如recyclebin
alter system set recyclebin=off DEFERRED;

 

  • scope=memory|spfile|both 指示了这个参数设置的"作用域",
  • scope=memory只在实例中修改,数据库重启后失效。
  • scope=spfile只修改spfile中的值,数据库重启后参数生效,如process
  • scope=both指在内存和spfile中都会完成参数的修改。
  • sid='sid|*'主要用于集群,默认为sid='*'  

例如:

alter system set local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=135.149.97.xxx)(PORT=1621))))' sid='db1'; 

container=current|all适用于多租户架构的数据库,12C及以上,默认为container=current,另外对于PDB()来说,需要注意的是它的参数存储于其自身的数据字典当中,而非spfile,因此,当我们移动到另外一个容器时,其自身的参数设置也会随之一并转移。


问题二:如何取消spfile中的设置,换句话说如何还原系统默认值?

回答:使用reset子句
语法如下:
 

alter system reset parameter <scope=memory|spfile|both> sid='sid|*'

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值