Cómo reinstalar Oracle statspack

Statspack es un conjunto de herramientas de monitorización y rendimiento que permiten obtener estadísticas e instantáneas de las bases de datos Oracle.

En este artículo planteo dos escenarios; uno en el que la instalación se realiza en limpio, desde cero, y otro en el que lo reinstalamos debido a un problema en la instalación actual. Para la instalación en limpio, simplemente seguid los pasos del punto 2.

Eliminar esquema actual de statspack

Por defecto, statspack se instala en el schema PERFSTAT. Si tenemos algún problema en el mismo, la solución más rápida es «reinstalarlo», podemos hacerlo borrando y creando el schema gracias al script spdrop.SQL.

El script lo ejecutamos con un usuario con privilegios de SYSDBA, lo que hace internamente es eliminar las tablas, sinónimos y finalmente el usuario:

SQL> CONNECT / AS SYSDBA
SQL> @spdrop

Algunos ejemplos de errores que pueden provocar la necesidad de reinstalar statspack:

10:32:56 server1:SYS.BD1>ALTER PACKAGE STATSPACK COMPILE BODY;
ALTER PACKAGE STATSPACK COMPILE BODY
*
ERROR at line 1:
ORA-04043: el objeto STATSPACK no existe
BEGIN perfstat.statspack.snap; END;

*
ERROR at line 1:
ORA-04063: package body "PERFSTAT.STATSPACK" tiene errores
ORA-06508: PL/SQL: no se ha encontrado la unidad de programa llamada :
"PERFSTAT.STATSPACK"
ORA-06512: en l�nea 1

Instalar statspack

Una vez eliminado, o en caso de instalación nueva, la instalación es sencilla, simplemente se ejecuta este otro script SPCREATE.SQL, que se encarga de crear todo el entorno de statspack:

SQL> CONNECT / AS SYSDBA
SQL> @spcreate

En caso de que no sea una reinstalación, tened en cuenta que habrá que disponer de un tablespace para almacenar las tablas (PERFSTAT tablespace, por ejemplo). También habrá que asignar una contraseña para el usuario PERFSTAT. Ejemplo ed creación de TBS:

SQL> create tablespace perfstat
2  datafile '/u01/oradata/prodb1/perfstat.dbf'
size 500m;

Una vez instalado, ya se pueden ejecutar snapshots de statspack:

SQL>  CONNECT perfstat/perfstat
SQL>  EXECUTE statspack.snap;