Sp purge 30days 10g

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Script SQL*Plus de diagnostic (Statspack)
Voir aussi Sp purge · Sp purge 30days 9i

Sp purge 30days 10g supprime tous les snapshots Statspack antérieurs à un nombre de jours donné (30 par défaut), en s'appuyant sur la fonction native statspack.purge disponible à partir d'Oracle 10g — beaucoup plus simple et plus sûr qu'une purge manuelle table par table.

Adapté pour être planifié quotidiennement (via DBMS_JOB ou cron + script shell) afin d'éviter la croissance indéfinie du repository PERFSTAT. Pour Oracle 9i, qui ne dispose pas de statspack.purge, voir Sp purge 30days 9i.

Script

-- Supprime les snapshots Statspack antérieurs à &days_to_keep jours,
-- via la fonction native statspack.purge (Oracle 10g et suivants).

SET LINESIZE 145
SET PAGESIZE 9999
SET FEEDBACK  off
SET VERIFY    off

DEFINE days_to_keep = 30

WHENEVER SQLERROR EXIT ROLLBACK

SPOOL sp_purge_&days_to_keep._days_10g.lis

prompt Récupération de la base et de l'instance courantes :

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;
/

prompt Nombre de snapshots supprimés (plus vieux que &days_to_keep jours) :
print snapshots_purged

SPOOL off

COMMIT;

EXIT

Voir aussi