segunda-feira, 17 de março de 2014

Exportando estatísticas entre bancos de dados Oracle


Durante um processo de migração de plataforma, muitas vezes, o DBA precisará exportar as estatísticas do banco de dados na ORIGEM para a base de dados no DESTINO. Neste artigo apresentaremos os passos para realizarmos a exportação das estatísticas do banco de dados.

Passos:

1.   Criação do usuário dono da tabela de estatísticas no banco de dados na ORIGEM.

SQL> create user dono_stats identified by x
default tablespace tools
temporary tablespace temp;

SQL> grant dba to dono_stats;


2.   Criar a tabela de estatísticas para exportação.

SQL> exec DBMS_STATS.CREATE_STAT_TABLE ('DONO_STATS','STATTAB','TOOLS');

3.   Exportar as estatísticas para a tabela "STATTAB".

SQL> exec DBMS_STATS.EXPORT_SCHEMA_STATS (ownname=>'SCOTT',stattab=>'STATTAB',statown=>'DONO_STATS');

4.   No banco de dado, no DESTINO, deve-se criar o usuário para receber as estatísticas para importação no banco de dados.

SQL> create user dono_stats identified by x
default tablespace tools
temporary tablespace temp;

SQL> grant dba to dono_stats;

5.   Criar a tabela de estatísticas para importação.

SQL> exec DBMS_STATS.CREATE_STAT_TABLE ('DONO_STATS','STATTAB','TOOLS');

6.   Importar os dados da estatísticas da tabela "STATTAB" na ORIGEM para o DESTINO.

SQL> insert into dono_stats.stattab select * from dono_stats.stattab@db_link;

SQL> commit;


7.   Validar a importação na tabela "STATTAB" no DESTINO.

SQL> select count(*) from DONO_STATS.STATTAB;

8.   Realizar a importação das estatisticas no "owner" correspondente.

SQL>exec DBMS_STATS.EXPORT_SCHEMA_STATS (ownname=>'SCOTT',stattab=>'STATTAB',statown=>'DONO_STATS');




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



MSc. Rubens Oliveira
DBA Oracle Consultor
olivert.dba@consultant.com

sábado, 1 de março de 2014

Como transferir os SQL Profiles de um banco de dados Oracle para outro.



Neste artigo vamos demonstrar como transferir os SQL Profiles que estão no banco de dados Oracle para outro. Este recurso é muito utilizado para os casos de migrações de plataforma, onde o banco é recriado ou mesmo feito um "upgrade".

Vamos aos passos:

1.     Primeiro deve-se criar uma tabela de "staging" para armazenar os "SQL Profiles" para serem levados ao banco DESTINO, usar:

SQL> EXEC DBMS_SQLTUNE.CREATE_STGTAB_SQLPROF (table_name => 'PROFILE_SQLTAB');

2.     Depois copiar os "SQL Profiles", conectado com o usuário "SYS" para a tabela "staging", usar :

SQL> EXEC DBMS_SQLTUNE.PACK_STGTAB_SQLPROF (profile_category => '%', staging_table_name => 'PROFILE_SQLTAB');

NOTA: Para copiar todos os "SQL Profiles" do banco de dados, deve-se utilizar '%'.

3.  Exportar a tabela "staging" ou criar a tabela utilizando CTAS (create table as select), na base de destino.

4.     Importar a tabela no banco de dados DESTINO, se for utilizado o processo de cópia via CTAS, não é necessário importar a tabela.

5.     Para colocar os "SQL Profiles" no banco de destino usar o comando abaixo:

SQL> EXEC DBMS_SQLTUNE.UNPACK_STGTAB_SQLPROF(replace => TRUE, staging_table_name => 'PROFILE_SQLTAB');

NOTA:  Ao utilizar a opção REPLACE=TRUE, os "SQL Profiles" serão sobrepostos no banco de dados DESTINO.

Para verificar os  "SQL Profiles" importados podem ser verificados utilizando a consulta abaixo.


COLUMN category FORMAT a10
COLUMN sql_text FORMAT a20

SELECT NAME, SQL_TEXT, CATEGORY, STATUS FROM DBA_SQL_PROFILES;


Referências: Oracle® Database PL/SQL Packages and Types Reference 11g
                    Oracle® Database Performance Tuning Guide 11gR2 (11.2)
                    Oracle® Database Administrator´s Guide 11gR2 (11.2)



MSc. Rubens Oliveira
DBA Oracle Consultor
olivert.dba@consultant.com