【spfile】修改及重置spfile實操 plus 故障處理一則

secooler發表於2012-04-05
  如果不知道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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章