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 环境。如果有任何进一步的补充,请告诉我!

相关推荐
惜分飞1 小时前
ORA-600 kcratr_nab_less_than_odr和ORA-600 4193故障处理--惜分飞
数据库·oracle
fen_fen16 小时前
Oracle建表语句示例
数据库·oracle
此刻你20 小时前
常用的 SQL 语句
数据库·sql·oracle
海心焱1 天前
从零开始构建 AI 插件生态:深挖 MCP 如何打破 LLM 与本地数据的连接壁垒
jvm·人工智能·oracle
德彪稳坐倒骑驴1 天前
MySQL Oracle面试题
数据库·mysql·oracle
吕司1 天前
MySQL库的操作
数据库·mysql·oracle
dishugj1 天前
【Oracle】 rac的一些问题以及解决方案
数据库·oracle
eWidget1 天前
面向信创环境的Oracle兼容型数据库解决方案
数据库·oracle·kingbase·数据库平替用金仓·金仓数据库
熊文豪1 天前
关系数据库替换用金仓——Oracle兼容性深度解析
数据库·oracle·金仓数据库·电科金仓·kes
eWidget1 天前
面向Oracle生态的国产高兼容数据库解决方案
数据库·oracle·kingbase·数据库平替用金仓·金仓数据库