Oracle RAC 重置db_recovery_file_dest_size引數

chenoracle發表於2020-07-26

Oracle RAC 重置db_recovery_file_dest_size引數


說明:

db_recovery_file_dest_size引數值預設大小為0,某些場景下我們需要臨時設定一個大於0的值,之後可能需要再將值改回預設值0;

將db_recovery_file_dest_size由0改到5G;

檢視當期引數檔案

SQL> show parameter spfile
NAME     TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile     string +DATA/cjcdb/spfile/spfilecjcdb.ora

檢視db_recovery_file_dest_size值

SQL> show parameter recover
NAME     TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest     string
db_recovery_file_dest_size     big integer 0
db_unrecoverable_scn_tracking     boolean TRUE
recovery_parallelism     integer 0

設定db_recovery_file_dest_size值為5g

SQL> alter system set db_recovery_file_dest_size=5G sid='*'; 
System altered.

再將db_recovery_file_dest_size引數改為0,出現報錯ORA-19803

SQL> alter system set db_recovery_file_dest_size=0 sid='*';
alter system set db_recovery_file_dest_size=0 sid='*'
*
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-19803: Parameter DB_RECOVERY_FILE_DEST_SIZE is out of range (1 - 18446744073709551614)

通常有兩種方式可以將db_recovery_file_dest_size重置為0;

方法一:reset

方法二: 生成pfile,手動將db_recovery_file_dest_size引數值去掉


方法一:reset

reset說明:

Clearing Initialization Parameter Values
You can use the ALTER SYSTEM RESET command to clear (remove) the setting of any initialization parameter in the SPFILE that was used to start the instance. 
Neither SCOPE=MEMORY nor SCOPE=BOTH are allowed. The SCOPE = SPFILE clause is not required, but can be included.
You may want to clear a parameter in the SPFILE so that upon the next database startup a default value is used.

重置db_recovery_file_dest_size值

reset預設採用scope=spfile方式

SQL> alter system reset db_recovery_file_dest_size scope=spfile sid='*';
SQL> show parameter recover
NAME     TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest     string
db_recovery_file_dest_size     big integer 5G
db_unrecoverable_scn_tracking     boolean TRUE
recovery_parallelism     integer 0

重啟其中一個節點

SQL> shutdown immediate
SQL> startup
ORACLE instance started.
Total System Global Area 1023004672 bytes
Fixed Size    2259640 bytes
Variable Size  704644424 bytes
Database Buffers  310378496 bytes
Redo Buffers    5722112 bytes
ORA-01105: mount is incompatible with mounts by other instances
ORA-19808: recovery destination parameter mismatch

報錯ORA-01105,說明修改db_recovery_file_dest_size後,必須同時重啟RAC所有節點例項才可以。

SQL> show parameter recover
NAME     TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest     string
db_recovery_file_dest_size     big integer 0
db_unrecoverable_scn_tracking     boolean TRUE
recovery_parallelism     integer 0

此時重啟另一個節點例項後,在重啟這個節點例項,引數即可修改成功。

注意: 如果執行了db_recovery_file_dest_size引數reset操作後,還沒有時間視窗重啟例項,當某一個節點當機後,首次啟動時無法開啟例項的,因為兩個節點db_recovery_file_dest_size值不一致,為了減少資料庫停機時間,可以先在另一個節點上,手動設定db_recovery_file_dest_size為當期值,然後在啟動當機的例項。


方法二:生成pfile,手動將db_recovery_file_dest_size引數值去掉

1 生成pfile到臨時目錄,注意不要覆蓋預設的pfile

SQL> create pfile='/tmp/pfile0726.ora' from spfile;

2 註釋掉或刪除db_recovery_file_dest_size

[oracle@rac01 dbs]$ cat /tmp/pfile0726.ora |grep recover
###*.db_recovery_file_dest_size=5368709120

3 重新生成spfile(spfile可以提前備份)

SQL> create spfile='+DATA/cjcdb/spfile/spfilecjcdb.ora' from pfile='/tmp/pfile0726.ora';

4 需要同時重啟所有例項

SQL> show parameter recover
NAME     TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest     string
db_recovery_file_dest_size     big integer 0
db_unrecoverable_scn_tracking     boolean TRUE
recovery_parallelism     integer 0

歡迎關注我的微信公眾號"IT小Chen",共同學習,共同成長!!

Oracle RAC 重置db_recovery_file_dest_size引數

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29785807/viewspace-2707058/,如需轉載,請註明出處,否則將追究法律責任。

相關文章