本文转载自微信公众号《数据与云》,作者AIQ。转载本文请联系数据和云公众号。TroubleshootingCheckarchivesynchronization1.查看数据库状态selectdatabase_role,flashback_on,open_mode,current_scnfromv$databaseDATABASE_ROLEFLASHBACK_ONOPEN_MODECURRENT_SCN------------------------------------------------------------------PHYSICALSTANDBYNOREADONLYWITHAPPLY166575449720592.查看最大归档线程和最大接收存档状态。selectthread#,max(sequence#)fromv$archived_loggroupbythread#;生产库:SQL>selectthread#,max(sequence#)fromv$archived_loggroupbythread#;THREAD#MAX(SEQUENCE#)----------------------1136973213269341495993133277--DG库SYS@hisnewdb>selectthread#,max(sequence#)fromv$archived_loggroupbythread#;THREAD#MAX(SEQUENCE#)----------------------1136973213269341495983133277可以看到4个节点的归档都会来,顺序可以匹配。3.检查是否有GAPselect*fromv$archived_gap;logapplicationstatus查看延迟的应用状态selectname,value,time_computedfromv$dataguard_statswhererownum<33;NAMEVALUETIME_COMPUTED----------------------------------------------------------------------------------------------------------------------------transportlag+1106它可以可以看到applylag的申请延迟了11天6小时。applyfinishtime应用程序的最快恢复时间为4小时。恢复思路applicationlogalterdatabaserecovermanagedstandbydatabsecancel;--取消应用日志alterdatabaseopenreadonly;--打开只读库alterdatabaserecovermanagedstandby;alterdatabaserecovermanagedstandbydisconnectfromsession;archive还保留着或者GAP很少的情况1)archive还在主库方法一:先通过备库sql:selectnamefromv$archived_logwheresequence找出对应的node[thread#]和archivelocationname#between&1and&2andthread#=&3;将上面的文件转到备库归档位置archiveloglist#1.asmcd命令本地环境和asm存储cpfree。在cparch*.pdf/home/oracle/1.dbfstandbydatabase上注册存档文件alterdatabaseregisterlogfile'存档文件绝对路径'或rman注册日志目录以''开头;应用程序日志,请参阅select*fromV$ARCHIVE_GAP;,监控是否存在其他GAP。如果出现,就按照上面的方法循环操作。方法二:配置fal_client=${备库监控}和fal_server=${主库监控}直接套用日志,备库自己找日志。2)备库中的存档被删除或GAP较多。检查存档的位置。alert.log日志:提供线程4序号148164的存档,获取序号148164-148165。control_keep_record_keep_time是控制文件重用记录数据。提示在此录制天数内找不到存档文件,建议设置较长的天数。以便GAP找到丢失的日志。默认为7天,范围为1-365天。记录是归档日志和各种备份记录。不记录数据文件、表空间和重做线程记录。除非被drop,否则不会重用这部分记录startedlogmergerprocessThuMar0416:19:532021ManagedStandbyRecoverynotusingRealTimeApplyParallelMediaRecoverystartedwith16slavesWaitingforallnon-currentORLstobearchived...Allnon-currentORLshavebeenarchived.MediaRecoveryWaitingforthread4sequence148164Fetchinggapsequenceinthread4,gapsequence148164-148165ThuMar0416:19:572021Completed:alterdatabaserecovermanagedstandbydatabasedisconnectfromsession----------ThuMar0416:21:502021FAL[client]:FailedtorequestgapsequenceGAP-thread4sequence148164-148165DBID3828421454branch984679630FAL[client]:AlldefinedFALservershavebeenattempted.----------------------------------------------------------检查CONTROL_FILE_RECORD_KEEP_TIME初始化参数被定义为一个足够大的值,应该保持足够的日志切换信息以解决归档日志间隙。----------------------------------------------------------ThuMar0416:22:252021RFS[18]:Selectedlog29forthread4sequence149600dbid-466545842branch984679630ThuMar0416:22:2520211)找到当前最小的SCN与数据文件的最后一个检查点的scn,数据文件的头部检查点的scn,丢失的档案对应的scn(第一个变化数thenextlogfile),thecurrentdatabase的scn:selectthread#,low_sequence#,high_sequence#fromv$archive_gap;coldatafile_scnfor999999999999999colDATAFILE_HEADER_SCNfor999999999999999colcurrent_scnfor999999999999999colnext_change#for999999999999999select(selectmin(d.checkpoint_change#)fromv$datafiled)datafile_scn,(selectmin(d.checkpoint_change#)fromv$datafile_headerdwhererownum=1)datafile_header_scn,(selectcurrent_scnfromv$database)current_scn,(selectnext_change#fromv$archived_logwheresequence#=148164andresetlogs_change#=(selectd.resetlogs_change#fromv$databased)andrownum=1)next_change#fromdual;数据文件_SCNDATAFILE_REENT-GEN_SCNCUR_CHAN-------------------------------------------------166575449690281665754497206016657544972059取上面最小的scn作为增量备份的SCN量scn备份run{allocatechannelc1devicetypedisk;allocatechannelc2devicetypedisk;allocatechannelc3devicetypedisk;allocatechannelc4devicetypedisk;allocatechannelc5devicetypedisk;allocatechannelc6devicetypedisk;CONFIGUREDEVICETYPEDISKPARALLELISM6BACKUPTYPETOBACKUPSET;backupascompressedbackupsetcurrentcontrolfileforstandbyformat'/home/oracle/backup/backup_ctl_%U.rman';backupascompressedbackupsetincrementalfromscn16657544969028databaseformat'/home/oracle/backup/backup_%d_%s_%c_%U_%T.rman'includecurrentcontrolfileforstandbyfilesperset10tag'forsdb_16657544969028_0304';releasechannelc1;releasechannelc2;releasechannelc3;releasechannelc4;releasechannelc5;releasechannelc6;传输备份文件到备份库scp-rp/home/oracle/backup/backuphost2:/home/backup/backuphost2:/home/找出控制文件的绝对目录位置,停止备库,开始nomount,恢复控制文件,开始挂载,恢复数据文件查看rman进度selectnamefromv$controlfile;shuimmediate;startupnomount;rmantarget/<
