...
经常听到有DBA因为对DATAGUARD监控不到位,导致归档日志和主库没有同步,更悲剧的是主库通常都设置了RMAN备份, 而全库备份结束后
经常听到有DBA因为对DATAGUARD监控不到位,导致归档日志和主库没有同步,,更悲剧的是主库通常都设置了RMAN备份,
而全库备份结束后通常会删除归档日志。遇到这种情况,发现很多DBA都会着手重新从主库全库备份恢复到从库,
遇到小的数据库还好,对于动辄上百G或T的库往往会很悲剧,因为数据拷贝时间都相当的漫长。
而事实上对于从库SCN和主库差距并不大,也可以理解为归档差距并不多的DG(比如我们的一个库上线1年了,一个月没有同步差距也不算很大),
根本没必要全库回复,这种情况下增量恢复能快速解决问题,以下是笔者的一次具体操作。
故障现象:
因为周六主库要做历史数据迁移,DBA主动停止了和从库的归档同步。悲剧的是周日凌晨主库有个全库备份动作,
备份完成后把所有的归档都给删除了,这就造成了这部分归档的丢失,从库存在GAP。DBA打算重做DG,申请了一个
晚上8小时的时间,因为数据备份和迁移要5小时,实施和测试计划3小时完成。笔者分析丢失的日志很少,及时制止
了这一实施申请,要求DBA采用incremental recover(增量备份恢复)的方法实现主库和从库同步,
先确定备库的current scn,以此在主库上执行incremental backup,将备份传至备库,使用recover noredo方式恢复备库。
事实证明这种方法是完全可行的。
具体实施如下。
一、实施准备(从库关键数据确认)
1、SPFILE
create pfile='/home/Oracle/dba/pfile_before_recover_dg.ora' from spfile;
-rw-r
drwxr-xr-x 2 oracle oinstall 4096 11-14 21:35 spfile
drwxr-xr-x 2 oracle oinstall 4096 06-01 11:17 expdata
drwxr-xr-x 2 oracle oinstall 4096 2011-04-26 script
[oracle@L-DB-163-18 dba]$ more *.ora
MYPORT.__db_cache_size=3741319168
MYPORT.__java_pool_size=16777216
MYPORT.__large_pool_size=16777216
MYPORT.__shared_pool_size=805306368
MYPORT.__streams_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/MYPORT/adump'
*.background_dump_dest='/u01/app/oracle/admin/MYPORT/bdump'
*.compatible='10.2.0.3.0'
*.control_files='/u01/datafile/control01.ctl','/u01/datafile/control02.ctl'#Restore Controlfile
*.core_dump_dest='/u01/app/oracle/admin/MYPORT/cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=32
*.db_file_name_convert='+DATA/MYPORT/datafile','/oradata/datafile'
*.db_name='MYPORT'
*.db_unique_name='standby'
*.dispatchers=''
*.fal_client='STANDBY'
*.fal_server='MYPORT'
*.job_queue_processes=10
*.log_archive_config='DG_CONFIG=(MYPORT,standby)'
*.log_archive_dest_1='LOCATION=/u01/archive valid_for=(all_logfiles,all_roles) db_unique_name=standby'
*.log_archive_dest_2='service=MYPORT lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=MYPORT'
*.log_archive_dest_state_1='ENABLE'
*.log_archive_dest_state_2='ENABLE'
*.log_archive_max_processes=4
*.log_file_name_convert='+DATA/MYPORT/onlinelog','/u01/datafile'
*.open_cursors=1000
*.pga_aggregate_target=1092957696
*.processes=1000
*.remote_login_passwordfile='EXCLUSIVE'
*.sessions=885
*.sga_max_size=4589934592
*.sga_target=4589934592
*.shared_servers=0
*.standby_file_management='AUTO'
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/u01/app/oracle/admin/MYPORT/udump'
[oracle@L-DB-163-18 dba]$
2、查看在线LOG
cd /u01/datafile
[oracle@L-DB-163-18 dba]$ cd /u01/datafile
[oracle@L-DB-163-18 datafile]$ ls -lt
总计 1474052
-rw-r
-rw-r
-rw-r
-rw-r
-rw-r
-rw-r
-rw-r
-rw-r
-rw-r
-rw-r
-rw-r
-rw-r
-rw-r
-rw-r
-rw-r
-rw-r
-rw-r
[oracle@L-DB-163-18 datafile]$
3、查看数据文件
[oracle@L-DB-163-18 datafile]$ cd /oradata/datafile
[oracle@L-DB-163-18 datafile]$ ls -lt
总计 235078392
-rw-r
-rw-r
-rw-r
-rw-r
-rw-r
-rw-r
-rw-r
-rw-r
-rw-r
-rw-r
-rw-r
-rw-r
-rw-r
-rw-r
-rw-r
-rw-r
-rw-r
-rw-r
-rw-r
-rw-r
-rw-r
-rw-r
-rw-r
-rw-r
-rw-r
-rw-r