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

相关推荐
_oP_i16 分钟前
Oracle JDK(通常简称为 JDK)和 OpenJDK区别
java·数据库·oracle
dingdingfish10 小时前
Oracle 数据库 IDENTITY 列
sql·oracle·column·database·developer·identity·12c
呆呆小雅11 小时前
C# 可空类型
数据库·oracle·c#
莳花微语17 小时前
Oracle RMAN异机迁移数据库从文件系统至ASM
数据库·oracle·数据库迁移
TPCloud17 小时前
oracle小技巧-解决特殊密码字符而导致的exp错误
oracle·exp·密码特殊字符
TPCloud17 小时前
部署自动清理任务解决ORA-00257: archiver error. Connect internal only, until freed
数据库·oracle·ora-00257
Mephisto.java18 小时前
【大数据学习 | Spark-Core】Spark中的join原理
大数据·redis·sql·oracle·spark·json·database
大明湖的狗凯.20 小时前
MySQL 中的排序:索引排序与文件排序
数据库·mysql·oracle
小狮子安度因1 天前
Qt SQL模块概述
sql·qt·oracle