2026-03-12 20:23:15
This commit is contained in:
102
idev/sp_purge_n_days_10g.sql
Normal file
102
idev/sp_purge_n_days_10g.sql
Normal file
@@ -0,0 +1,102 @@
|
||||
-- +----------------------------------------------------------------------------+
|
||||
-- | Jeffrey M. Hunter |
|
||||
-- | jhunter@idevelopment.info |
|
||||
-- | www.idevelopment.info |
|
||||
-- |----------------------------------------------------------------------------|
|
||||
-- | Copyright (c) 1998-2012 Jeffrey M. Hunter. All rights reserved. |
|
||||
-- |----------------------------------------------------------------------------|
|
||||
-- | DATABASE : Oracle |
|
||||
-- | FILE : sp_purge_n_days_10g.sql |
|
||||
-- | CLASS : Statspack |
|
||||
-- | PURPOSE : This script is responsible for removing all Statspack snapshot |
|
||||
-- | records older than [n] days. Most of the code contained in this |
|
||||
-- | script is modeled after the Oracle supplied sppurge.sql script |
|
||||
-- | but removes by Snapshot date rather than Snapshot IDs. |
|
||||
-- | |
|
||||
-- | Note that this script will either prompt for the number of days |
|
||||
-- | or this parameter can be passed in from another calling |
|
||||
-- | program. |
|
||||
-- | |
|
||||
-- | Note that this script only works with Oracle10g. |
|
||||
-- | |
|
||||
-- | NOTE : As with any code, ensure to test this script in a development |
|
||||
-- | environment before attempting to run it in production. |
|
||||
-- +----------------------------------------------------------------------------+
|
||||
|
||||
SET LINESIZE 145
|
||||
SET PAGESIZE 9999
|
||||
SET FEEDBACK off
|
||||
SET VERIFY off
|
||||
|
||||
DEFINE days_to_keep=&1
|
||||
|
||||
UNDEFINE dbid inst_num snapshots_purged
|
||||
|
||||
WHENEVER SQLERROR EXIT ROLLBACK
|
||||
|
||||
SPOOL sp_purge_&days_to_keep._days_10g.lis
|
||||
|
||||
|
||||
prompt
|
||||
prompt
|
||||
prompt
|
||||
prompt +----------------------------------------------------------------------------+
|
||||
prompt | Get database and instance currently connected to. |
|
||||
prompt +----------------------------------------------------------------------------+
|
||||
|
||||
SET FEEDBACK off
|
||||
|
||||
COLUMN inst_num FORMAT 99999999999999 HEADING "Instance Num." NEW_VALUE inst_num
|
||||
COLUMN inst_name FORMAT a15 HEADING "Instance Name" NEW_VALUE inst_name
|
||||
COLUMN db_name FORMAT a10 HEADING "DB Name" NEW_VALUE db_name
|
||||
COLUMN dbid FORMAT 9999999999 HEADING "DB Id" NEW_VALUE dbid
|
||||
|
||||
SELECT
|
||||
d.dbid dbid
|
||||
, d.name db_name
|
||||
, i.instance_number inst_num
|
||||
, i.instance_name inst_name
|
||||
FROM
|
||||
v$database d
|
||||
, v$instance i
|
||||
/
|
||||
|
||||
|
||||
VARIABLE dbid NUMBER;
|
||||
VARIABLE inst_num NUMBER;
|
||||
VARIABLE inst_name VARCHAR2(20);
|
||||
VARIABLE db_name VARCHAR2(20);
|
||||
VARIABLE num_days NUMBER;
|
||||
VARIABLE snapshots_purged NUMBER;
|
||||
|
||||
BEGIN
|
||||
:dbid := &dbid;
|
||||
:inst_num := &inst_num;
|
||||
:inst_name := '&inst_name';
|
||||
:db_name := '&db_name';
|
||||
:num_days := &days_to_keep;
|
||||
|
||||
:snapshots_purged := statspack.purge( i_num_days => :num_days
|
||||
, i_extended_purge => true
|
||||
, i_dbid => :dbid
|
||||
, i_instance_number => :inst_num);
|
||||
END;
|
||||
/
|
||||
|
||||
SET FEEDBACK on
|
||||
|
||||
prompt
|
||||
prompt
|
||||
prompt
|
||||
prompt +----------------------------------------------------------------------------+
|
||||
prompt | Removed Statspack snapshots older than &days_to_keep days. |
|
||||
prompt +----------------------------------------------------------------------------+
|
||||
|
||||
print snapshots_purged
|
||||
|
||||
SPOOL off
|
||||
|
||||
COMMIT;
|
||||
|
||||
EXIT
|
||||
|
||||
Reference in New Issue
Block a user