利用Duplicate重做DataGuard
参考文档<>
ENV:
Oracle9i + Suse9 + DataGuard + 默认的最大性能模式
Primary: 192.168.1.101
standby: 192.168.1.102
Primary 到 standby的 DataGuard出现Gap,且Primary 上的归档已删除,没备份:
SQL> select * from v$archive_gap;
THREAD# LOW_SEQUENCE# HIGH_SEQUENCE#
---------- ------------- --------------
1 18 21
之前的Dataguard是用冷备形式建立的.现在要重建
唯一的解决方法,重做DataGuard,利用Duplicate 来重做
解决过程:
1 在Primary生成全备(Primary)
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/u01/backup/backup_%d_%T_%s_%p';
BACKUP DATABASE
INCLUDE CURRENT CONTROLFILE FOR STANDBY
PLUS ARCHIVELOG;
2 将备份文件传到备端(Primary)
或通过NFS不用手动传,实质一样,在应用的时候传
参考<>
scp oracle@192.168.1.101:/u01/backup/backup_MYDB_20100203_19_1 /u01/backup/
scp oracle@192.168.1.101:/u01/backup/backup_MYDB_20100203_20_1 /u01/backup/
scp oracle@192.168.1.101:/u01/backup/backup_MYDB_20100203_21_1 /u01/backup/
注意:在将备份文件拷贝到Standby上时,存放备份文件的目录必须与Primary备份文件所在的目录结构一样,
这样控制文件才能找到备份文件
3 启动备端实例到Standby形式的nomount状态
先关闭再重启
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
shutdown immediate
startup nomount;
4 在Primary 重新Duplicate 应用备份
rman target / auxiliary sys/sys@standby
RUN
{
# If desired, issue a SET command to terminate recovery at a specified point.
# SET UNTIL SCN 143508;
DUPLICATE TARGET DATABASE FOR STANDBY NOFILENAMECHECK
DORECOVER;
}
oracle@Z814:/opt/oracle/product/9ir2/dbs> rman target / auxiliary sys/sys@standby
Recovery Manager: Release 9.2.0.4.0 - 64bit Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
connected to target database: MYDB (DBID=2621354619)
connected to auxiliary database: mydb (not mounted)
RMAN> RUN
2> {
3> # If desired, issue a SET command to terminate recovery at a specified point.
4> # SET UNTIL SCN 143508;
5> DUPLICATE TARGET DATABASE FOR STANDBY NOFILENAMECHECK
6> DORECOVER;
7> }
............
............
Recovery Manager complete.
顺利完成
5 Duplicate 完成后Standby只处于正常的Mount状态.应打开Recover
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
6 在Standby端查询Gap
SQL> select * from v$archive_gap;
no rows selected
成功解决
7 碰到的问题:
rman target / auxiliary sys/sys@standby
报错:
oracle@Z814:/opt/oracle/product/9ir2/dbs> rman target / auxiliary sys/sys@standby
Recovery Manager: Release 9.2.0.4.0 - 64bit Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
connected to target database: MYDB (DBID=2621354619)
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-12519: TNS:no appropriate service handler found
静态监听器的问题
确保你能在Primary 上 sqlplus "sys/sys@standby as sysdba"可以连通
在我的环境里,因为在192.168.1.102上已有了另一套DataGuard的Standby.已注册了名为LISTENER,端口为1521的静态监听器.
解决方案:注册两个监听器.
更改后的Listener.ora文件.
#$ORACLE_HOME/network/admin/listener.ora
SID_LIST_LISTENER_MYDB =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME =/opt/oracle/product/9ir2)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = mydb)
(ORACLE_HOME =/opt/oracle/product/9ir2)
(SID_NAME = mydb)
)
)
LISTENER_MYDB =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.102)(PORT = 1521))
)
)
)
SID_LIST_LISTENER_DUPDB =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /opt/oracle/product/9ir2)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = dupdb)
(ORACLE_HOME = /opt/oracle/product/9ir2)
(SID_NAME = dupdb)
)
)
LISTENER_DUPDB =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.102)(PORT = 1522))
)
)
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10248702/viewspace-626766/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/10248702/viewspace-626766/