DG中模擬備庫斷檔並恢復過程
斷檔情況,主要是針對備庫來說,使用歸檔日誌過程中,中間有個日誌檔案損壞了,或者丟失了,
即使開啟著使用日誌功能,也會導致了往後所有的日誌檔案都不能使用,也即導致了主庫與備庫不同步,
這樣的結果就是資料同步備庫功能喪失了。不同版本的oracle軟體,對斷檔的恢復功能不一樣。有些版本
在恢復主庫中的日誌之後,需要手動註冊並使用日誌,有些版本自動恢復使用日子,不需要手動註冊。
斷檔的舉例:
SQL> select SEQUENCE#,APPLIED from v$archived_log;
... ...
SEQUENCE# APPLIED
---------- ---------
105 YES
106 YES
102 YES
103 YES
107 YES
104 YES
108 YES
108 YES
(109 NO) #例如:109號日誌檔案損壞了或者丟失了
SEQUENCE# APPLIED
---------- ---------
110 NO
111 NO
112 NO #這種情況,109號日誌檔案之後的110、111與112號日誌檔案就不能被使用,就是斷檔的狀況
--恢復斷檔日誌檔案的問題:
--模擬生產環境:
--主庫的歸檔日誌檔案:
SQL> select SEQUENCE#,APPLIED from v$archived_log;
SEQUENCE# APPLIED
---------- ---------
97 YES
96 YES
98 YES
99 YES
100 YES
... ...
SEQUENCE# APPLIED
---------- ---------
118 NO
119 YES
119 NO
120 YES
120 NO
121 NO
121 YES
122 NO
122 YES
42 rows selected.
--備庫使用的日誌檔案:
SQL> select SEQUENCE#,APPLIED from v$archived_log;
SEQUENCE# APPLIED
---------- ---------
67 YES
68 YES
69 YES
70 YES
... ...
115 YES
116 YES
117 YES
118 YES
119 YES
120 YES
SEQUENCE# APPLIED
---------- ---------
121 YES
122 YES
68 rows selected.
--檢視主庫suxing使用者下的mytable表資料:
SQL> select * from MYTABLE;
ID NAME TEL CREATED
---------- --------------- ---------- ---------
12345 Suxing su 1.2365E+10
12346 Sky 1.3727E+10 16-OCT-16
--檢視備庫suxing使用者下的mytable表資料:
SQL> select * from MYTABLE;
ID NAME TEL CREATED
---------- --------------- ---------- ---------
12345 Suxing su 1.2365E+10
12346 Sky 1.3727E+10 16-OCT-16
--在主庫往MYTABLE插入一條資料,提交併切換日誌組:
SQL> insert into mytable values(12347,'prod',15824678923,'');
1 row created.
SQL> commit;
Commit complete.
--再插入一條資料,提交併切換日誌:
SQL> insert into mytable values(12348,'enmo',15924678923,'');
1 row created.
SQL> commit;
Commit complete.
SQL> show user
USER is "SYS"
SQL>
SQL> insert into suxing.mytable values(12349,'ppenmo',13924678923,sysdate);
1 row created.
SQL> insert into suxing.mytable values(12350,'qqenmo',13924678921,sysdate);
1 row created.
SQL> commit;
Commit complete.
--主庫檢視mytable的資料:
SQL> select * from suxing.mytable;
ID NAME TEL CREATED
---------- --------------- ---------- ---------
12349 ppenmo 1.3925E+10 20-OCT-16
12350 qqenmo 1.3925E+10 20-OCT-16
12345 Suxing su 1.2365E+10
12346 Sky 1.3727E+10 16-OCT-16
12347 prod 1.5825E+10
12348 enmo 1.5925E+10
6 rows selected.
--此時檢視備庫只用的日誌檔案:
SQL> select SEQUENCE#,APPLIED from v$archived_log;
... ...
SEQUENCE# APPLIED
---------- ---------
121 YES
122 YES
123 NO
124 YES
125 YES
123 YES
126 NO
127 NO
128 NO
75 rows selected.
--此時檢視備庫mytable表中的資料:
SQL> select * from suxing.mytable;
ID NAME TEL CREATED
---------- --------------- ---------- ---------
12345 Suxing su 1.2365E+10
12346 Sky 1.3727E+10 16-OCT-16
12347 prod 1.5825E+10
12348 enmo 1.5925E+10
--主庫中有新歸檔的日誌檔案:126、127與128號歸檔日誌檔案:
[oracle@oracle ENMO]$ ls
1_100_924523013.arc 1_106_924523013.arc 1_112_924523013.arc 1_118_924523013.arc 1_124_924523013.arc 1_2_925677913.arc
1_101_924523013.arc 1_107_924523013.arc 1_113_924523013.arc 1_119_924523013.arc 1_125_924523013.arc 1_3_925677913.arc
1_102_924523013.arc 1_108_924523013.arc 1_114_924523013.arc 1_120_924523013.arc 1_126_924523013.arc 1_96_924523013.arc
1_103_924523013.arc 1_109_924523013.arc 1_115_924523013.arc 1_121_924523013.arc 1_127_924523013.arc 1_97_924523013.arc
1_104_924523013.arc 1_110_924523013.arc 1_116_924523013.arc 1_122_924523013.arc 1_128_924523013.arc 1_98_924523013.arc
1_105_924523013.arc 1_111_924523013.arc 1_117_924523013.arc 1_123_924523013.arc 1_1_925677913.arc 1_99_924523013.arc
[oracle@oracle ENMO]$
--模擬斷檔情況,備庫丟失123號歸檔日誌檔案1_126_924523013.arc:
[oracle@enmo PROD]$ mv 1_126_924523013.arc /home/oracle/arch/PROD/bk/1_126_924523013.arc
[oracle@enmo PROD]$ ls
1_100_924523013.arc 1_108_924523013.arc 1_116_924523013.arc 1_124_924523013.arc 1_96_924523013.arc
1_101_924523013.arc 1_109_924523013.arc 1_117_924523013.arc 1_125_924523013.arc 1_97_924523013.arc
1_102_924523013.arc 1_110_924523013.arc 1_118_924523013.arc 1_127_924523013.arc 1_98_924523013.arc
1_103_924523013.arc 1_111_924523013.arc 1_119_924523013.arc 1_128_924523013.arc 1_99_924523013.arc
1_104_924523013.arc 1_112_924523013.arc 1_120_924523013.arc 1_92_924523013.arc bk
1_105_924523013.arc 1_113_924523013.arc 1_121_924523013.arc 1_93_924523013.arc
1_106_924523013.arc 1_114_924523013.arc 1_122_924523013.arc 1_94_924523013.arc
1_107_924523013.arc 1_115_924523013.arc 1_123_924523013.arc 1_95_924523013.arc
[oracle@enmo PROD]$
可看到,126號日誌檔案丟失了。
--備庫嘗試開啟使用日誌檔案並檢視是否使用127與128號歸檔日誌:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
Database altered.
SQL> select SEQUENCE#,APPLIED from v$archived_log;
SEQUENCE# APPLIED
---------- ---------
67 YES
68 YES
... ...
SEQUENCE# APPLIED
---------- ---------
121 YES
122 YES
123 NO
124 YES
125 YES
123 YES
126 NO
127 NO
128 NO
75 rows selected.
發現怎麼使用日誌,都不能用,因為126號日誌檔案丟失了。
--關閉日誌使用:
SQL> alter database recover managed standby database cancel;
Database altered.
--從主庫找回對應的日誌檔案複製到備庫,然後手動註冊使用日誌:
[oracle@enmo bk]$ cp 1_126_924523013.arc /home/oracle/arch/PROD/1_126_924523013.arc
[oracle@enmo bk]$ cd ..
[oracle@enmo PROD]$ ls
1_100_924523013.arc 1_108_924523013.arc 1_116_924523013.arc 1_124_924523013.arc 1_93_924523013.arc
1_101_924523013.arc 1_109_924523013.arc 1_117_924523013.arc 1_125_924523013.arc 1_94_924523013.arc
1_102_924523013.arc 1_110_924523013.arc 1_118_924523013.arc 1_126_924523013.arc 1_95_924523013.arc
1_103_924523013.arc 1_111_924523013.arc 1_119_924523013.arc 1_127_924523013.arc 1_96_924523013.arc
1_104_924523013.arc 1_112_924523013.arc 1_120_924523013.arc 1_128_924523013.arc 1_97_924523013.arc
1_105_924523013.arc 1_113_924523013.arc 1_121_924523013.arc 1_129_924523013.arc 1_98_924523013.arc
1_106_924523013.arc 1_114_924523013.arc 1_122_924523013.arc 1_130_924523013.arc 1_99_924523013.arc
1_107_924523013.arc 1_115_924523013.arc 1_123_924523013.arc 1_92_924523013.arc bk
此時已經找回126號日誌檔案。
--手動註冊使用日誌:
SQL> alter database register physical logfile '/home/oracle/arch/PROD/1_126_924523013.arc';
Database altered.
註冊成功。
--恢復使用日誌並檢視使用狀況:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
Database altered.
SQL> select SEQUENCE#,APPLIED from v$archived_log;
... ...
SEQUENCE# APPLIED
---------- ---------
121 YES
122 YES
123 NO
124 YES
125 YES
123 YES
126 NO
127 YES
128 YES
129 YES
130 IN-MEMORY
SEQUENCE# APPLIED
---------- ---------
126 YES
可以看到,恢復使用126日誌之後,126號日誌後面的日誌檔案自動使用到。
--使用日誌檔案之後,備庫檢視mytable中的資料是否與主庫保持一致性:
SQL> select * from suxing.mytable;
ID NAME TEL CREATED
---------- --------------- ---------- ---------
12349 ppenmo 1.3925E+10 20-OCT-16
12350 qqenmo 1.3925E+10 20-OCT-16
12345 Suxing su 1.2365E+10
12346 Sky 1.3727E+10 16-OCT-16
12347 prod 1.5825E+10
12348 enmo 1.5925E+10
6 rows selected.
可以看到,備庫恢復到與主庫一致的狀態。
即使開啟著使用日誌功能,也會導致了往後所有的日誌檔案都不能使用,也即導致了主庫與備庫不同步,
這樣的結果就是資料同步備庫功能喪失了。不同版本的oracle軟體,對斷檔的恢復功能不一樣。有些版本
在恢復主庫中的日誌之後,需要手動註冊並使用日誌,有些版本自動恢復使用日子,不需要手動註冊。
斷檔的舉例:
SQL> select SEQUENCE#,APPLIED from v$archived_log;
... ...
SEQUENCE# APPLIED
---------- ---------
105 YES
106 YES
102 YES
103 YES
107 YES
104 YES
108 YES
108 YES
(109 NO) #例如:109號日誌檔案損壞了或者丟失了
SEQUENCE# APPLIED
---------- ---------
110 NO
111 NO
112 NO #這種情況,109號日誌檔案之後的110、111與112號日誌檔案就不能被使用,就是斷檔的狀況
--恢復斷檔日誌檔案的問題:
--模擬生產環境:
--主庫的歸檔日誌檔案:
SQL> select SEQUENCE#,APPLIED from v$archived_log;
SEQUENCE# APPLIED
---------- ---------
97 YES
96 YES
98 YES
99 YES
100 YES
... ...
SEQUENCE# APPLIED
---------- ---------
118 NO
119 YES
119 NO
120 YES
120 NO
121 NO
121 YES
122 NO
122 YES
42 rows selected.
--備庫使用的日誌檔案:
SQL> select SEQUENCE#,APPLIED from v$archived_log;
SEQUENCE# APPLIED
---------- ---------
67 YES
68 YES
69 YES
70 YES
... ...
115 YES
116 YES
117 YES
118 YES
119 YES
120 YES
SEQUENCE# APPLIED
---------- ---------
121 YES
122 YES
68 rows selected.
--檢視主庫suxing使用者下的mytable表資料:
SQL> select * from MYTABLE;
ID NAME TEL CREATED
---------- --------------- ---------- ---------
12345 Suxing su 1.2365E+10
12346 Sky 1.3727E+10 16-OCT-16
--檢視備庫suxing使用者下的mytable表資料:
SQL> select * from MYTABLE;
ID NAME TEL CREATED
---------- --------------- ---------- ---------
12345 Suxing su 1.2365E+10
12346 Sky 1.3727E+10 16-OCT-16
--在主庫往MYTABLE插入一條資料,提交併切換日誌組:
SQL> insert into mytable values(12347,'prod',15824678923,'');
1 row created.
SQL> commit;
Commit complete.
--再插入一條資料,提交併切換日誌:
SQL> insert into mytable values(12348,'enmo',15924678923,'');
1 row created.
SQL> commit;
Commit complete.
SQL> show user
USER is "SYS"
SQL>
SQL> insert into suxing.mytable values(12349,'ppenmo',13924678923,sysdate);
1 row created.
SQL> insert into suxing.mytable values(12350,'qqenmo',13924678921,sysdate);
1 row created.
SQL> commit;
Commit complete.
--主庫檢視mytable的資料:
SQL> select * from suxing.mytable;
ID NAME TEL CREATED
---------- --------------- ---------- ---------
12349 ppenmo 1.3925E+10 20-OCT-16
12350 qqenmo 1.3925E+10 20-OCT-16
12345 Suxing su 1.2365E+10
12346 Sky 1.3727E+10 16-OCT-16
12347 prod 1.5825E+10
12348 enmo 1.5925E+10
6 rows selected.
--此時檢視備庫只用的日誌檔案:
SQL> select SEQUENCE#,APPLIED from v$archived_log;
... ...
SEQUENCE# APPLIED
---------- ---------
121 YES
122 YES
123 NO
124 YES
125 YES
123 YES
126 NO
127 NO
128 NO
75 rows selected.
--此時檢視備庫mytable表中的資料:
SQL> select * from suxing.mytable;
ID NAME TEL CREATED
---------- --------------- ---------- ---------
12345 Suxing su 1.2365E+10
12346 Sky 1.3727E+10 16-OCT-16
12347 prod 1.5825E+10
12348 enmo 1.5925E+10
--主庫中有新歸檔的日誌檔案:126、127與128號歸檔日誌檔案:
[oracle@oracle ENMO]$ ls
1_100_924523013.arc 1_106_924523013.arc 1_112_924523013.arc 1_118_924523013.arc 1_124_924523013.arc 1_2_925677913.arc
1_101_924523013.arc 1_107_924523013.arc 1_113_924523013.arc 1_119_924523013.arc 1_125_924523013.arc 1_3_925677913.arc
1_102_924523013.arc 1_108_924523013.arc 1_114_924523013.arc 1_120_924523013.arc 1_126_924523013.arc 1_96_924523013.arc
1_103_924523013.arc 1_109_924523013.arc 1_115_924523013.arc 1_121_924523013.arc 1_127_924523013.arc 1_97_924523013.arc
1_104_924523013.arc 1_110_924523013.arc 1_116_924523013.arc 1_122_924523013.arc 1_128_924523013.arc 1_98_924523013.arc
1_105_924523013.arc 1_111_924523013.arc 1_117_924523013.arc 1_123_924523013.arc 1_1_925677913.arc 1_99_924523013.arc
[oracle@oracle ENMO]$
--模擬斷檔情況,備庫丟失123號歸檔日誌檔案1_126_924523013.arc:
[oracle@enmo PROD]$ mv 1_126_924523013.arc /home/oracle/arch/PROD/bk/1_126_924523013.arc
[oracle@enmo PROD]$ ls
1_100_924523013.arc 1_108_924523013.arc 1_116_924523013.arc 1_124_924523013.arc 1_96_924523013.arc
1_101_924523013.arc 1_109_924523013.arc 1_117_924523013.arc 1_125_924523013.arc 1_97_924523013.arc
1_102_924523013.arc 1_110_924523013.arc 1_118_924523013.arc 1_127_924523013.arc 1_98_924523013.arc
1_103_924523013.arc 1_111_924523013.arc 1_119_924523013.arc 1_128_924523013.arc 1_99_924523013.arc
1_104_924523013.arc 1_112_924523013.arc 1_120_924523013.arc 1_92_924523013.arc bk
1_105_924523013.arc 1_113_924523013.arc 1_121_924523013.arc 1_93_924523013.arc
1_106_924523013.arc 1_114_924523013.arc 1_122_924523013.arc 1_94_924523013.arc
1_107_924523013.arc 1_115_924523013.arc 1_123_924523013.arc 1_95_924523013.arc
[oracle@enmo PROD]$
可看到,126號日誌檔案丟失了。
--備庫嘗試開啟使用日誌檔案並檢視是否使用127與128號歸檔日誌:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
Database altered.
SQL> select SEQUENCE#,APPLIED from v$archived_log;
SEQUENCE# APPLIED
---------- ---------
67 YES
68 YES
... ...
SEQUENCE# APPLIED
---------- ---------
121 YES
122 YES
123 NO
124 YES
125 YES
123 YES
126 NO
127 NO
128 NO
75 rows selected.
發現怎麼使用日誌,都不能用,因為126號日誌檔案丟失了。
--關閉日誌使用:
SQL> alter database recover managed standby database cancel;
Database altered.
--從主庫找回對應的日誌檔案複製到備庫,然後手動註冊使用日誌:
[oracle@enmo bk]$ cp 1_126_924523013.arc /home/oracle/arch/PROD/1_126_924523013.arc
[oracle@enmo bk]$ cd ..
[oracle@enmo PROD]$ ls
1_100_924523013.arc 1_108_924523013.arc 1_116_924523013.arc 1_124_924523013.arc 1_93_924523013.arc
1_101_924523013.arc 1_109_924523013.arc 1_117_924523013.arc 1_125_924523013.arc 1_94_924523013.arc
1_102_924523013.arc 1_110_924523013.arc 1_118_924523013.arc 1_126_924523013.arc 1_95_924523013.arc
1_103_924523013.arc 1_111_924523013.arc 1_119_924523013.arc 1_127_924523013.arc 1_96_924523013.arc
1_104_924523013.arc 1_112_924523013.arc 1_120_924523013.arc 1_128_924523013.arc 1_97_924523013.arc
1_105_924523013.arc 1_113_924523013.arc 1_121_924523013.arc 1_129_924523013.arc 1_98_924523013.arc
1_106_924523013.arc 1_114_924523013.arc 1_122_924523013.arc 1_130_924523013.arc 1_99_924523013.arc
1_107_924523013.arc 1_115_924523013.arc 1_123_924523013.arc 1_92_924523013.arc bk
此時已經找回126號日誌檔案。
--手動註冊使用日誌:
SQL> alter database register physical logfile '/home/oracle/arch/PROD/1_126_924523013.arc';
Database altered.
註冊成功。
--恢復使用日誌並檢視使用狀況:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
Database altered.
SQL> select SEQUENCE#,APPLIED from v$archived_log;
... ...
SEQUENCE# APPLIED
---------- ---------
121 YES
122 YES
123 NO
124 YES
125 YES
123 YES
126 NO
127 YES
128 YES
129 YES
130 IN-MEMORY
SEQUENCE# APPLIED
---------- ---------
126 YES
可以看到,恢復使用126日誌之後,126號日誌後面的日誌檔案自動使用到。
--使用日誌檔案之後,備庫檢視mytable中的資料是否與主庫保持一致性:
SQL> select * from suxing.mytable;
ID NAME TEL CREATED
---------- --------------- ---------- ---------
12349 ppenmo 1.3925E+10 20-OCT-16
12350 qqenmo 1.3925E+10 20-OCT-16
12345 Suxing su 1.2365E+10
12346 Sky 1.3727E+10 16-OCT-16
12347 prod 1.5825E+10
12348 enmo 1.5925E+10
6 rows selected.
可以看到,備庫恢復到與主庫一致的狀態。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31392094/viewspace-2126858/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- DG歸檔日誌斷檔時間過長如何處理(DG全庫恢復)
- 【DG】備庫斷檔問題
- ORACLE DG從庫 Rman備份恢復Oracle
- 一次無備份、非歸檔資料庫斷電恢復的全過程資料庫
- 【DATAGUARD】手工恢復備庫日誌中斷
- 一次無備份、非歸檔資料庫斷電恢復的全過程 [轉]資料庫
- 【資料庫資料恢復】透過恢復NDF檔案修復資料庫的資料恢復過程資料庫資料恢復
- Oracle DG從庫 Rman備份恢復測試Oracle
- 資料庫恢復過程資料庫
- dg丟失歸檔,使用rman增量備份恢復
- 利用增量備份恢復gap歸檔丟失DG
- vsan儲存資料恢復過程—虛擬機器故障恢復過程資料恢復虛擬機
- DUL恢復資料庫過程資料庫
- 只存在RMAN備份片的資料庫恢復過程資料庫
- 歸檔模式下資料庫全恢復的過程模式資料庫
- ORACLE中採用rman備份異機恢復資料庫詳細過程Oracle資料庫
- 【原創】模擬控制檔案丟失的資料庫恢復資料庫
- 在DG備庫備份資料庫並恢復到一個主機上,報錯RMAN-06820資料庫
- 模擬控制檔案丟失進行恢復。
- 運用incremental backup(增量備份)恢復歸檔GAP的DGREM
- DG歸檔日誌缺失恢復
- trace檔案備份控制檔案並執行恢復
- 【資料庫資料恢復】Sql Server資料庫檔案丟失的資料恢復過程資料庫資料恢復SQLServer
- MySQL恢復過程MySql
- 利用增量備份恢復因歸檔丟失造成的DG gap
- 直接透過備份恢復資料庫資料庫
- 備庫跳歸檔恢復的有趣案例
- 【備份恢復】從備份恢復資料庫資料庫
- 備份與恢復--從備份的歸檔日誌中恢復資料
- 用物理備庫的檔案來恢復主庫
- 一次DG故障診斷過程分析
- 11g RAC庫恢復過程小記
- 一次Oracle資料庫恢復過程Oracle資料庫
- Oracle資料庫控制檔案在備份恢復中的作用Oracle資料庫
- oracle dg 歸檔日誌恢復情況Oracle
- 備份與恢復--利用備份的控制檔案恢復
- OracleDG備庫恢復–gapOracle
- 備份與恢復(Parameter 檔案恢復篇)