备库wait_for_log -- ORA-16086

本文介绍了如何在数据库环境中通过SQL查询监控主库的通道状态,如何在备库增加日志组,并详细展示了同步状态跟踪、传输速率查看、备库状态检查以及归档管理和剩余量计算的方法。

主库查看通道

select error,status from gv$archive_dest where dest_id=11;

在这里插入图片描述

备库查看并增加日志组个数

select group#,thread#,sequence#,archived,status,bytes/1024/1024 MB from v$standby_log;
alter database recover managed standby database cancel;

alter database add standby logfile [thread 1] size 2G;
select group#,thread#,sequence#,archived,status,bytes/1024/1024 MB from v$standby_log;

同步状态

--查看延迟--
--stblag.sql--
col value for a20
col name for a24
col DATUM_TIME for a20
col TIME_COMPUTED for a25
SELECT name, value, datum_time, time_computed FROM V$DATAGUARD_STATS;

--查看传输速率--
--stbspeed.sql--
set lines 200
col type format a15
col ITEM format a26
col units format a15
col comments format a25
select * from v$recovery_progress where START_TIME = (select max(START_TIME) from v$recovery_progress);

--查看备库状态--
--stbstatus.sql--
select PID,PROCESS,STATUS,SEQUENCE#,THREAD#,BLOCKS,DELAY_MINS from v$managed_standby;

--查看GAP--
--gap.sql--
select * from v$archive_gap;

--查看剩余归档量--
--arch.sql--
SELECT SUM(BLOCKS*BLOCK_SIZE)/1024/1024 MB FROM V$ARCHIVED_LOG WHERE REGISTRAR = 'RFS' AND APPLIED='NO' AND name like '/arc%';
在AIX系统下,Oracle数据库出现`ORA-19809`和`ORA-19804`错误通常与归档日志文件的管理有关,特别是在归档目标目录空间不足或无法成功删除过期的归档日志时。以下是这两个错误的详细解释和解决方案。 ### ORA-19809: limit exceeded for recovery files 该错误表示数据库的恢复文件(如归档日志、RMAN份等)数量或大小超过了设定的限制。Oracle通过`db_recovery_file_dest_size`参数控制快速恢复区(Fast Recovery Area, FRA)的总大小。当FRA中存储的文件超过该限制时,数据库将无法继续生成新的归档日志或份文件,并抛出`ORA-19809`错误[^1]。 ### ORA-19804: cannot reclaim space from recovery files 该错误通常紧随`ORA-19809`之后发生,表示Oracle无法自动回收FRA中的空间。这可能是因为过期的归档日志未能被自动删除,或者RMAN配置中未启用自动删除策略[^2]。 ## 解决方案 ### 1. 检查快速恢复区使用情况 可以使用以下SQL语句查看FRA的使用情况: ```sql SELECT NAME AS file_type, SPACE_LIMIT AS total_space, SPACE_USED AS used_space, SPACE_RECLAIMABLE AS reclaimable_space, NUMBER_OF_FILES AS num_files FROM v$recovery_area_usage; ``` ### 2. 扩展快速恢复区大小 如果发现FRA空间不足,可以通过增大`db_recovery_file_dest_size`参数来扩展空间: ```sql ALTER SYSTEM SET db_recovery_file_dest_size = 20G; ``` ### 3. 手动清理归档日志 可以手动删除不再需要的归档日志以释放空间。使用RMAN执行以下命令: ```bash RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7'; ``` 此命令将删除7天前的所有归档日志。 ### 4. 配置RMAN归档删除策略 为防止类似问题再次发生,建议配置RMAN的归档删除策略。例如,设置归档日志保留策略为7天: ```bash RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO BACKED UP 2 TIMES TO DISK; RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS; ``` ### 5. 检查归档目标目录权限 确保Oracle数据库具有对归档目标目录的读写权限。在AIX系统中,可以通过以下命令检查和修改目录权限: ```bash ls -ld /u01/oradata/archivelog chown -R oracle:dba /u01/oradata/archivelog chmod -R 750 /u01/oradata/archivelog ``` ### 6. 检查归档进程状态 确认归档进程是否正常运行,可以使用以下命令: ```sql SELECT archiver, log_switch_wait FROM v$database; ``` 如果归档进程被阻塞,需要进一步排查归档目标路径是否可用、磁盘空间是否充足等问题。 ## 预防措施 - 定期监控FRA使用情况,确保空间充足。 - 启用并维护合理的RMAN归档删除策略。 - 设置自动清理脚本或计划任务,定期删除过期归档日志。 -数据库参数文件中配置合理的`db_recovery_file_dest`和`db_recovery_file_dest_size`值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值