oracle 删除awr,Oracle技术之AWR概述―删除SNAPSHOT

前面介绍了如何迁移AWR数据,这里介绍如何删除不再需要的SNAPSHOT数据。

对于当前数据库生成的SNAPSHOT,是不需要手工处理的,和SNAPSHOT生成一样,Oracle在自动任务中会根据SNAPSHOT的保留期自动删除过期的快照信息。

SQL> select dbid, retention from dba_hist_wr_control;

DBID RETENTION

---------- ---------------------------------------------------------------------------

3812548755 +00007 00:00:00.0

96312462 +40150 00:00:00.0

3944144691 +40150 00:00:00.0

SQL> select dbid from v$database;

DBID

----------

3812548755

通过dba_hist_wr_control视图可以查询数据库中不同DBID对应的保留期。对于当前数据库,保留期是7天,而对于利用AWR迁移导入的SNAPSHOT而言,保留期设置超过了100年,也就是说Oracle不会自动清除这些SNAPSHOT。

如果修改对应DBID的保留期:

SQL> exec dbms_workload_repository.modify_snapshot_settings(1440, dbid => 96312462)

PL/SQL procedure successfully completed.

SQL> select dbid, retention from dba_hist_wr_control;

DBID RETENTION

---------- ---------------------------------------------------------------------------

3812548755 +00007 00:00:00.0

96312462 +00001 00:00:00.0

3944144691 +40150 00:00:00.0

但是测试发现,采用方法并不会导致Oracle自动清除导入的AWR快照数据。

那么只有使用dbms_workload_repository包来手工完成这个操作:

SQL> select min(snap_id), max(snap_id)

2  from dba_hist_snapshot

3  where dbid = 3944144691;

MIN(SNAP_ID) MAX(SNAP_ID)

------------ ------------

45189        47802

SQL> exec dbms_workload_repository.drop_snapshot_range(45189, 47802, 3944144691)

PL/SQL procedure successfully completed.

SQL> select * from dba_hist_snapshot where dbid = 3944144691;

no rows selected

这个操作很快可以完成,其实如果检查数据字典可以发现,Oracle仅仅修改了对应SNAPSHOT的状态,而并没有删除快照:

SQL> select dbid, status, count(*)

2  from wrm$_snapshot

3  group by dbid, status;

DBID     STATUS   COUNT(*)

---------- ---------- ----------

3812548755          0         89

96312462          0         50

3944144691          2       2614

而检查DBA_HIST_SNAPSHOT视图可以发现,这个视图的定义是只显示STATUS为2的记录:

SQL> select text

2  from dba_views

3  where view_name = 'DBA_HIST_SNAPSHOT';

TEXT

--------------------------------------------------------------------------------

select snap_id, dbid, instance_number, startup_time,

begin_interval_time, end_interval_time,

flush_elapsed, snap_level, error_count

from WRM$_SNAPSHOT

where status = 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值