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

相关推荐
南极企鹅17 分钟前
MySQL的两大支柱:undo Log&redo log
数据库·mysql·oracle
C137的本贾尼4 小时前
InnoDB 内存架构:Buffer Pool、Change Buffer 与 Log Buffer
数据库·oracle·架构
Bert.Cai4 小时前
SQLPlus简介
数据库·oracle
C137的本贾尼11 小时前
磁盘结构与关键日志:Redo Log、Undo Log 与双写缓冲区
服务器·数据库·oracle
六月雨滴12 小时前
Oracle PGA 优化
oracle·dba
IT邦德12 小时前
Oracle 26ai RAC 通过gold image RU打补丁
数据库·oracle
C137的本贾尼13 小时前
【实战】实现一个带事务与索引的命令行图书借阅系统
数据库·microsoft·oracle
jnrjian1 天前
TDE HSM SET ENCRYPTION KEY
oracle
六月雨滴1 天前
Oracle 内存优化
数据库·oracle
mN9B2uk171 天前
数据库锁总结
数据库·oracle