segunda-feira, 18 de novembro de 2013

Recriando o repositório do AWR manualmente


O repositório do AWR (Automatic Workload Repository) é gerado automaticamente durante a criação do banco de dados, porém algumas vezes o DBA pode ter a necessidade de recriá-lo, neste artigo a demonstraremos os passos necessários.

 

1.   Conectar-se no SQL*Plus

 

$ sqlplus / as sysdba

 

SQL*Plus: Release 11.2.0.1.0 Production on Mon Nov 4 10:43:53 2013

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,

Data Mining and Real Application Testing options

 

SQL>

 

2.   Verificar os seguintes parâmetros (cluster_database, statistics_level, sga_target),

 

SQL> show parameter cluster_database;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
cluster_database                     boolean     TRUE
cluster_database_instances           integer     2

SQL> show parameter statistics_level

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
statistics_level                     string      TYPICAL

SQL> show parameter sga_target

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
sga_target                           big integer 8000M


Importante: Caso os valores sejam diferentes dos apresentados acima, deve-se alterar para os valores propostos para que o AWR funcione corretamente.

3.   “Restartar” o banco de dados em modo restrito.

SQL> shutdown immediate;

Database closed.
Database dismounted.
ORACLE instance shutdown.

SQL> startup restrict;

ORACLE instance started.

4.   Para remover o catálogo do AWR executar o script abaixo:

SQL> @$ORACLE_HOME/rdbms/admin/catnoawr.sql

5.   Para recriar o catálogo do AWR executar.

SQL> alter system flush shared_pool;

System altered.

SQL> @$ORACLE_HOME/rdbms/admin/catawrtb.sql
SQL> @$ORACLE_HOME/rdbms/admin/utlrp.sql
SQL> @$ORACLE_HOME/rdbms/admin/execsvrm.sql

6.   “Restartar” o banco de dados.

SQL> shutdown immediate;

Database closed.
Database dismounted.
ORACLE instance shutdown.

SQL> startup;

ORACLE instance started.

7.   Verificar objetos inválidos no banco de dados, caso você encontre deve-se recompilar os objetos.

SQL> @$ORACLE_HOME/rdbms/admin/utlrp.sql

8.   Verificar os “status” dos componentes do banco de dados, executar a consulta abaixo:

SQL> SET PAGESIZE 500
SQL> SET LINESIZE 100
SQL> SELECT SUBSTR(COMP_NAME,1,40) COMP_NAME, STATUS, SUBSTR(VERSION,1,10) VERSION
 FROM DBA_REGISTRY
ORDER BY COMP_NAME;

COMP_NAME                                STATUS      VERSION
---------------------------------------- ----------- ----------
JServer JAVA Virtual Machine             VALID       11.2.0.1.0
Oracle Database Catalog Views            VALID       11.2.0.1.0
Oracle Database Java Packages            VALID       11.2.0.1.0
Oracle Database Packages and Types       VALID       11.2.0.1.0
Oracle Enterprise Manager                VALID       11.2.0.1.0
Oracle Expression Filter                 VALID       11.2.0.1.0
Oracle Real Application Clusters         VALID       11.2.0.1.0
Oracle Rules Manager                     VALID       11.2.0.1.0
Oracle Text                              VALID       11.2.0.1.0
Oracle Workspace Manager                 VALID       11.2.0.1.0
Oracle XDK                               VALID       11.2.0.1.0
Oracle XML Database                      VALID       11.2.0.1.0

12 rows selected. 

SQL> SELECT SUBSTR(OBJECT_NAME,1,40) OBJECT_NAME, SUBSTR(OWNER,1,15) OWNER,OBJECT_TYPE
  FROM DBA_OBJECTS
 WHERE STATUS='INVALID'
 ORDER BY OWNER, OBJECT_TYPE;

no rows selected 

SQL> SELECT OWNER,OBJECT_TYPE,COUNT(*)
  FROM DBA_OBJECTS
 WHERE STATUS='INVALID'
 GROUP BY OWNER,OBJECT_TYPE
 ORDER BY OWNER,OBJECT_TYPE;

no rows selected

Importante: Caso algum componente ou objeto esteja inválido no banco de dados, deve-se providenciar a validação para o funcionamento adequado do AWR.

9.   Gerar o primeiro “snapshot” no AWR, usar:

SQL> exec dbms_workload_repository.create_snapshot;

PL/SQL procedure successfully completed.

Com o primeiro “snapshot” as tabelas do AWR irão armazenar as estatísticas do banco de dados.

10. Verificar a periodicidade de atualização do AWR, executar a consulta abaixo:

SQL> SET LINES 200
SQL> COL SNAP_INTERVAL FOR A20
SQL> COL RETENTION     FOR A20
SQL>
SQL> SELECT * FROM DBA_HIST_WR_CONTROL;

      DBID SNAP_INTERVAL        RETENTION            TOPNSQL
---------- -------------------- -------------------- ----------
9999000001 +00000 01:00:00.0    +00020 00:00:00.0    DEFAULT

O resultado da consulta mostra que o AWR será executado em intervalos de uma hora e a retenção dos dados é de vinte dias (em vermelho).


Referências: Oracle® Database Performance Tuning Guide 11gR2 (11.2)
                    Oracle® Database Concepts 11gR2 (11.2)




MSc. Rubens Oliveira
DBA Oracle Consultor