当前位置:  数据库>oracle

如何重建Oracle DataGuard

    来源: 互联网  发布时间:2017-05-30

    本文导语: 无暇每日检查Oracle数据库的同布情况,后来才发现主库压根没有同步归档日志到备库,因为备库断电后一直没有开,但问题是主库在10几天前删除过归档日志,惨!为了想节省时间,想去备份捞捞看,结果是备份也没有需要的归...

无暇每日检查Oracle数据库的同布情况,后来才发现主库压根没有同步归档日志到备库,因为备库断电后一直没有开,但问题是主库在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> alter database create standby controlfile as '/ora/oracle/oradata/tsing/node1.ctl';
Database altered.


2、登录备库删除数据文件
2.1关闭备库实例
SQL> shutdown immediate
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.

2.2进入数据文件所在的目录,然后删除
cd /ora/oracle/oradata/tsing/
[oracle@TAIXIN-HR1 tsing]$ ls
control01.ctl  mast.dbf    redo03.log    stdREDO04.LOG  undotbs01.dbf
control02.ctl  orapwtsing  stdREDO01.LOG  sysaux01.dbf  users01.dbf
control03.ctl  redo01.log  stdREDO02.LOG  system01.dbf
mas.dbf        redo02.log  stdREDO03.LOG  temp01.dbf
[oracle@TAIXIN-HR1 tsing]$ 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%  16GB  25.5MB/s  10:30
mast.dbf                                      100%  136MB  22.7MB/s  00:06
node1.ctl                                    100% 7088KB  6.9MB/s  00:00
orapwtsing                                    100% 1536    1.5KB/s  00:00
redo01.log                                    100%  50MB  25.0MB/s  00:02
redo02.log                                    100%  50MB  25.0MB/s  00:02
redo03.log                                    100%  50MB  25.0MB/s  00:02
sqlnet.log                                    100%  668    0.7KB/s  00:00
stdREDO01.LOG                                100%  50MB  16.7MB/s  00:03
stdREDO02.LOG                                100%  50MB  50.0MB/s  00:01
stdREDO03.LOG                                100%  50MB  50.0MB/s  00:01
stdREDO04.LOG                                100%  50MB  25.0MB/s  00:02
sysaux01.dbf                                  100%  490MB  18.9MB/s  00:26
system01.dbf                                  100%  520MB  21.7MB/s  00:24
temp01.dbf                                    100%  20MB  20.0MB/s  00:01
tsing1.ctl                                    100% 6928KB  6.8MB/s  00:01
undotbs01.dbf                                100%  115MB  23.0MB/s  00:05
users01.dbf                                  100% 5128KB  5.0MB/s  00:00
[oracle@TAIXIN-HR tsing]$

4、重命名刚传到备库的控制文件
4.1先删除目录下原有的三个控制文件
[oracle@TAIXIN-HR1 tsing]$ ls
control01.ctl  mast.dbf    redo03.log    stdREDO04.LOG  undotbs01.dbf
control02.ctl  node1.ctl  sqlnet.log    sysaux01.dbf  users01.dbf
control03.ctl  orapwtsing  stdREDO01.LOG  system01.dbf
inittsing.ora  redo01.log  stdREDO02.LOG  temp01.dbf
mas.dbf        redo02.log  stdREDO03.LOG  tsing1.ctl
[oracle@TAIXIN-HR1 tsing]$ rm contro*
[oracle@TAIXIN-HR1 tsing]$ ls
inittsing.ora  orapwtsing  sqlnet.log    stdREDO04.LOG  tsing1.ctl
mas.dbf        redo01.log  stdREDO01.LOG  sysaux01.dbf  undotbs01.dbf
mast.dbf      redo02.log  stdREDO02.LOG  system01.dbf  users01.dbf
node1.ctl      redo03.log  stdREDO03.LOG  temp01.dbf


4.2 将node1.ctl的控制文件重命名成三个控制文件
[oracle@TAIXIN-HR1 tsing]$ mv node1.ctl control01.ctl
[oracle@TAIXIN-HR1 tsing]$ cp control01.ctl control02.ctl
[oracle@TAIXIN-HR1 tsing]$ cp control02.ctl control03.ctl
[oracle@TAIXIN-HR1 tsing]$ ls
control01.ctl  mast.dbf    sqlnet.log    sysaux01.dbf  users01.dbf
control02.ctl  orapwtsing  stdREDO01.LOG  system01.dbf
control03.ctl  redo01.log  stdREDO02.LOG  temp01.dbf
inittsing.ora  redo02.log  stdREDO03.LOG  tsing1.ctl
mas.dbf        redo03.log  stdREDO04.LOG  undotbs01.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;

推荐阅读:

使用RMAN的Duplicate功能创建物理DataGuard

Oracle基础教程之通过RMAN复制数据库

RMAN备份策略制定参考内容

RMAN备份学习笔记

Oracle数据库备份加密 RMAN加密

通过RMAN备份duplicate创建DataGuard


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 如何重建/dev/cdrom 这个设备?
  • 软链接不能修改?只能删除,然后重建?
  • Sql Server 删除主键与重建主键的例子
  • make如果没有makefile文件将如何重建?
  • 红旗+winxp,winxp重装,然后红旗重建引导时说我原来的swap分区未格式化,然后就不让我建grub了,怎么弄呢?
  • 修改内核代码问题:如何编译修改的单个文件而不用重建整个内核?
  • SQL SEVER数据库重建索引的方法
  • 如何对SQL Server 重建索引
  • Android开发 旋转屏幕导致Activity重建解决方法
  • 提高SQL Server性能-重建索引
  • MySQ索引操作命令总结(创建、重建、查询和删除索引命令详解)
  • MSSQL自动重建出现碎片的索引的方法分享


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,