1-- 查看 AWR 配置,记录一下
2SQL> select snap_interval from wrm$_wr_control;
3
4-- 禁用 AWR
5SQL> execute dbms_workload_repository.modify_snapshot_settings(interval => 0);
6
7-- 重启数据库到受限模式
8SQL> shutdown immediate
9SQL> startup restrict
10
11-- 执行 catnoawr 脚本删除 AWR,12.2 以上版本可能会遇到 ORA-600 [opiodr:] 报错
12SQL> start $ORACLE_HOME/rdbms/admin/catnoawr.sql
13
14-- 检查是否所有 AWR 相关对象都被删除了
15SQL> SELECT 'DROP TABLE ' || table_name || ' CASCADE CONSTRAINTS;'
16FROM dba_tables where table_name like 'WRM$_%' or table_name like 'WRH$_%' or table_name like 'AWR%';
17
18-- 如果没有删除完成,可以手动执行删除
19-- WRH$_SYSMETRIC_HISTORY_BL 在 19c 会被保留
20SQL> drop table WRH$_SYSMETRIC_HISTORY_BL CASCADE CONSTRAINTS;
21drop type AWR_OBJECT_INFO_TABLE_TYPE;
22drop type AWR_OBJECT_INFO_TYPE;
23drop table WRH$_PLAN_OPERATION_NAME;
24drop table WRH$_PLAN_OPTION_NAME;
25drop table WRH$_MV_PARAMETER;
26drop table WRH$_MV_PARAMETER_BL;
27drop table WRH$_DYN_REMASTER_STATS;
28drop table WRH$_PERSISTENT_QMN_CACHE;
29drop table WRH$_DISPATCHER;
30drop table WRH$_SHARED_SERVER_SUMMARY;
31drop table WRM$_WR_USAGE;
32drop table WRM$_SNAPSHOT_DETAILS;
33
34-- 重建 AWR
35SQL> PURGE RECYCLEBIN;
36SQL> start $ORACLE_HOME/rdbms/admin/catawrtb.sql
37SQL> start $ORACLE_HOME/rdbms/admin/execsvrm.sql
38SQL> start $ORACLE_HOME/rdbms/admin/utlrp.sql
39
40-- 重启数据库
41SQL> shutdown immediate
42SQL> startup
43
44-- 恢复 AWR 配置
45SQL> execute dbms_workload_repository.modify_snapshot_settings(interval => 60);
46
47-- 手动创建快照
48SQL> exec dbms_workload_repository.create_snapshot;
49
50-- 手动创建 SYS.WRMS$_SNAPSHOT 表
51CREATE TABLE "SYS"."WRMS$_SNAPSHOT"
52( "SNAP_ID" NUMBER NOT NULL ENABLE,
53"DBID" NUMBER NOT NULL ENABLE,
54"INSTANCE_NUMBER" NUMBER NOT NULL ENABLE,
55"STARTUP_TIME" TIMESTAMP (3) NOT NULL ENABLE,
56"BEGIN_INTERVAL_TIME" TIMESTAMP (3) NOT NULL ENABLE,
57"END_INTERVAL_TIME" TIMESTAMP (3) NOT NULL ENABLE,
58"FLUSH_ELAPSED" INTERVAL DAY (5) TO SECOND (1),
59"SNAP_LEVEL" NUMBER,
60"STATUS" NUMBER,
61"ERROR_COUNT" NUMBER,
62"BL_MOVED" NUMBER,
63"SNAP_FLAG" NUMBER,
64"SNAP_TIMEZONE" INTERVAL DAY (0) TO SECOND (0),
65"STAGE_INST_ID" NUMBER NOT NULL ENABLE,
66"STAGE_ID" NUMBER NOT NULL ENABLE
67);