基于san恢复dg

转载一下关于这个问题麦老师的一个实验:http://blog.itpub.net/26736162/viewspace-1780863/

也可以参考上面这个文章

背景:一台长时间没用过的dg,是单机的。 由于以前做过网络变迁,没有及时配置,导致归档缺失很多。

参考方案:https://blog.csdn.net/aini393994948/article/details/80143214

下面是解决方案,记下来,以便遗忘。

1.在备库关闭日志应用

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

2.确定最小scn号

dg:select file#,checkpoint_change# from v$datafile order by checkpoint_change#;

当时我查出来是 1.0879E+13 这个格式,需要把它写成数字 10879000000000

3.创建增量备份

backup format '/home/oracle/backup/sdb_incre_%U.bkp' incremental from scn 917051 database;

backup format '/home/oracle/backup/sdb_%U.ctl' current controlfile for standby;

这里找一个空闲的目录即可。当然了,要有权限。

4.把以上备份的文件传输至备库。

5.手动注册备份文件

rman target /

catalog start with '/home/oracle/backup';

6.恢复备库控制文件。

rman target / 

RMAN> startup force nomount;       ----这一步比较关键,我当时没看清楚,第一遍没执行这个,第二遍sqlplus 进去执行的这个,好像也行。

RMAN> restore standby controlfile from '/home/oracle/backup/sdb_09stjtsc_1_1.ctl';

7.恢复数据库

RMAN> alter database mount; 

RMAN> recover database noredo;             -----recover database noredo     这一步也很关键,noredo。

8.打开数据库,并开启日志实时应用

sqlplu / as sysdba;

alter database open;

alter database recover managed standby database using current logfile disconnect;

9.验证当前scn号是否已经改变。

select file#,checkpoint_change# from v$datafile order by checkpoint_change#;

以上就是处理的全部过程,因为是客户的环境,网络不通,执行记录没有贴出来。

============================================================================================================================

以下为一些扩展:

1.--监控当前归档应用情况
select process,CLIENT_PROCESS,status,thread#,sequence# from v$managed_standby;

处理完成之后查看当前归档应用情况,跟主库对比,主库切换归档,dg会不会应用等。

2.关于确定最小scn号

2.1.select file#,checkpoint_change# from v$datafile order by checkpoint_change#;

2.2.select min(fhscn) from x$kcvfh;

2.3.三个中的最小值

SELECT CURRENT_SCN FROM V$DATABASE;

SELECT MIN(FIRST_NONLOGGED_SCN) FROM V$DATAFILE WHERE FIRST_NONLOGGED_SCN>0;

SELECT FILE#, FIRST_NONLOGGED_SCN FROM V$DATAFILE WHERE FIRST_NONLOGGED_SCN > 0;

2.4.查看当前备库scn

select to_char(current_scn) from v$database;

3.自己处理过程中的失误.

3.1.没有查询数据库的数据量大小.

3.2.没有在做之前备份spfile.

4.改进后的步骤

4.1.备份备库spfile文件
SQL> create pfile='/home/ora/pfileRdg.ora' from spfile;

4.2.查询主库数据量大小.

select sum(bytes)/1024/1024/1024 G from dba_segments;

4.3.查询当前备库scn

select min(fhscn) from x$kcvfh;

4.4.查看一些基本信息

select * from v$archive_gap;

4.5.主库执行增量备份

4.5.1.第一种方式

backup format '/home/oracle/backup/sdb_incre_%U.bkp' incremental from scn 917051 database;

backup format '/home/oracle/backup/sdb_%U.ctl' current controlfile for standby;

4.5.2.第二种方式

RMAN> run
2> {
3> allocate channel d1 type disk;
4> allocate channel d2 type disk;
5> allocate channel d3 type disk;
6> backup as compressed backupset incremental from SCN 19652214434 database format '/home/ora/full_db_%d_%T_%s.bak' include current controlfile for standby 
filesperset=5 tag 'FOR STANDBY';
7> release channel d1;
8> release channel d2;
9> release channel d3;
10> }

4.6.传输到备库

4.7.手动注册备库文件记录入备库

catalog start with '/home/oracle/backup';

4.8.恢复备库控制文件

4.8.1.对应上面第一种备份方式

restore standby controlfile from '/home/oracle/backup/sdb_09stjtsc_1_1.ctl';

4.8.2对应上面第二种备份方式

RMAN> run
2> {
3> allocate channel d1 type disk;
4> allocate channel d2 type disk;
5> allocate channel d3 type disk;
6> restore standby controlfile to '/home/ora/control01.ctl';
7> recover database noredo;
8> release channel d1;
9> release channel d2;
10> release channel d3;
11> }

关闭备库,将恢复出来的control01.ctl覆盖备库控制文件
[ora@jzhDG ~]$ cp control01.ctl /oradata/JZH/standby.ctl

4.9.启动数据库到mount状态

alter database mount;

select * from v$archive_gap;

4.10.恢复数据库

recover database noredo;    用run块的话run块里面已经包含了这条语句。(就是4.8.2对应的恢复语句)

4.11.打开数据库并开启日志应用。

alter database open read only;或者不打开也行

recover managed standby database disconnect from session;

4.12.最后验证当前应用情况

select file#,checkpoint_change# from v$datafile order by checkpoint_change#;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值