oracle 删除awr,AWR(六)-如何删除AWR数据 | 信春哥,系统稳,闭眼上线不回滚!

之前写了些关于迁移AWR数据的文章(详见以下列表),在我的数据库中,经常会导入很多客户数据库的AWR数据,所以过一段时间就要对这些历史数据进行清理。

清理AWR数据利用dbms_swrf_internal包就可以很容易实现。比如清理前我的数据库里存在以下的数据库AWR信息。

Instances in this Workload Repository schema

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

DB Id Inst Num DB Name Instance Host

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

* 1520519778 1 STREAM stream STREAM

2854872633 2 TGJZL tgjzl2 tgsjzl2

1645778343 2 B1ACDB B1ACDB2 acdbs

2400249746 1 CNDERPDB cnderpdb1 p5a1

2400249746 2 CNDERPDB cnderpdb2 p5b1

2854872633 1 TGJZL tgjzl1 tgsjzl1

1645778343 1 B1ACDB B1ACDB1 acdbm

1247539900 1 B1EDB B1EDB EDB

可以看出,DB_ID为2854872633的数据库也就是DB_NAME为TGJZL的数据库和DB_ID为2400249746也就是DB_NAME为CNDERPDB的数据库还有DB_ID为1645778343 的数据库是RAC环境,DB_NAME为B1EDB的数据库是单实例环境,对于RAC环境,我们只需要清理一次就可以,ORACLE会自动将实例1和实例2的AWR信息都清理掉。下面演示下如何利用dbms_swrf_internal包来清理AWR数据。

SQL> exec dbms_swrf_internal.unregister_database(2854872633);

PL/SQL 过程已成功完成。

SQL> exec dbms_swrf_internal.unregister_database(1645778343);

PL/SQL 过程已成功完成。

SQL> exec dbms_swrf_internal.unregister_database(2400249746);

PL/SQL 过程已成功完成。

SQL> exec dbms_swrf_internal.unregister_database(1247539900);

PL/SQL 过程已成功完成。

此时,我的数据库中只剩本地数据库的AWR信息。

DB Id Inst Num DB Name Instance Host

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

* 1520519778 1 STREAM stream STREAM

如果要清理本地数据库的AWR信息,dbms_swrf_internal包就无能为力了。

SQL> exec dbms_swrf_internal.unregister_database(1520519778);

BEGIN dbms_swrf_internal.unregister_database(1520519778); END;

*

第 1 行出现错误:

ORA-13521: 不允许对本地数据库 ID (1520519778) 执行注销操作

ORA-06512: 在 "SYS.DBMS_SWRF_INTERNAL", line 99

ORA-06512: 在 line 1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值