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 环境中的各种状态和配置。以下是一些常用的查询示例:
-
查询数据库基本信息:
sqlSELECT name, open_mode, database_role, protection_mode, protection_level FROM v$database;
-
查询 standby redo log 信息:
sqlSELECT group#, sequence#, archived, status FROM v$standby_log;
-
查询备库进程状态:
sqlSELECT process, pid, status, sequence# FROM v$managed_standby;
-
查询归档日志信息:
sqlSELECT * FROM v$archived_log;
-
查询归档路径状态:
sqlSELECT * FROM v$archive_dest_status;
-
查询在线重做日志信息:
sqlSELECT * FROM v$log;
-
查询所有日志文件信息:
sqlSELECT * FROM v$logfile;
-
查询日志历史信息:
sqlSELECT * FROM v$log_history;
-
查询 DataGuard 统计信息:
sqlSELECT * FROM v$dataguard_stats;
-
查询 DataGuard 配置信息:
sqlSELECT * FROM v$dataguard_config;
-
查询 DataGuard 进程信息:
sqlSELECT * FROM v$dataguard_process;
希望这个文档能够让你了解 DataGuard 相关的视图,并帮助你更好地管理和监控 DataGuard 环境。如果有任何进一步的补充,请告诉我!