如何重建oracle dataguard
最近太忙,也就无暇每日检查数据库的同布情况,后来才发现主库压根没有同步归档日志到备库,因为备库断电后一直没有开,但问题是主库在10几天前删除过归档日志,惨!为了想节省时间,想去备份捞捞看,结果是备份也没有需要的归档日志。无耐,只好重建。1、登录主库备份控制文件到数据文件所在的目录。
1.1先查询数据文件所在的目录:select name from v$datafile
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/ora/oracle/oradata/tsing/system01.dbf
/ora/oracle/oradata/tsing/undotbs01.dbf
/ora/oracle/oradata/tsing/sysaux01.dbf
/ora/oracle/oradata/tsing/users01.dbf
/ora/oracle/oradata/tsing/mast.dbf
/ora/oracle/oradata/tsing/mas.dbf
6 rows selected.
1.2 备份控制文件到数据文件所在的目录
SQL>>
Database> 2、登录备库删除数据文件
2.1关闭备库实例
SQL> shutdown immediate
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
2.2进入数据文件所在的目录,然后删除
cd /ora/oracle/oradata/tsing/
$ ls
control01.ctlmast.dbf redo03.log stdREDO04.LOGundotbs01.dbf
control02.ctlorapwtsingstdREDO01.LOGsysaux01.dbf users01.dbf
control03.ctlredo01.logstdREDO02.LOGsystem01.dbf
mas.dbf redo02.logstdREDO03.LOGtemp01.dbf
$ rm -f *
3、从主库用SCP命令将数据文件及控制文件传到备库
scp -r /ora/oracle/oradata/tsing/* oracle@TAIXIN-HR1:/ora/oracle/oradata/tsing/
oracle@taixin-hr1's password:
control01.ctl 100% 7088KB 6.9MB/s 00:00
control02.ctl 100% 7088KB 6.9MB/s 00:00
control03.ctl 100% 7088KB 6.9MB/s 00:01
inittsing.ora 100% 1407 1.4KB/s 00:00
mas.dbf 100% 16GB25.5MB/s 10:30
mast.dbf 100%136MB22.7MB/s 00:06
node1.ctl 100% 7088KB 6.9MB/s 00:00
orapwtsing 100% 1536 1.5KB/s 00:00
redo01.log 100% 50MB25.0MB/s 00:02
redo02.log 100% 50MB25.0MB/s 00:02
redo03.log 100% 50MB25.0MB/s 00:02
sqlnet.log 100%668 0.7KB/s 00:00
stdREDO01.LOG 100% 50MB16.7MB/s 00:03
stdREDO02.LOG 100% 50MB50.0MB/s 00:01
stdREDO03.LOG 100% 50MB50.0MB/s 00:01
stdREDO04.LOG 100% 50MB25.0MB/s 00:02
sysaux01.dbf 100%490MB18.9MB/s 00:26
system01.dbf 100%520MB21.7MB/s 00:24
temp01.dbf 100% 20MB20.0MB/s 00:01
tsing1.ctl 100% 6928KB 6.8MB/s 00:01
undotbs01.dbf 100%115MB23.0MB/s 00:05
users01.dbf 100% 5128KB 5.0MB/s 00:00
$
4、重命名刚传到备库的控制文件
4.1先删除目录下原有的三个控制文件
$ ls
control01.ctlmast.dbf redo03.log stdREDO04.LOGundotbs01.dbf
control02.ctlnode1.ctl sqlnet.log sysaux01.dbf users01.dbf
control03.ctlorapwtsingstdREDO01.LOGsystem01.dbf
inittsing.oraredo01.logstdREDO02.LOGtemp01.dbf
mas.dbf redo02.logstdREDO03.LOGtsing1.ctl
$ rm contro*
$ ls
inittsing.oraorapwtsingsqlnet.log stdREDO04.LOGtsing1.ctl
mas.dbf redo01.logstdREDO01.LOGsysaux01.dbf undotbs01.dbf
mast.dbf redo02.logstdREDO02.LOGsystem01.dbf users01.dbf
node1.ctl redo03.logstdREDO03.LOGtemp01.dbf
4.2 将node1.ctl的控制文件重命名成三个控制文件
$ mv node1.ctl control01.ctl
$ cp control01.ctl control02.ctl
$ cp control02.ctl control03.ctl
$ ls
control01.ctlmast.dbf sqlnet.log sysaux01.dbf users01.dbf
control02.ctlorapwtsingstdREDO01.LOGsystem01.dbf
control03.ctlredo01.logstdREDO02.LOGtemp01.dbf
inittsing.oraredo02.logstdREDO03.LOGtsing1.ctl
mas.dbf redo03.logstdREDO04.LOGundotbs01.dbf
5、连接备库,并按如下操作
sqlplus / as sysdba
SQL>startup nomount
SQL>alter database mount standby database;
SQL>alter database recover managed standby database disconnect from session;
6、测试重建是否成功(主库切换日志后查看备库是否应用日志)
在主库上执行
SQL>alter system switch logfile;
在从库上
SQL>select sequence#,applied from v$archived_log;
页:
[1]