V$LOGFILE 查看成員路徑/數量;V$LOG 查看群組狀態 (CURRENT/ACTIVE/INACTIVE/UNUSED)。CREATE DATABASE 時 (MAXLOGFILES/MAXLOGMEMBERS),可透過 ALTER DATABASE BACKUP CONTROLFILE TO TRACE 產生的 Trace 檔查看。Thread 1 cannot allocate new log) → 調大 Redo Log;間隔過久 → 恢復時間過長 (MTTR 失控)。範例:原 3 組 500KB → 新增 3 組 16MB → 切換 → 刪除舊組。
-- 1. 新增大尺寸群組 (雙成員鏡像)
ALTER DATABASE ADD LOGFILE GROUP 4
('/opt/oradata/app/redo04.log', '/ora_bak/oradata2/redolog/redo04.log') SIZE 16M REUSE;
ALTER DATABASE ADD LOGFILE GROUP 5
('/opt/oradata/app/redo05.log', '/ora_bak/oradata2/redolog/redo05.log') SIZE 16M REUSE;
ALTER DATABASE ADD LOGFILE GROUP 6
('/opt/oradata/app/redo06.log', '/ora_bak/oradata2/redolog/redo06.log') SIZE 16M REUSE;
-- 2. 強制切換數次,使舊群組變 INACTIVE/UNUSED
ALTER SYSTEM SWITCH LOGFILE; -- 執行 1-3 次
-- 3. 刪除舊群組
ALTER DATABASE DROP LOGFILE GROUP 1;
ALTER DATABASE DROP LOGFILE GROUP 2;
ALTER DATABASE DROP LOGFILE GROUP 3;
全程資料庫保持 OPEN,業務零中斷。
| 參數 | 說明 | 建議設定 |
|---|---|---|
| LOG_BUFFER | SGA 中 Redo Log Buffer,DML 先寫這裡,滿或 Checkpoint 由 LGWR 刷盤 | ≤ 512KB 或 128KB × CPU 數;查詢 redo buffer allocation retries / redo entries < 1% |
| LOG_CHECKPOINT_INTERVAL | 8i 後指兩 Checkpoint 間 OS 區塊數 (通常 512B) | = Redo Log 檔案大小 (Bytes) / 512 |
| LOG_CHECKPOINT_TIMEOUT | 兩 Checkpoint 間秒數 | 建議停用 (0) 或預設 900;交易量非均勻分布,用 INTERVAL 控制較精準 |
SELECT rbar.name, rbar.value, re.name, re.value,
(rbar.value*100)/re.value || '%' AS "ratio"
FROM v$sysstat rbar, v$sysstat re
WHERE rbar.name = 'redo buffer allocation retries'
AND re.name = 'redo entries';
比率 < 1% 為佳;否則調大 LOG_BUFFER。