ITPub博客

【spfile】修改及重置spfile实操 plus 故障处理一则

原创 Linux操作系统 作者:secooler 时间:2012-04-05 00:37:26 0 删除 编辑
  如果不知道spfile为何物以及它能给我们DBA带来哪些便利的同学,请自行Google:)

1.spfile修改语法
语法:
alter system set parameter_name=value ;

Oracle官方文档中描述如下(一样的):
alter system set
parameter_name =
   parameter_value [, parameter_value ]...
   [ COMMENT = string ]
   [ DEFERRED ]
   [ SCOPE = { MEMORY | SPFILE | BOTH } ]
   [ SID = { 'sid' | * } ]

2.spfile修改语法注释,含义烂熟于胸的同学可以在这里飘过了~~~
参数注释:
1).parameter_name=value
参数键值对应关系在这里体现,如db_recovery_file_dest_size=10g

2).comment='text'

注释信息,使用后可以在v$parameter视图的update_comment中体现出来

3).deferred

对当前的会话不生效,只对以后的会话生效。有些参数必须使用这个参数,这些参数有:select name from v$parameter where issys_modifiable = 'DEFERRED';

4).scope=memory|spfile|both

作用于在当前会话|只修改spfile|默认的会话级别和spfile同时修改

5).sid='sid|*'

RAC环境下使用,默认是“*”,可对具体的sid进行修改

3.恢复spfile参数为默认值的方法
alter system reset parameter_name sid='sid|*';
具体参数含义参见上面描述,不再重复。

4.实操“修改spfile”,以闪回区大小显示参数db_recovery_file_dest_size由原来的20G修改为10G为例
1)当前值如下
sys@ora10g> show parameter db_recovery_file_dest_size

NAME                        TYPE          VALUE   
--------------------------- ------------- --------
db_recovery_file_dest_size  big integer   20G

或使用下面的方法查询
sys@ora10g> col name for a30
sys@ora10g> col VALUE for a11
sys@ora10g> col UPDATE_COMMENT for a40
sys@ora10g> select name,value,update_comment from v$parameter where name = 'db_recovery_file_dest_size';

NAME                       VALUE       UPDATE_COMMENT
-------------------------- ----------- ---------------------------
db_recovery_file_dest_size 21474836480

2)修改之
sys@ora10g> alter system set db_recovery_file_dest_size=10g comment='alter db_recovery_file_dest_size to 10g';

System altered.

3)查看一下修改后的效果,注意UPDATE_COMMENT字段因为使用了comment参数,已经有相应的内容
sys@ora10g> col name for a30
sys@ora10g> col VALUE for a11
sys@ora10g> col UPDATE_COMMENT for a40
sys@ora10g> select name,value,update_comment from v$parameter where name = 'db_recovery_file_dest_size';

NAME                       VALUE       UPDATE_COMMENT
-------------------------- ----------- --------------------------------
db_recovery_file_dest_size 10737418240 alter db_recovery_file_dest_size to 10g

5.实操“恢复spfile参数为默认值”
sys@ora10g> alter system reset db_recovery_file_dest_size scope=spfile sid='*';

System altered.

注意一下,这里使用的是scope=spfile,需要重启实例才能生效。
重置参数的实质是:将db_recovery_file_dest_size信息从spfile中删除,您可以通过创建pfile的方法验证之,或者继续观看下面的演示,也许您也会有结果和收获

6."plus故障处理"
重启数据库后发现:报错了。
sys@ora10g> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
sys@ora10g> startup;
ORA-19802: cannot use DB_RECOVERY_FILE_DEST without DB_RECOVERY_FILE_DEST_SIZE

  原因很简单,我们采用了简单粗暴的方式删除了spfile中的db_recovery_file_dest_size设置信息,上面就是连带的故障信息。使用这个参数做演示有点草率,也许使用sort_area_size参数做例子更好一些:)
如何恢复上面的错误?有点偏离我们的主题了。方法不难,通过修改pfile,添加db_recovery_file_dest_size=10g的信息,使用pfile启动数据库,然后在重新创建一下spfile。具体操作流程如下:
(1)$ vi /oracle/app/oracle/product/10.2.0/db_1/dbs/initora10g.ora  添加db_recovery_file_dest_size=10g

(2)NotConnected@> startup pfile='/oracle/app/oracle/product/10.2.0/db_1/dbs/initora10g.ora'


(3)sys@ora10g> create spfile from pfile;


(4)sys@ora10g> startup force;


7.小结
  通过这个故障说明什么?要总结滴
  请不要在生产环境做任何想当然的尝试,DBA渴求实验和测试,但是更需要谨慎和职业操守。

Good luck.

secooler
12.04.05

-- The End --


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/519536/viewspace-611418/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Oracle ACE 总监,OCM联盟(ocmu.org)创始人,恩墨学院(enmoedu.com)创始人,ITPUB Oracle专题深入讨论版版主,资深Oracle数据库专家,北京大学理学硕士,获Oracle OCM 10g 11g认证,ACOUG核心成员,DATAGURU专家团成员,Blogger。Good luck.

注册时间:2008-03-16

  • 博文量
    797
  • 访问量
    7882465