Data Guard 環境下調整 Redo Log 大小涉及主庫與備庫的 Online Redo Log 與 Standby Redo Log 同步變更,操作順序錯誤易導致同步中斷。本文記錄從 50MB 調整至 60MB 的完整實操步驟,含 RAC 環境 Thread 考量。
+DATA)standby_file_management=manual、新增 Online Redo Log、清理/刪除舊 Logstandby_file_management=auto-- 1. 取消 Managed Recovery
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
-- 2. 新增 Standby Redo Log (60MB x 6 groups)
ALTER DATABASE ADD STANDBY LOGFILE GROUP 11 ('+DATA/orcldg/onlinelog/standby_group_11.log') SIZE 60M;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 12 ('+DATA/orcldg/onlinelog/standby_group_12.log') SIZE 60M;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 13 ('+DATA/orcldg/onlinelog/standby_group_13.log') SIZE 60M;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 14 ('+DATA/orcldg/onlinelog/standby_group_14.log') SIZE 60M;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 15 ('+DATA/orcldg/onlinelog/standby_group_15.log') SIZE 60M;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 16 ('+DATA/orcldg/onlinelog/standby_group_16.log') SIZE 60M;
-- 3. 刪除舊 Standby Redo Log (Group 5-10)
ALTER DATABASE DROP LOGFILE GROUP 5;
ALTER DATABASE DROP LOGFILE GROUP 6;
ALTER DATABASE DROP LOGFILE GROUP 7;
ALTER DATABASE DROP LOGFILE GROUP 8;
ALTER DATABASE DROP LOGFILE GROUP 9;
ALTER DATABASE DROP LOGFILE GROUP 10;
-- 1. 新增 Online Redo Log (Thread 1: Group 11-12, Thread 2: Group 13-14)
ALTER DATABASE ADD LOGFILE THREAD 1 GROUP 11 ('+DATA/orcl/onlinelog/group_11.log') SIZE 60M;
ALTER DATABASE ADD LOGFILE THREAD 1 GROUP 12 ('+DATA/orcl/onlinelog/group_12.log') SIZE 60M;
ALTER DATABASE ADD LOGFILE THREAD 2 GROUP 13 ('+DATA/orcl/onlinelog/group_13.log') SIZE 60M;
ALTER DATABASE ADD LOGFILE THREAD 2 GROUP 14 ('+DATA/orcl/onlinelog/group_14.log') SIZE 60M;
-- 2. 刪除舊 Online Redo Log (Group 1-4)
ALTER DATABASE DROP LOGFILE GROUP 1;
ALTER DATABASE DROP LOGFILE GROUP 2;
ALTER DATABASE DROP LOGFILE GROUP 3;
ALTER DATABASE DROP LOGFILE GROUP 4;
-- 關鍵:先設為 manual,否則無法刪除/新增
ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT='MANUAL' SCOPE=BOTH;
-- 新增 Online Redo Log
ALTER DATABASE ADD LOGFILE GROUP 5 ('+DATA/orcldg/onlinelog/group_05.log') SIZE 60M;
ALTER DATABASE ADD LOGFILE GROUP 6 ('+DATA/orcldg/onlinelog/group_06.log') SIZE 60M;
ALTER DATABASE ADD LOGFILE THREAD 2 GROUP 7 ('+DATA/orcldg/onlinelog/group_07.log') SIZE 60M;
ALTER DATABASE ADD LOGFILE THREAD 2 GROUP 8 ('+DATA/orcldg/onlinelog/group_08.log') SIZE 60M;
-- 若刪除報錯,可先 CLEAR
ALTER DATABASE CLEAR LOGFILE '+DATA/orcldg/onlinelog/group_2.272.862167353';
-- 刪除舊 Online Redo Log
ALTER DATABASE DROP LOGFILE GROUP 1;
ALTER DATABASE DROP LOGFILE GROUP 2;
ALTER DATABASE DROP LOGFILE GROUP 3;
ALTER DATABASE DROP LOGFILE GROUP 4;
-- 刪除舊 Standby Redo Log
ALTER DATABASE DROP LOGFILE GROUP 5;
ALTER DATABASE DROP LOGFILE GROUP 6;
ALTER DATABASE DROP LOGFILE GROUP 7;
ALTER DATABASE DROP LOGFILE GROUP 8;
ALTER DATABASE DROP LOGFILE GROUP 9;
ALTER DATABASE DROP LOGFILE GROUP 10;
-- 新增新 Standby Redo Log (REUSE 避免檔案已存在報錯)
ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 ('+DATA/orcl/onlinelog/standby_group_05.log') SIZE 60M REUSE;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 ('+DATA/orcl/onlinelog/standby_group_06.log') SIZE 60M REUSE;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 7 ('+DATA/orcl/onlinelog/standby_group_07.log') SIZE 60M REUSE;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 8 ('+DATA/orcl/onlinelog/standby_group_08.log') SIZE 60M REUSE;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 9 ('+DATA/orcl/onlinelog/standby_group_09.log') SIZE 60M REUSE;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 10 ('+DATA/orcl/onlinelog/standby_group_10.log') SIZE 60M REUSE;
-- 啟動 Managed Recovery ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT; -- 恢復自動檔案管理 ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT='AUTO' SCOPE=BOTH;
若遇到檔案路徑轉換錯誤,檢查並修正:
ALTER SYSTEM SET LOG_FILE_NAME_CONVERT='+DATA/orcl/onlinelog,+DATA/orcldg/onlinelog' SCOPE=SPFILE; ALTER SYSTEM SET DB_FILE_NAME_CONVERT='+DATA/orcl/datafile,+DATA/orcldg/datafile' SCOPE=SPFILE;
v$log、v$standby_log 確認 Group 數量與大小REUSE 避免檔案衝突