2026-05-01 14:48:00
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
## Purge all AWR snapshots
|
||||
|
||||
> To run from `CDB$ROOT` and not inside a **PDB**.
|
||||
|
||||
```sql
|
||||
DECLARE
|
||||
v_lo_snap_id NUMBER;
|
||||
v_hi_snap_id NUMBER;
|
||||
v_awr_dbid NUMBER;
|
||||
BEGIN
|
||||
-- 1. Get the DBID that actually exists in the AWR repository
|
||||
SELECT DISTINCT dbid INTO v_awr_dbid FROM dba_hist_snapshot WHERE ROWNUM = 1;
|
||||
|
||||
-- 2. Find the min and max snapshot IDs for that specific DBID
|
||||
SELECT min(snap_id), max(snap_id)
|
||||
INTO v_lo_snap_id, v_hi_snap_id
|
||||
FROM dba_hist_snapshot
|
||||
WHERE dbid = v_awr_dbid;
|
||||
|
||||
IF v_lo_snap_id IS NOT NULL THEN
|
||||
DBMS_OUTPUT.PUT_LINE('Deleting snapshots for DBID ' || v_awr_dbid ||
|
||||
' from ' || v_lo_snap_id || ' to ' || v_hi_snap_id);
|
||||
|
||||
DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE(
|
||||
low_snap_id => v_lo_snap_id,
|
||||
high_snap_id => v_hi_snap_id,
|
||||
dbid => v_awr_dbid
|
||||
);
|
||||
|
||||
DBMS_OUTPUT.PUT_LINE('AWR Snapshots cleared.');
|
||||
ELSE
|
||||
DBMS_OUTPUT.PUT_LINE('No snapshots found in dba_hist_snapshot.');
|
||||
END IF;
|
||||
EXCEPTION
|
||||
WHEN TOO_MANY_ROWS THEN
|
||||
DBMS_OUTPUT.PUT_LINE('Error: Multiple DBIDs found in AWR. Please specify one manually.');
|
||||
WHEN NO_DATA_FOUND THEN
|
||||
DBMS_OUTPUT.PUT_LINE('Error: No snapshot data exists to delete.');
|
||||
END;
|
||||
/
|
||||
```
|
||||
|
||||
Verify:
|
||||
```sql
|
||||
select min(snap_id),max(snap_id), dbid from dba_hist_snapshot group by dbid;
|
||||
```
|
||||
|
||||
To take a snapshot:
|
||||
```sql
|
||||
execute dbms_workload_repository.CREATE_SNAPSHOT;
|
||||
```
|
||||
Reference in New Issue
Block a user