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