dg丢失归档,使用rman增量备份恢复


通过rman 增量备份备份备库还未同步的归档

通过查询scn来确定增量备份的备份点

然后将增量备份的归档传输到备库,

备库注册catalog备份片

 recover

   

 

查看主备库归档情况确定归档GAP

SELECT dest_id,THREAD#,NAME, sequence#,   archived,applied,a.NEXT_CHANGE#FROM   v$archived_log a WHERE  a.sequence# >= 40 AND      resetlogs_change# = (SELECT d.RESETLOGS_CHANGE# FROM v$database d)   ORDER  BY a.THREAD#,  a.sequence#,a.dest_id;

 

备库上查看丢失的归档:

SQL> SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM   V$ARCHIVE_GAP;

  THREAD# LOW_SEQUENCE# HIGH_SEQUENCE#

----------   ------------- --------------

         1           140            155

 

备库查看丢失归档时的最小scn号:

SQL> select current_scn from v$database;

  CURRENT_SCN

-----------

1146993

SQL> select min(fhscn) from x$kcvfh;

 MIN(FHSCN)

----------------

1146994

 

 

在主库以最小SCN号以RMAN创建增量备份:

[oracle@dg1 ~]$ rman target /

RMAN> backup    incremental from scn 1146993 database    format'/rman/bak_%U%t'tag'forstandby';

 

RMAN-00571:   ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS   ===============

RMAN-00571:   ===========================================================

RMAN-03009: failure of backup command on ORA_DISK_1 channel at   12/06/2016 07:26:47

ORA-19502: write error on file "/rman/bak_16rmp5tk_1_1929863604",   block number 1152 (block size=8192)

ORA-27072: File I/O error

Additional information: 4

Additional information: 1152

Additional information: 303104

报错I/O错误

[oracle@dg1 ~]$ df -h

Filesystem              Size  Used Avail Use% Mounted on

/dev/sda3                16G   15G  9.4M 100% /

tmpfs                   932M  231M  702M    25% /dev/shm

/dev/sda1               2.0G   90M  1.8G     5% /boot

 

发现,空间不足导致的I/O错误 创建一块磁盘挂载到/rman上 再运行命令

 

 

[oracle@dg1 ~]$ rman target /

  RMAN> backup  incremental   from scn 1146993 database    format'/rman/bak_%U%t';

 

拷贝备份到备库

[oracle@dg1 rman]$ scp bak_18rmp811_1_1929865761  192.168.40.38:/oracle

[oracle@dg1 rman]$ scp bak_19rmp824_1_1929865796  192.168.40.38:/oracle

 

 

在主库创建新的控制文件

SQL> ALTER DATABASE CREATE standby controlfile AS   '/home/oracle/standby.ctl';

Database   altered.

 

 

拷贝到备库:

[oracle@dg1 rman]$ scp /home/oracle/standby.ctl  192.168.40.38:/home/oracle/

 

 

备库启动到nomount状态:

备库上通过rman恢复控制文件

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

 

Starting restore at 06-DEC-16

RMAN-00571:   ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS   ===============

RMAN-00571: ===========================================================

RMAN-03002: failure of restore command at 12/06/2016 14:52:50

ORA-03114: not connected to ORACLE

 

出现这个问题的原因是我的数据库状态是在另外一个窗口更改的,而rman未更新过数据库状态

当我退出rman并重新进入,再运行命令即可

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

 

 

备库更改到mount状态

SQL> alter database mount

Database   altered.

RMAN> list backup;

 

catalog 中注册备份片

RMAN> CATALOG START WITH   '/oracle/bak_18rmp811_1_1929865761';

RMAN> CATALOG START WITH   '/oracle/bak_19rmp824_1_1929865796';

 

恢复数据库

RMAN> recover database;

 

在备库上重新启动应用日志:

 SQL>ALTER DATABASE recover managed standby DATABASE   disconnect FROM SESSION; 

 

主库打开,切换日志:

SQL> startup

SQL> alter system switch logfile;

SQL> select max(sequence#) from v$archived_log;

 

备库端alert日志查看:

[root@dg2 trace]# tail -f alert_credit.log

备库在应用,恢复成功。

将主库切换到begin backup 状态,备库切换到mount 状态

将备库的数据文件删除,

scp 主库的数据文件和归档到备库

再将主库切换到end backup状态,备库打开,查看状态

 


请使用浏览器的分享功能分享到微信等