一 通过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状态,备库打开,查看状态