概述
监视重做传输状态
- 确定最新归档的重做日志文件
在重做源数据库上执行以下查询,以确定每个线程的最新归档序列号:
SELECT MAX(SEQUENCE#), THREAD# FROM V$ARCHIVED_LOG WHERE RESETLOGS_CHANGE# = (SELECT MAX(RESETLOGS_CHANGE#) FROM V$ARCHIVED_LOG) GROUP BY THREAD#;
- 在重做源数据库上执行以下查询,以确定每个重做传输目标上最近归档的重做日志文件:
SELECT DESTINATION, STATUS, ARCHIVED_THREAD#, ARCHIVED_SEQ# FROM V$ARCHIVE_DEST_STATUS WHERE STATUS <> 'DEFERRED' AND STATUS <> 'INACTIVE';
对于每个目标,最近存档的重做日志文件应该相同。如果不是,则VALID以外的状态可能会标识到该目标的存档操作期间遇到的错误。
- 确定是否已在重做传输目标接收到已归档的重做日志文件。
可以在重做源数据库中执行查询,以查明在特定的重做传输目的地是否已收到存档的重 做日志文件。每个目的地都有一个与之关联的ID号。 您可以查询数据库的V $ARCHIVE_ DEST视图的DEST_ID列,以标识每个目标的ID号。
SELECT LOCAL.THREAD#, LOCAL.SEQUENCE# FROM (SELECT THREAD#, SEQUENCE# FROM V$ARCHIVED_LOG WHERE DEST_ID=1) LOCAL WHERE LOCAL.SEQUENCE# NOT IN (SELECT SEQUENCE# FROM V$ARCHIVED_LOG WHERE DEST_ID=2 AND THREAD# = LOCAL.THREAD#);
- 跟踪传输到重做传输目标的重做进程。
在重做源数据库和每个重做传输目标位置设置LOG_ARCHIVE_TRACE数据库初始化参 数,以跟踪重做传输进度。
监视同步重做传输响应时间
- V$REDO_DEST_RESP_HISTOGRAM视图包含每个重做传输目标的响应时间数据。 对
于通过同步重做传输模式发送的重做传输消息,将保留此响应时间数据。
每个目标的数据由一系列行组成,每个响应时间都有一行。 为了简化记录保存,对于少于300秒的响应时间,响应时间会四舍五入到最接近的整秒。 大于300秒的响应时间将舍入为600、1200、2400、4800或9600秒。
每行包含四列:FREQUENCY,DURATION,DEST_ID和TIME。
FREQUENCY列包含已观察到给定响应时间的次数。 DURATION列对应于响应时间。DEST_ID列标识目标。 TIME列包含上次更新该行时采用的时间戳。
此视图中的响应时间数据对于识别可能影响重做源数据库上的事务吞吐量的同步重做传输模式性能问题很有用。 这对于调整NET_TIMEOUT属性也很有用。
接下来的三个示例显示了针对目的地2的示例查询,该查询对应于LOG_ARCHIVE_DEST_2参数。 要显示其他目的地的响应时间数据,只需更改查询中的DEST_ID。
- 对重做源数据库执行以下查询显示目标2的响应时间
SELECT FREQUENCY, DURATION FROM V$REDO_DEST_RESP_HISTOGRAM WHERE DEST_ID=2 AND FREQUENCY>1;
对重做源数据库执行以下查询,以显示目标2的最慢响应时间
SQL>SELECT max(DURATION) FROM V$REDO_DEST_RESP_HISTOGRAM WHERE DEST_ID=2 AND FREQUENCY>1;
对重做源数据库上执行以下查询显示目标2的最慢响应时间
SQL>SELECT min(DURATION) FROM V$REDO_DEST_RESP_HISTOGRAM WHERE DEST_ID=2 AND FREQUENCY>1;
响应时间最高不能超过该目标指定NET_TIMEOUT值,如果因重做传输目标在NET_TIMEOUT秒内未响应重做传输消息,则同步重做传输模式会话将终止
重做间隙检查和解决
- 只要重做传输中断,就会发生重做间隙。恢复重做传输后,重做传输服务会自动检查到重做间隔并通过将丢失的重做发送到目标来解决。
- 在性能低下的网络链路时减少重做间隙的解决时间有两种:
- 重做压缩 LOG_ARCHIVE_DEST_n 参数的COMPRESSION 属性用于指定重做数据在传输到目标之前先进行压缩
- 并行重做传输网络会话 LOG_ARCHIVE_DEST_n 参数的MAX_CONNECTIONS属性可用于指定使用多个网络会话来发送解决重做间隙所需的操作
手动间隙解决
- (物理备用数据库)在某些情况下,间隙解决无法自动执行,必须手动执行。例如主数据库不可用,则必须在备用数据库上手动执行重做间隙解析。
在物理备用数据库上执行以下查询,以确定备用数据库上是否存在重做间隙:
SQL>SELECT * FROM V$ARCHIVE_GAP;
然后再到主数据库上执行以下查询,以在主数据库上找到重做日志文件:
SELECT NAME FROM V$ARCHIVED_LOG WHERE THREAD#=x AND DEST_ID=x AND SEQUENCE# BETWEEN x AND x;
将这些日志文件复制到物理备用数据库,然后使用
SQL>ALTER DATABASE REGISTER LOGFILE '/xxx/xxx/arcr_x_x.arc';
- (逻辑备用数据库)如果要确定逻辑备用数据库上是否存在重做间隙,请查询逻辑备用数据库上的DBA_LOGSTANDBY_LOG视图
SELECT THREAD#, SEQUENCE#, FILE_NAME FROM DBA_LOGSTDBY_LOG L WHERE NEXT_CHANGE# NOT IN (SELECT FIRST_CHANGE# FROM DBA_LOGSTDBY_LOG WHERE L.THREAD# = THREAD#) ORDER BY THREAD#, SEQUENCE#;
如果存在间隙,把丢失的日志文件复制到逻辑备用数据库,使用以下语句注册它们:
SQL>DATABASE REGISTER LOGICAL LOGFILE '/xxx/xxx/arcr_x_x.arc';
最后
以上就是强健皮皮虾为你收集整理的Oracle Data Guard 重做日志文件监控的全部内容,希望文章能够帮你解决Oracle Data Guard 重做日志文件监控所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复