DataGuard 相关视图

1. v$database

查询数据库的基本信息,包括名称、打开模式、数据库角色、保护模式和保护级别。

sql 复制代码
SELECT name, open_mode, database_role, protection_mode, protection_level FROM v$database;
  • open_mode :数据库的打开模式,可能的值包括:
    • READ WRITE:读写模式。
    • READ ONLY:只读模式。
    • READ ONLY WITH APPLY:只读并应用模式。
    • MOUNTED:挂载模式。
  • database_role :数据库的角色,可能的值包括:
    • PRIMARY:主库。
    • PHYSICAL STANDBY:物理备库。
    • LOGICAL STANDBY:逻辑备库。
    • SNAPSHOT STANDBY:快照备库。
  • protection_mode :保护模式,可能的值包括:
    • MAXIMUM AVAILABILITY:最大可用性。
    • MAXIMUM PROTECTION:最大保护。
    • MAXIMUM PERFORMANCE:最大性能。
    • RESYNCHRONIZATION:重新同步模式。
    • UNPROTECTED:未受保护(数据库处于挂载状态)。
  • protection_level :与 protection_mode 相同。
2. v$standby_log

查询 standby redo log 的日志信息。

sql 复制代码
SELECT group#, sequence#, archived, status FROM v$standby_log;
  • group#:日志组编号。
  • sequence#:日志序列号。
  • archived:是否已归档。
  • status :日志状态,可能的值包括:
    • UNUSED:未使用。
    • CURRENT:当前正在使用的日志。
    • ACTIVE:活动但不是当前的日志。
    • INACTIVE:不活跃的日志。

在最大保护模式和最高可用模式下,备库必须要有 standby redo log。

3. v$managed_standby

查询备库的进程状态(在备库上执行)。

sql 复制代码
SELECT process, pid, status, sequence# FROM v$managed_standby;
  • process :进程类型,可能的值包括:
    • ARCH:归档进程。
    • MRP0:介质恢复进程,用于应用接收到的日志。如果没有该进程,代表没有开启实时应用。
    • RFS:远程文件服务器进程,接收远程日志文件。如果没有该进程,备库不会接收日志文件。
  • pid:操作系统进程号。
  • status :进程状态,可能的值包括:
    • ARCH-CONNECT:与主库的归档建立了连接。
    • ARCH-CLOSING:进程已经完成了归档,并且关闭了归档日志文件。
    • ARCH-WRITING:进程正在写 redo 数据到归档日志文件。
    • MRP0-APPLYING_LOG:正在应用日志到备库,开启实时应用。
    • MRP0-WAIT_FOR_LOG:等待归档日志完成(开启非实时应用,或者主备之间不通)。
  • sequence# :当前归档日志序列号,可以查询 archive log list
4. v$archived_log

查询归档日志信息。

sql 复制代码
SELECT * FROM v$archived_log;
  • applied :日志文件是否已经应用,数据文件是否已经更新。
    • YES:日志文件已经应用,数据文件已经更新。
    • IN-MEMORY:日志文件已经应用,但数据文件还未更新。
5. v$archive_gap

查询哪些日志没有同步(用得少)。

sql 复制代码
SELECT * FROM v$archive_gap;
6. v$dataguard_status

查询 DataGuard 的状态信息。

sql 复制代码
SELECT * FROM v$dataguard_status;
7. v$archive_dest

查询归档日志的目的地(在主库上执行)。

sql 复制代码
SELECT * FROM v$archive_dest;
8. v$archive_dest_status

查询归档路径的状态(在主库上执行)。

sql 复制代码
SELECT * FROM v$archive_dest_status;
  • STATUS :归档路径的状态,可能的值包括:
    • VALID:有效。
    • INACTIVE:非活动的。
    • DEFERRED:手工禁用。
    • ERROR:归档错误。
  • ERROR:如果不同步,可以通过该字段查看原因。
9. v$log

查询在线重做日志的信息。

sql 复制代码
SELECT * FROM v$log;
  • group#:日志组编号。
  • sequence#:日志序列号。
  • bytes:日志文件大小。
  • members:日志成员数。
  • status :日志状态,可能的值包括:
    • UNUSED:未使用。
    • CURRENT:当前正在使用的日志。
    • ACTIVE:活动但不是当前的日志。
    • INACTIVE:不活跃的日志。
10. v$logfile

查询所有日志文件的信息,包括在线重做日志和 standby 日志文件。

sql 复制代码
SELECT * FROM v$logfile;
  • group#:日志组编号。
  • member:日志文件路径。
  • status :日志文件状态,可能的值包括:
    • VALID:有效。
    • INVALID:无效。
    • RECOVER:需要恢复。
11. v$log_history

查询日志历史信息。

sql 复制代码
SELECT * FROM v$log_history;
  • sequence#:日志序列号。
  • first_change#:第一个变更号。
  • next_change#:下一个变更号。
  • first_time:日志开始时间。
  • next_time:日志结束时间。
12. v$dataguard_stats

查询 DataGuard 统计信息。

sql 复制代码
SELECT * FROM v$dataguard_stats;
  • name:统计项名称。
  • value:统计值。
13. v$dataguard_config

查询 DataGuard 配置信息。

sql 复制代码
SELECT * FROM v$dataguard_config;
  • db_unique_name:数据库唯一名称。
  • role:数据库角色。
  • protection_mode:保护模式。
  • protection_level:保护级别。
14. v$dataguard_process

查询 DataGuard 进程信息。

sql 复制代码
SELECT * FROM v$dataguard_process;
  • process:进程名称。
  • status:进程状态。
  • pid:操作系统进程号。

总结

通过这些视图,可以监控和管理 DataGuard 环境中的各种状态和配置。以下是一些常用的查询示例:

  • 查询数据库基本信息

    sql 复制代码
    SELECT name, open_mode, database_role, protection_mode, protection_level FROM v$database;
  • 查询 standby redo log 信息

    sql 复制代码
    SELECT group#, sequence#, archived, status FROM v$standby_log;
  • 查询备库进程状态

    sql 复制代码
    SELECT process, pid, status, sequence# FROM v$managed_standby;
  • 查询归档日志信息

    sql 复制代码
    SELECT * FROM v$archived_log;
  • 查询归档路径状态

    sql 复制代码
    SELECT * FROM v$archive_dest_status;
  • 查询在线重做日志信息

    sql 复制代码
    SELECT * FROM v$log;
  • 查询所有日志文件信息

    sql 复制代码
    SELECT * FROM v$logfile;
  • 查询日志历史信息

    sql 复制代码
    SELECT * FROM v$log_history;
  • 查询 DataGuard 统计信息

    sql 复制代码
    SELECT * FROM v$dataguard_stats;
  • 查询 DataGuard 配置信息

    sql 复制代码
    SELECT * FROM v$dataguard_config;
  • 查询 DataGuard 进程信息

    sql 复制代码
    SELECT * FROM v$dataguard_process;

希望这个文档能够让你了解 DataGuard 相关的视图,并帮助你更好地管理和监控 DataGuard 环境。如果有任何进一步的补充,请告诉我!

相关推荐
ClouGence6 天前
Oracle 数据同步为什么会出现数据不一致?长事务是常被忽略的原因
数据库·后端·oracle
ClouGence12 天前
Oracle CDC 架构优化:从主库直连到 DataGuard 备库同步
数据库·后端·oracle
曹牧13 天前
Oracle EXPLAIN PLAN
数据库·oracle
贤时间13 天前
codex 助力oracle ebs 开发
数据库·oracle
秉承初心13 天前
PostgreSQL 数据性能瓶颈突破实战
数据库·postgresql·oracle
Curvatureflight13 天前
MySQL 深分页越来越慢?从 LIMIT OFFSET 改成游标分页
数据库·oracle
XZ-07000113 天前
MySQL事务
数据库·mysql·oracle
tiancaijiben13 天前
阿里云函数计算FC如何实现网站的定时任务与自动化
数据库·oracle·dba
xfhuangfu13 天前
Oracle 19c 多租户体系架构介绍
数据库·oracle·架构
杨云龙UP13 天前
Spotlight 接入 Oracle 数据库监控操作指南 2026-06-16
数据库·oracle·性能监控·预警·阈值·spotlight·瓶颈分析