前言:之前由于數據庫沒有監控,DG早就出問題了,然而主庫上歸檔早就被清理,沒辦法,只能手動重做DG。
1. 刪庫
該步請根據各自情況刪除
2. rman連接數據庫
報錯如下:
Recovery Manager: Release 11.2.0.3.0 - Production on Thu Jun 29 23:55:03 2017 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. connected to target database: WXDB (DBID=1337835662) RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-00554: initialization of internal recovery manager package failed RMAN-04006: error from auxiliary database: ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
3.查看監聽狀態
[oracle@weixindg2 admin]$ lsnrctl status LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 30-JUN-2017 00:10:00 Copyright (c) 1991, 2011, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=weixindg2)(PORT=1521))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 11.2.0.3.0 - Production Start Date 30-JUN-2017 00:00:18 Uptime 0 days 0 hr. 9 min. 42 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /u01/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora Listener Log File /u01/oracle/diag/tnslsnr/weixindg2/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=weixindg2)(PORT=1521))) Services Summary... Service "wxdg2" has 2 instance(s). Instance "wxdb", status BLOCKED, has 1 handler(s) for this service... Instance "wxdg", status UNKNOWN, has 1 handler(s) for this service... The command completed successfully
4.注冊動態監聽
[oracle@weixindg2 admin]$ cat listener.ora LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = weixindg2)(PORT = 1521)) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = /u01/oracle/product/11.2.0/dbhome_1) (PROGRAM = extproc) ) (SID_DESC = (GLOBAL_DBNAME = wxdg2) (ORACLE_HOME = /u01/oracle/product/11.2.0/dbhome_1) (SID_NAME = wxdb) ) )
5.重啟監聽并查看監聽狀態
[oracle@weixindg2 admin]$ lsnrctl status LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 30-JUN-2017 00:31:41 Copyright (c) 1991, 2011, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=weixindg2)(PORT=1521))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 11.2.0.3.0 - Production Start Date 30-JUN-2017 00:15:09 Uptime 0 days 0 hr. 16 min. 32 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /u01/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora Listener Log File /u01/oracle/diag/tnslsnr/weixindg2/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=weixindg2)(PORT=1521))) Services Summary... Service "PLSExtProc" has 1 instance(s). Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service... Service "wxdg2" has 2 instance(s). Instance "wxdb", status UNKNOWN, has 1 handler(s) for this service... Instance "wxdb", status READY, has 1 handler(s) for this service... The command completed successfully
6. RMAN連接數據庫
[oracle@weixindg2 admin]$ rman target sys/XXXX@WXDB auxiliary sys/XXXX@WXDG2 Recovery Manager: Release 11.2.0.3.0 - Production on Fri Jun 30 00:15:50 2017 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. connected to target database: WXDB (DBID=1337835662) connected to auxiliary database: WXDB (not mounted)
7. 復制數據庫
RMAN> duplicate target database for standby nofilenamecheck from active database; Starting Duplicate Db at 30-JUN-17 using target database control file instead of recovery catalog allocated channel: ORA_AUX_DISK_1 channel ORA_AUX_DISK_1: SID=156 device type=DISK contents of Memory Script: { backup as copy reuse targetfile '/u01/oracle/product/11.2.0/dbhome_1/dbs/orapwwxdb' auxiliary format '/u01/oracle/product/11.2.0/dbhome_1/dbs/orapwwxdb' ; } executing Memory Script Starting backup at 30-JUN-17 allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=1922 device type=DISK Finished backup at 30-JUN-17 contents of Memory Script: { backup as copy current controlfile for standby auxiliary format '/u01/oracle/oradata/wxdb/control01.ctl'; restore clone controlfile to '/u01/oracle/fast_recovery_area/wxdb/control02.ctl' from '/u01/oracle/oradata/wxdb/control01.ctl'; } executing Memory Script Starting backup at 30-JUN-17 .... sql statement: alter system archive log current contents of Memory Script: { switch clone datafile all; } executing Memory Script datafile 1 switched to datafile copy input datafile copy RECID=1 STAMP=947988036 file name=/u01/oracle/oradata/wxdb/system01.dbf datafile 2 switched to datafile copy input datafile copy RECID=2 STAMP=947988036 file name=/u01/oracle/oradata/wxdb/sysaux01.dbf datafile 3 switched to datafile copy input datafile copy RECID=3 STAMP=947988036 file name=/u01/oracle/oradata/wxdb/undotbs01.dbf datafile 4 switched to datafile copy input datafile copy RECID=4 STAMP=947988036 file name=/u01/oracle/oradata/wxdb/users01.dbf datafile 5 switched to datafile copy input datafile copy RECID=5 STAMP=947988036 file name=/u01/oracle/oradata/wxdb/users02.dbf datafile 6 switched to datafile copy input datafile copy RECID=6 STAMP=947988036 file name=/data/u01/oracle/oradata/wxdb/users03.dbf Finished Duplicate Db at 30-JUN-17
8. 查看備庫狀態
SQL> select open_mode,database_role,db_unique_name from v$database; OPEN_MODE DATABASE_ROLE DB_UNIQUE_NAME -------------------- ---------------------------------------------- MOUNTED PHYSICAL STANDBY wxdg2
9. 備庫打開
SQL> alter database open;
10. 啟用實時應用
SQL> alter database recover managed standby database using current logfile disconnect from session;
11.查看狀態
SQL> select open_mode,database_role,db_unique_name from v$database;
OPEN_MODE DATABASE_ROLE DB_UNIQUE_NAME
-------------------- ---------------- ------------------------------
READ ONLY WITH APPLY PHYSICAL STANDBY wxdg2
12. 查看兩邊歸檔應用情況
主庫:
select sequence#,standby_dest,archived,applied,status from v$archived_log;
SEQUENCE# STA ARC APPLIED S
---------- --- --- --------- -
43887 NO YES NO A
43888 NO YES NO A
43888 YES YES YES A
43888 YES YES YES A
43889 NO YES NO A
43889 YES YES YES A
43889 YES YES YES A
43890 YES YES YES A
43890 YES YES YES A
43890 NO YES NO A
43891 YES YES NO A
SEQUENCE# STA ARC APPLIED S
---------- --- --- --------- -
43891 YES YES NO A
43891 NO YES NO A
備庫:
SQL> select sequence#,standby_dest,archived,applied,status from v$archived_log;
SEQUENCE# STA ARC APPLIED S
---------- --- --- --------- -
43872 NO YES YES A
43871 NO YES YES A
43870 NO YES YES A
43873 NO YES YES A
43874 NO YES YES A
43875 NO YES YES A
43876 NO YES YES A
43877 NO YES YES A
43880 NO YES YES A
43879 NO YES YES A
43878 NO YES YES A
SEQUENCE# STA ARC APPLIED S
---------- --- --- --------- -
43881 NO YES YES A
43882 NO YES YES A
43883 NO YES YES A
43884 NO YES YES A
43885 NO YES YES A
43886 NO YES YES A
43887 NO YES YES A
43888 NO YES YES A
43889 NO YES YES A
43890 NO YES YES A
43891 NO YES IN-MEMORY A
22 rows selected.
13. 查看GAP
SQL> select * from v$archive_gap;
no rows selected
14. DML測試
主庫:
SQL> create table t(id int);
Table created.
備庫:
SQL> desc t;
Name Null? Type
----------------------------------------- -------- ----------------------------
ID NUMBER(38)