首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle RAC 環境下閃回數據庫實戰:SCN/時間點雙模式、雙節點協調、RESETLOGS 重建

     編輯:Oracle 資料庫相關知識

RAC 環境閃回數據庫比單實例複雜:需**全節點關閉、單節點 Mount、閃回、Read Only 驗證、RESETLOGS 打開、其它節點啟動**。本文記錄 11.2.0.3 RAC 雙節點 zhongwc1/zhongwc2 完整演練日誌,含關鍵命令、輸出解讀、常見報錯應對。

一、環境基線

  • 版本:Oracle 11.2.0.3 64bit + RAC + ASM
  • 實例:zhongwc1 (Node1)、zhongwc2 (Node2)
  • 測試表:t_zhongwc (75,289 行)
  • 閃回基準 SCN:1395475 (對應 2013-01-23 17:14:05)

二、啟用閃回與記錄基準 SCN

SQL> ALTER DATABASE FLASHBACK ON;
Database altered.

SQL> SELECT CURRENT_SCN FROM V$DATABASE;
CURRENT_SCN
-----------
  1395475

SQL> TRUNCATE TABLE t_zhongwc;  -- 模擬誤操作
Table truncated.

三、RAC 閃回標準流程(SCN 模式)

1. 關閉整個集群數據庫

[oracle@zhongwc1 ~]$ srvctl stop database -d zhongwc
# 等待 CRS 資源狀態變為 OFFLINE

2. Node1 獨立啟動到 MOUNT

[oracle@zhongwc1 ~]$ sqlplus / as sysdba
SQL> STARTUP MOUNT
ORACLE instance started.
Database mounted.

3. 執行閃回到指定 SCN

SQL> FLASHBACK DATABASE TO SCN 1395475;
Flashback complete.

4. 唯讀模式驗證數據

SQL> ALTER DATABASE OPEN READ ONLY;
Database altered.

SQL> CONN zwc/zwc
Connected.
SQL> SELECT COUNT(*) FROM t_zhongwc;
  COUNT(*)
----------
   75289  -- 數據已恢復

5. 關閉、RESETLOGS 打開、啟動第二節點

SQL> SHUTDOWN IMMEDIATE
Database closed. Database dismounted. ORACLE instance shut down.

SQL> STARTUP MOUNT
ORACLE instance started.
Database mounted.

SQL> ALTER DATABASE OPEN RESETLOGS;
Database altered.

SQL> !srvctl start instance -d zhongwc -i zhongwc2
# 等待實例啟動

SQL> SELECT INSTANCE_NAME, HOST_NAME, STATUS FROM GV$INSTANCE;
INSTANCE_NAME  HOST_NAME              STATUS
-------------  --------------------   ------
zhongwc1       zhongwc1.oracle.com    OPEN
zhongwc2       zhongwc2.oracle.com    OPEN

四、時間點模式嘗試(報錯演示)

SQL> FLASHBACK DATABASE TO TIMESTAMP TO_TIMESTAMP('2013-01-23 17:14:05','YYYY-MM-DD HH24:MI:SS');
*
ERROR at line 1:
ORA-38757: Database must be mounted and not open to FLASHBACK.

原因:當前實例已 OPEN READ ONLY,閃回要求 MOUNT 狀態。需再次 SHUTDOWN → STARTUP MOUNT 才能執行時間點閃回。

五、關鍵注意事項與避坑

  1. 全節點必須關閉:srvctl stop database 確保無實例持有數據文件鎖,否則閃回報 ORA-38760。
  2. ASM 磁盤組必須 ONLINE:閃回需讀寫 Flashback Log(存放於 FRA/ASM),檢查 V$ASM_DISKGROUP 狀態。
  3. FRA 空間充足:DB_FLASHBACK_RETENTION_TARGET 設置保留分鐘數,FRA 需容納對應量的閃回日志。
  4. RESETLOGS 後備份失效:閃回 + RESETLOGS 會產生新 Incarnation,**必須立即進行 Level 0 全量備份**,舊備份無法直接恢復新 Incarnation。
  5. Data Guard 物理備庫:主庫閃回後,備庫需同步閃回或重建,否則 ORA-1600 日志應用失敗。
  6. SCN vs Timestamp:SCN 精確、無時區歧義,生產首選 SCN;Timestamp 需確認時區一致性(V$DATABASE.TIME_ZONE)。

六、自動化演練腳本框架(Shell + SQL*Plus)

#!/bin/bash
# rac_flashback_drill.sh
TARGET_SCN=1395475
DB_UNIQ_NAME=zhongwc
NODE1=zhongwc1
NODE2=zhongwc2

srvctl stop database -d $DB_UNIQ_NAME
ssh $NODE1 "sqlplus / as sysdba <

RAC 閃回數據庫是「高風險、高價值」操作,**必須在測試環境全流程演練 3 次以上**才能納入生產應急預案。記住:閃回後的 RESETLOGS 將歷史切分為新舊 Incarnation,備份策略必須同步調整。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved