
以下是针对 Oracle 19c 中 V$ARCHIVE_DEST 动态性能视图的深度解析,包含其作用、使用场景、字段详解、相关组件及实用 SQL:
核心定位与作用
V$ARCHIVE_DEST 是 归档目标配置与状态的中央监控视图,提供数据库所有配置的归档目标(LOG_ARCHIVE_DEST_n)的实时运行状态。它与 V$ARCHIVE_DEST_STATUS 共同构成归档管理的核心监控体系。
核心作用:
- 配置验证:查看所有归档目标的参数配置(路径、服务名、属性)
- 实时状态监控:检测目标是否可用、传输延迟、错误信息
- Data Guard 运维:监控主备库之间的日志传输状态
- 故障诊断:快速定位归档失败原因(网络、磁盘、权限等)
- 性能优化:分析归档传输瓶颈(同步/异步模式、压缩效率)
使用场景
- Data Guard 搭建/维护:配置后验证目标状态
- 归档失败告警:收到 ORA-00257 时诊断具体目标
- 存储迁移:修改归档路径后确认生效
- 高可用切换:主备角色切换时监控归档方向变化
- 性能调优:分析
NET_TIMEOUT、REOPEN_SECS等参数合理性 - 容量规划:监控快速恢复区(FRA)使用率
字段含义详解 (Oracle 19c)
| 字段名 | 类型 | 描述 | 关键值/示例 |
|---|---|---|---|
| DEST_ID | NUMBER | 归档目标标识符 (1-31) | 1 (本地), 2 (备库1) |
| STATUS | VARCHAR2(10) | 目标整体状态 | VALID(正常), ERROR(错误), DEFERRED(延迟), ALTERNATE(备用), INACTIVE(未启用) |
| BINDING | VARCHAR2(9) | 归档绑定模式 | MANDATORY(强制), OPTIONAL(可选) - 影响日志切换行为 |
| TARGET | VARCHAR2(9) | 目标类型 | PRIMARY, STANDBY |
| SCHEDULE | VARCHAR2(7) | 传输调度模式 | ACTIVE(实时), PASSIVE(被动) |
| DATABASE_MODE | VARCHAR2(7) | 目标数据库模式 | OPEN_READ-ONLY, MOUNTED, READ_ONLY_WITH_APPLY (备库) |
| PROTECTION_MODE | VARCHAR2(20) | 数据保护模式 | MAXIMUM PERFORMANCE, MAXIMUM AVAILABILITY, MAXIMUM PROTECTION |
| DESTINATION | VARCHAR2(256) | 目标地址 | /arch/ (本地), standby_srv (TNS服务名) |
| ALTERNATE | VARCHAR2(40) | 备用目标 | 主目标失败时切换的目标 |
| TRANSMIT_MODE | VARCHAR2(30) | 传输模式 | SYNC(同步), ASYNC(异步) - 直接影响数据安全性和性能 |
| AFFIRM | VARCHAR2(3) | 写确认 | YES/NO - SYNC模式下是否等待备库写入确认 |
| NET_TIMEOUT | NUMBER | 网络超时(秒) | 30 (默认) - SYNC模式下LGWR等待网络响应的最长时间 |
| DELAY_MINS | NUMBER | 延迟应用(分钟) | 0 (无延迟) |
| COMPRESSION | VARCHAR2(8) | 压缩算法 | DISABLE, ZLIB, LOW, BASIC (11g+), ALGORITHM=LZO (12c+) |
| REOPEN_SECS | NUMBER | 失败重试间隔(秒) | 300 (默认) - 目标失败后重试等待时间 |
| ERROR | VARCHAR2(2048) | 错误信息 | ORA-12154: TNS:could not resolve the connect identifier |
| TRANSMIT_LAG | VARCHAR2(30) | 传输延迟 | +00 00:00:00 (无延迟) - 日志生成到传输完成的时间差 |
| APPLY_LAG | VARCHAR2(30) | 应用延迟 | +00 00:00:00 (无延迟) - 日志生成到备库应用的时间差 |
| LAG_SEQUENCE | NUMBER | 延迟的日志序列号 | 当有延迟时显示 |
| SYNC_RATE | NUMBER | 同步传输速率(字节/秒) | 实时性能指标 |
| ASYNC_RATE | NUMBER | 异步传输速率(字节/秒) | 实时性能指标 |
| TYPE | VARCHAR2(8) | 目标物理类型 | LOCAL, PHYSICAL, LOGICAL |
| VALID_TYPE | VARCHAR2(9) | 配置有效性 | VALID, INVALID |
| VALID_NOW | VARCHAR2(3) | 当前是否有效 | YES/NO |
| IS_RECOVERY_DEST_FILE | VARCHAR2(3) | 是否使用快速恢复区(FRA) | YES/NO |
| FAIL_SEQUENCE | NUMBER | 最后失败的日志序列号 | 诊断使用 |
| FAIL_DATE | DATE | 最后失败时间 | 诊断使用 |
| CON_ID | NUMBER | 容器ID (CDB/PDB) | 0(CDB$ROOT), >1(PDB) |
相关视图
V$ARCHIVE_DEST_STATUS:更友好的状态摘要视图(推荐日常监控)GV$ARCHIVE_DEST:RAC环境全局视图V$ARCHIVE_DEST_HISTORY:目标状态历史记录V$ARCHIVED_LOG:归档日志元数据V$MANAGED_STANDBY:Data Guard进程状态V$DATAGUARD_STATS:Data Guard性能指标DBA_LOG_ARCHIVE_DEST:持久化配置信息(数据字典)
基表
数据来源于控制文件的内存缓存,底层关联X$表:
X$KCCAD(Kernel Cache Controlfile - Archive Destinations)X$KCCADST(状态信息)
注意:直接查询X表存在风险,应始终通过V表存在风险,应始终通过V表存在风险,应始终通过V视图访问。
核心原理
配置流程
状态更新机制
-
本地目标:
- ARCn进程尝试写入
- 成功:更新
STATUS=VALID - 失败:记录错误,按
REOPEN_SECS重试
-
远程目标:
- LNSn进程建立网络连接
- 传输日志到RFS进程
- 备库写入standby redo log
- 成功:更新传输/应用延迟
- 失败:触发错误处理流程
错误处理
常用监控 SQL
1. 基础状态检查 (Data Guard 必备)
SELECT dest_id,
destination,
status,
transmit_mode,
error,
transmit_lag,
apply_lag
FROM v$archive_dest
WHERE target = 'STANDBY';
2. 诊断失败目标
SELECT dest_id,
destination,
status,
error,
fail_sequence,
TO_CHAR(fail_date,'YYYY-MM-DD HH24:MI:SS') fail_time
FROM v$archive_dest
WHERE status = 'ERROR';
3. 传输性能分析
SELECT dest_id,
transmit_mode,
sync_rate/1024 sync_kbps,
async_rate/1024 async_kbps,
net_timeout
FROM v$archive_dest
WHERE status = 'VALID';
4. FRA空间监控
SELECT dest_id,
destination,
(SELECT ROUND(space_used/space_limit*100,1)
FROM v$recovery_file_dest) fra_usage_percent
FROM v$archive_dest
WHERE destination = 'USE_DB_RECOVERY_FILE_DEST';
5. 配置合规性检查
SELECT dest_id,
binding,
reopen_secs,
compression,
valid_type,
valid_now
FROM v$archive_dest
WHERE status != 'INACTIVE';
6. 实时延迟监控 (Data Guard)
SELECT
dest_id,
TO_CHAR(SYSDATE - (transmit_lag + apply_lag), 'YYYY-MM-DD HH24:MI:SS') AS current_apply_time
FROM v$archive_dest
WHERE target = 'STANDBY';
关键注意事项
-
状态优先级:
ERROR状态会阻塞日志切换,需立即处理DEFERRED需手动恢复:ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_n=ENABLE
-
同步模式风险:
SELECT dest_id FROM v$archive_dest WHERE transmit_mode='SYNC' AND net_timeout < 10; -- 超时过短风险 -
RAC 环境差异:
- 使用
GV$ARCHIVE_DEST查看所有节点 - 配置应保持一致(尤其
DESTINATION)
- 使用
-
空间监控:
- FRA 目标:结合
V$RECOVERY_AREA_USAGE - 非FRA目标:需操作系统级监控
- FRA 目标:结合
-
历史问题追踪:
SELECT * FROM v$archive_dest_history WHERE dest_id=2 AND error IS NOT NULL; -
配置验证顺序:
STATUS='VALID'VALID_NOW='YES'ERROR IS NULL
典型错误处理流程
通过 V$ARCHIVE_DEST,DBA 可全面掌握归档系统的运行状态,快速定位问题,确保数据安全和高可用性。建议结合 V$ARCHIVE_DEST_STATUS 进行日常监控,并在 Data Guard 环境中设置定期状态检查任务。
欢迎关注我的公众号《IT小Chen》
1054

被折叠的 条评论
为什么被折叠?



