STANDBY_FILE_MANAGEMENT引數未設定auto導致的ADG備庫異常

李行行丶發表於2022-03-02

環境說明

OS:Red Hat Enterprise Linux Server release 6.5 (Santiago)

資料庫版本:SQL*Plus: Release 11.2.0.4.0 Production

背景介紹

    測試使用的一套單機ADG,早上到單位之後同事詢問表空間使用率查詢的兩種方式,基於資料檔案的自動擴充套件和預設資料檔案非自動擴充套件,以及現有指令碼查詢是否準確,隨即在自己的測試環境上建立了一個表空間,並指定擴充套件上線大小,進行了如下操作。

09:08:46 SQL> create tablespace lhh datafile '/oradata/orcl/lhh01.dbf' size 1G autoextend on maxsize 5G;
Tablespace created.

上述操作執行成功後,發現備庫異常當機了感覺非常奇怪,隨即檢視了備庫的alert日誌資訊,發現提示STANDBY_FILE_MANAGEMENT引數設定為MANUAL,MRP程式在應用日誌的時候,因ORA-01274錯誤被異常終止。alert資訊擷取如下:

Wed Mar 02 09:10:49 2022
File #5 added to control file as 'UNNAMED00005' because
the parameter STANDBY_FILE_MANAGEMENT is set to MANUAL
The file should be manually created to continue.
MRP0: Background Media Recovery terminated with error 1274
Errors in file /u01/app/oracle/diag/rdbms/orcldg/orcl/trace/orcl_mrp0_10718.trc:
ORA-01274: cannot add datafile '/oradata/orcl/lhh01.dbf' - file could not be created
Managed Standby Recovery not using Real Time Apply
Recovery interrupted!
Recovered data files to a consistent state at change 1251042
MRP0: Background Media Recovery process shutdown (orcl)

問題找到之後處理就比較簡單了

問題解決處理

檢視備庫的資料檔案資訊,這裡就能發現異常的資料檔案了,此時備庫恢復正常

09:13:36 SQL> select name from v$datafile;
NAME
------------------------------
/oradata/orcldg/system01.dbf
/oradata/orcldg/sysaux01.dbf
/oradata/orcldg/undotbs01.dbf
/oradata/orcldg/users01.dbf
/u01/app/oracle/product/11.2.0/db_1/dbs/UNNAMED00005

檢視standby_file_management引數狀態值

--這裡因為是沒有設定導致的問題,不同於設定auto因備庫空間不足導致的故障,因此直接下一步操作即可

09:13:42 SQL> show parameter standby_file_management
NAME                                 TYPE            VALUE
------------------------------------ --------------- ------------------------------
standby_file_management              string          MANUAL

重建一個新的資料檔案

09:15:52 SQL> alter database create datafile '/u01/app/oracle/product/11.2.0/db_1/dbs/UNNAMED00005' as '/oradata/orcl/lhh01.dbf';
Database altered.

重新設定 standby_file_management引數為auto,避免問題再次發生

10:30:22 SQL> alter system set standby_file_management=auto;
System altered.
10:35:29 SQL> show parameter standby_file_management
NAME                                 TYPE            VALUE
------------------------------------ --------------- ------------------------------
standby_file_management              string          AUTO


再次檢視資料檔案,此時發現資料檔名稱正常

09:16:30 SQL> select name from v$datafile;
NAME
------------------------------
/oradata/orcldg/system01.dbf
/oradata/orcldg/sysaux01.dbf
/oradata/orcldg/undotbs01.dbf
/oradata/orcldg/users01.dbf
/oradata/orcl/lhh01.dbf

再次開啟備庫實時應用

10:28:40 SQL> alter database recover managed standby database using current logfile disconnect from session;
Database altered.

檢視應用延遲

10:29:43 SQL> set linesize 150;
10:30:22 SQL> set pagesize 20;
10:30:22 SQL> column name format a13;
10:30:22 SQL> column value format a20;
10:30:22 SQL> column unit format a30;
10:30:22 SQL> column TIME_COMPUTED format a30;
10:30:22 SQL> select name,value,unit,time_computed from v$dataguard_stats where name in ('transport lag','apply lag');
NAME          VALUE                UNIT                           TIME_COMPUTED
------------- -------------------- ------------------------------ ------------------------------
transport lag +00 00:00:00         day(2) to second(0) interval   03/02/2022 10:30:22
apply lag     +00 00:00:00         day(2) to second(0) interval   03/02/2022 10:30:22






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

相關文章