Las STATPACKS

Quien alguna vez no habra protestado para instalar las statpack en oracle, Este documento lo aporto una amiga de Madrid, Alicia Lopez Serrano (DBA Oracle)
1. pasos necesarios para la automatización de la toma de datos de una base de datos

En las base de datos que estén en Oracle8i deberemos activar la temporización de las estadísticas, para ello ejecutaremos en la base de datos con un usuario con permisos de DBA la sentencia:

 Alter system set timed_statistics=true;

 En Oracle9i esto no sería necesario puesto que todas las bases de datos son creadas por defecto con este parámetro a TRUE.

 A continuación vemos los pasos necesarios para la utilización del paquete dbms_statspack que se encarga de tomar las imágenes de las estadísticas internas de funcionamiento de la base de datos.

 

1.- Creamos un tablespace de 100 Mbytes para el usuario PERFSTAT, propietario de los objetos donde se almacenarán las estadísticas de funcionamiento de la base de datos.

 create tablespace perfstat datafile '/database/x08/perfstat_x0801.dbf' size 100M extent management local autoallocate;

 Esta sentencia deberemos particuralizarla para los puntos de montaje de cada máquina en particular, en cuanto al nombre del fichero se refiere. 

2.- Lanzamos como el usuario propietario de la base de datos, internal para Oracle8i y sys para Oracle9i, el script $ORACLE_HOME/rdbms/admin/spcreate. Nos pedirá el tablespace por defecto para el usuario que será PERFSTAT y el tablespace temporal, que será TEMPORARY_DATA. En Oracle9i además pide la clave del usuario PERFSTAT, que recomendamos que se ponga igual que el nombre.

 En caso de que en este paso nos encontremos con alñgún problema deberemos ejecutar el script $ORACLE_HOME/rdbsm/admin/spdrop para tomar todos los objetos relacionados con el usuario creado.

 3.- Creamos el job con el script proporcionado por Oracle, $ORACLE_HOME/rdbms/admin/spauto.sql, junto con las modificaciones necesarias nuestras como indicamos a continuación en esta nota, y que tomará una imagen de la base de datos cada hora. Para ello deberemos conectarnos a la base de datos con el usuario PERFSTAT y la clave que le hayamos puesto en su creación en el paso 1. A continuación tecleamos los siguiente:

 spool spauto.lis

 --

--  Programa la toma de una imagen cada hora.

 

variable          v_num_job   number;

variable          v_num_ins   number;

begin

      select instance_number into :v_num_ins from v$instance;

      dbms_job.submit(:v_num_job,

            'statspack.snap(i_snap_level=>10, i_modify_parameter=>''true'');',

            trunc(sysdate+1/24,'HH'),

            'trunc(sysdate+1/24,''HH'')',

            TRUE,

            :v_num_ins);

      commit;

end;

/

prompt

prompt  Número de job para la recolección automática de estadíticas para la instancia.

prompt  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

prompt  Este número será necesario cuando se modifique o borre el job

prompt  El job:

print :v_num_job

 

prompt

prompt  Procesos de encolados de jobs.

prompt  ~~~~~~~~~~~~~~~~~~~~~~

prompt  Debajo el actual valor del parámetro the job_queue_processes en el init.ora

prompt  El valor de este parámetro debe ser mayor que 0 para que funcione la

prompt  recolección de estadísticas automáticamente.

show parameter job_queue_processes

prompt

 

prompt

prompt  Próxima ejecución planificada   

prompt  ~~~~~~~~~~~~~~~~~~~~~

prompt  La próxima ejecución planificada del job es:

Select

      job, next_date, next_sec

from

      user_jobs

where

      job = :jobno;

spool off;

 La modificación con respecto al que viene por defecto con la instalación de Oracle es el nivel con el cual se recogen las estadísticas elevándola de 5 a 10, lo cual permite recoger las estadísticas de los latchs, bloqueos internos de las estructuras internas de la base de datos, de los procesos hijos, que en caso de problemas con el rendimiento tendríamos mucha más información para afrontar el problema.

 Una vez creado el job será necesarios extraer los informes, para lo cual deberemos ejecutar el script $ORACLE_HOME/rdbms/admin/spreport y darle los identificadores de lasa imágines inicial y final, así como el nombre del informe, como podemos ver a continuación:

 13:38:27 SQL/PERFSTAT/x08>@c:\des_817\rdbms\admin\spreport

    DB Id    DB Name      Inst Num Instance

----------- ------------ -------- ------------

  933643006 X08                 1 x08

 Completed Snapshots

                            Snap                    Snap

Instance     DB Name         Id   Snap Started    Level Comment

------------ ------------ ----- ----------------- ----- ----------------------

x08          X08              1 27 Dic 2004 11:09     5

                              2 27 Dic 2004 11:45    10

                              3 27 Dic 2004 12:07    10

                              4 27 Dic 2004 12:38    10

                              5 27 Dic 2004 13:00    10

                              6 27 Dic 2004 14:00    10

 

 

Specify the Begin and End Snapshot Ids

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Enter value for begin_snap: 2

Begin Snapshot Id specified: 2

 

Enter value for end_snap: 3

End   Snapshot Id specified: 3

 

 

Specify the Report Name

~~~~~~~~~~~~~~~~~~~~~~~

The default report file name is sp_2_3.  To use this name,

press to continue, otherwise enter an alternative.

Enter value for report_name: informe_prueba

 A partir de aquí nos mostraría toda la información que extrae y que podremos encontrar en el fichero informe_prueba.lst.

Esto es todo amigos... 

Espero haberlos ayudado.. 

Comentarios

Entradas populares de este blog

Instalar la utilidad STATSPACK. Crear snapshots y generar informe.

Fragmentacion de Tablespaces.

Top 10 de los queries que estan en memoria.