前言:之前由于数据库没有监控,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)