1. 程式人生 > >rman恢復的方式搭建dataguard後redo log 的處理

rman恢復的方式搭建dataguard後redo log 的處理

轉載:http://www.dbdream.org/?p=548

搭建DATA GUARD,利用RMAN備份恢復備庫時,由於RMAN不會備份REDO檔案,還原後的備庫缺少REDO日誌檔案,對於用歸檔日誌同步資料的備庫,影響不是很大,依然可以應用日誌同步主庫的資料變更,但是如果主/備庫切換的話,就不行了,對於這樣控制檔案裡記錄了REDO的資訊,但是在儲存上卻沒有對應的檔案的備庫,此時刪除控制檔案中的REDO資訊是不允許的。

SQL> alter database drop logfile group 1;
alter database drop logfile group 1
*
ERROR at line 1:
ORA-01156: recovery or flashback in progress may need access to files

那該如何解決這個問題呢,也很簡單,不讓刪這些沒有檔案的REDO資訊,還是讓建的,那麼就先在主庫和備庫都建3組新的REDO日誌。

SQL> alter database add logfile group 4 '+DATA/fhacdb/redo04.log' size 1024M;
Database altered.
SQL> alter database add logfile group 5 '+DATA/fhacdb/redo05.log' size 1024M;
Database altered.
SQL> alter database add logfile group 6 '+DATA/fhacdb/redo06.log' size 1024M;
Database altered.

現在主庫和備庫的控制檔案記錄的REDO日誌資訊如下:
主庫:

SQL> select GROUP#,SEQUENCE#,STATUS,ARCHIVED from v$log;
    GROUP#  SEQUENCE# STATUS           ARC
---------- ---------- ---------------- ---
         1      17476 ACTIVE           YES
         2      17474 INACTIVE         YES
         3      17475 INACTIVE         YES
         4      17477 ACTIVE           YES
         5      17478 ACTIVE           YES
         6      17479 CURRENT          NO

備庫:

SQL> select GROUP#,SEQUENCE#,STATUS,ARCHIVED from v$log;
      GROUP#  SEQUENCE# STATUS           ARC
---------- ---------- ---------------- ---
         1      17476 CLEARING         YES
         2      17474 CLEARING         YES
         3      17475 CLEARING         YES
         4      17477 CLEARING         YES
         5      17478 CLEARING         YES
         6      17479 CURRENT          YES

備庫不讓刪REDO日誌,不代表主庫也不讓刪,切換主庫日誌,當STATUS狀態為INACTIVE時,刪掉前3組REDO日誌。

SQL> alter database drop logfile group 1;
Database altered.
SQL> alter database drop logfile group 2;
Database altered.
SQL> alter database drop logfile group 3;
Database altered.

此時備庫還是那6組日誌資訊,包括前3組沒有檔案的日誌資訊和後建立的3組正確的REDO日誌,而主庫現在只有3組後建立的REDO資訊,這樣就好辦啦,主庫重建備庫STANDBY控制檔案,發給備庫,備庫只要應用這個控制檔案就沒有前3組錯誤的REDO資訊啦。

SQL> select GROUP#,SEQUENCE#,STATUS,ARCHIVED from v$log;
      GROUP#  SEQUENCE# STATUS           ARC
---------- ---------- ---------------- ---
         4      17477 CLEARING         YES
         5      17478 CLEARING         YES
         6      17479 CURRENT          YES