如何清理v$rman_backup_job_details视图 报错ORA-02030

本文介绍如何通过删除特定会话密钥的数据及截断表来清理Oracle RMAN备份作业详情表v$rman_backup_job_details。此外,还提供了一个复杂的SQL查询示例,用于从该表中获取详细的备份统计数据。
delete from v$rman_backup_job_details where session_key=4;

在这里插入图片描述

truncate table v$rman_backup_job_details;

在这里插入图片描述

SELECT view_definition FROM v$fixed_view_definition WHERE lower(view_name)='v$rman_backup_job_details';
 SELECT  /*+ rule */ a.session_key,
      a.session_recid,
      a.session_stamp,
      a.command_id,
      a.start_time,
      a.end_time,
      a.input_bytes,
      a.output_bytes,
      a.status_weight,
      a.optimized_weight,
      a.object_type_weight,
      a.output_device_type,
      a.autobackup_count,
      a.backed_by_osb,
      a.autobackup_done,
      a.status,
      a.input_type,
      a.optimized,
      a.elapsed_seconds,
      a.compression_ratio,
      a.input_bytes_per_sec,
      a.output_bytes_per_sec,
      sys.dbms_rcvman.num2displaysize(input_bytes) input_bytes_display,
      sys.dbms_rcvman.num2displaysize(output_bytes) output_bytes_display,
      sys.dbms_rcvman.num2displaysize(input_bytes_per_sec) input_bytes_per_sec_display,
      sys.dbms_rcvman.num2displaysize(output_bytes_per_sec) output_bytes_per_sec_display, sys.dbms_rcvman.sec2displaytime(elapsed_seconds)time_taken_display, a.con_id
FROM 
  ( SELECT  unique a.session_recid session_key, a.*, decode(autobackup_count, 0, 'NO', 'YES') autobackup_done, decode(status_weight, 2000, 'FAILED', 1900, 'RUNNING WITH ERRORS', 1500, 'RUNNING WITH WARNINGS', 1001, 'RUNNING', 900, 'COMPLETED WITH ERRORS', 500, 'COMPLETED WITH WARNINGS', 001, 'COMPLETED', 'FAILED') status, decode(object_type_weight, 9, 'DB FULL', 8, 'RECVR AREA', 7, 'DB INCR', 6, 'DATAFILE FULL', 5, 'DATAFILE INCR', 4, 'ARCHIVELOG', 3, 'CONTROLFILE', 2, 'SPFILE', 1, 'BACKUPSET', null) input_type, decode(optimized_weight, 1, 'YES', 'NO') optimized, abs(a.end_time-a.start_time)*86400 elapsed_seconds,
    CASE
    WHEN a.input_bytes/decode(a.output_bytes, 0, null, a.output_bytes) > 1
  THEN   a.input_bytes/decode(a.output_bytes, 0, null, a.output_bytes)
    ELSE 1
    END compression_ratio, a.input_bytes/(decode(a.end_time-a.start_time, 0, 1, abs(a.end_time-a.start_time)*86400)) input_bytes_per_sec, a.output_bytes/(decode(a.end_time-a.start_time, 0, 1, abs(a.end_time-a.start_time)*86400)) output_bytes_per_sec
  FROM 
    ( SELECT  session_recid, session_stamp, command_id, min(start_time)
      OVER (partition by session_recid, session_stamp) start_time, max(end_time)
      OVER (partition by session_recid, session_stamp) end_time, sum(input_bytes)
      OVER (partition by session_recid, session_stamp) input_bytes, sum(output_bytes)
      OVER (partition by session_recid, session_stamp) output_bytes, max(status_weight)
      OVER (partition by session_recid, session_stamp)status_weight, max(optimized_weight)
      OVER (partition by session_recid, session_stamp) optimized_weight, max(object_type_weight)
      OVER (partition by session_recid, session_stamp) object_type_weight, decode(count(distinct output_device_type)
      OVER (partition by session_recid, session_stamp), 1, first_value(output_device_type)
      OVER (partition by session_recid, session_stamp), 0, null, '*') output_device_type, sum(autobackup_count)
      OVER (partition by session_recid, session_stamp) autobackup_count, backed_by_osb, con_id
    FROM V$RMAN_BACKUP_SUBJOB_DETAILS) a)a

http://www.itpub.net/thread-2102497-1-1.html

Oracle 数据库中的 `V$RMAN_BACKUP_JOB_DETAILS` 视图是一个非常重要的工具,用于监控和分析 RMAN(Recovery Manager)执行的备份作业。该视图提供了丰富的字段,能够详细描述每个备份任务的执行情况。以下是该视图中一些关键字段的说明: ### 字段说明 - **SESSION_KEY**: 备份会话的唯一标识符,通常用于关联其他 RMAN 相关视图的数据[^1]。 - **SESSION_RECID**: 备份会话记录的唯一标识符,用于在 RMAN 恢复目录中标识特定的备份会话。 - **SESSION_STAMP**: 会话的时间戳,通常用于确保 `SESSION_RECID` 的唯一性[^1]。 - **COMMAND_ID**: 标识发起备份操作的命令 ID,可用于追踪特定的 RMAN 命令执行情况。 - **START_TIME** 和 **END_TIME**: 分别表示备份任务的开始时间和结束时间,用于计算备份任务的执行时间[^1]。 - **INPUT_BYTES** 和 **OUTPUT_BYTES**: 分别表示输入的数据量(即备份的数据量)和输出的数据量(即实际写入磁盘的数据量),可用于评估备份效率。 - **STATUS**: 表示备份任务的最终状态,例如成功、失败等,用于快速判断备份任务的执行结果[^1]。 - **ELAPSED_SECONDS**: 表示备份任务所花费的总时间(以秒为单位),可用于性能分析[^1]。 - **COMPRESSION_RATIO**: 表示压缩比,显示备份过程中数据的压缩效果。 ### 使用方法 #### 查询所有备份任务 可以通过简单的 SQL 查询来获取所有 RMAN 备份任务的详细信息: ```sql SELECT * FROM V$RMAN_BACKUP_JOB_DETAILS; ``` #### 查询特定时间段内的备份任务 如果只想查看某个时间段内的备份任务,可以使用 `WHERE` 子句来过滤 `START_TIME` 或 `END_TIME`: ```sql SELECT * FROM V$RMAN_BACKUP_JOB_DETAILS WHERE START_TIME BETWEEN '2023-01-01' AND '2023-01-31'; ``` #### 查询失败的备份任务 为了查找所有失败的备份任务,可以根据 `STATUS` 字段进行筛选: ```sql SELECT * FROM V$RMAN_BACKUP_JOB_DETAILS WHERE STATUS = 'FAILED'; ``` #### 计算平均备份速度 可以通过 `INPUT_BYTES` 和 `ELAPSED_SECONDS` 字段来计算平均备份速度: ```sql SELECT SESSION_KEY, INPUT_BYTES / ELAPSED_SECONDS AS AVERAGE_SPEED FROM V$RMAN_BACKUP_JOB_DETAILS; ``` #### 监控备份压缩效果 为了监控备份过程中的压缩效果,可以查询 `COMPRESSION_RATIO` 字段: ```sql SELECT SESSION_KEY, COMPRESSION_RATIO FROM V$RMAN_BACKUP_JOB_DETAILS; ``` #### 跨数据库监控 在多数据库环境中,可以通过 `DB_LINK` 来集中监控所有数据库RMAN 备份情况。假设有一个远程数据库 `DB1`,可以通过以下查询来获取其备份信息: ```sql SELECT * FROM V$RMAN_BACKUP_JOB_DETAILS@DB1; ``` 通过这些查询,DBA 可以有效地监控和管理 RMAN 备份任务,及时发现并解决问题,从而确保数据库的安全性和可用性。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值