Browse By

Reproduzir Test Cases – Oracle Test Case Builder

Oracle Test Case Builder

O objetivo desse post é comentar sobre uma maneira simples e rápida na qual ja existe a um bommmm tempo para se criar um ambiente de testes e reproduzir problemas de execução de querys/procedures /functions e etc que ocorrem em outros databases.
O Oracle Database 11g (e recentemente 10.2.0.4) fornece uma nova ferramenta de diagnóstico chamada SQL Test Case Builder (TCB) na qual nos proporciona criar um ambiente totalmente reproduzível para analise de querys/procedimentos com problemas tanto de performance, bugs (originário de outros bancos) e entre outros problemas, fornecendo informações mais detalhadas e completas para o Suporte da Oracle ou para algum amigo/colega de trabalho para ajuda-lo a analisar seu problema de uma maneira mais rápida e mais precisa.

O Test Case Builder captura algumas informações utilizando o Oracle export (expdp) para exportar a tabela ou conjunto de tabelas bem como todos os objetos envolvidos no test case.

Segue abaixo um resumo das informações exportadas pelo TCB:

  • O SQL Text com problemas ou PL/SQL procedures/packages/functions.
  • Estatísticas do otimizador.
  • Plano de execução.
  • Dados da tabela sendo utilizada no processo (pode exportar uma amostra ou todos os dados da tabela).
  • Meta-data de todos objetos envolvidos.
  • Bind variables.
  • SQL profiles, stored outlines, or other SQL Management Objects.
  • Informações do usuário como privilégios, runtime information (Transient information), acessos e etc.
  • Dynamic sampling results (Transient information).
  • e etc…

Você pode executar essa ferramenta tanto do EM, IPS (Incident Packaging Service) ou pelo sqlplus (nosso caso).

As procedures que devem ser executadas são:

A) dbms_sqldiag.export_sql_testcase: Exporta um SQL Test Case com todas as informações citadas acima.
B) dbms_sqldiag.import_sql_testcase: Importa o SQL testcase.
1) Primeiro passo, crie um diretório no SOURCE, onde ocorre o problema:

SQL> conn wmon/oracle — usuario que executará o procedimento com problema, o owner da sua app na qual esta executando o procedimento .

SQL> create or replace directory DIRWMON as ‘/u01’;
Directory created.

2) Execute o procedimento abaixo para exportar o Test case:

No meu caso a query com problema seria:

select * from TEST_TAB
sql_id = 3nca2r9q08f82

set serveroutput on

SQL> DECLARE
tco clob;
BEGIN
dbms_sqldiag.export_sql_testcase(
directory => ‘DIRWMON’,
sql_text => ‘select * from TEST_TAB’,
user_name => ‘WMON’,
exportData => TRUE,
testcase => tco);
END;
/

(O procedimento acima pode ser utilizado tanto com o sql_text ou o sql_id.)

Após a execução do passo acima, copie todos os arquivos que foram criados no diretório DIRWMON e envie para o Suporte da Oracle para que eles possam reproduzir o seu ambiente.
Agora, se você esta recebendo esses arquivos de algum colega de trabalho, segue abaixo o procedimento para importar as informações no seu banco de reprodução de testes.

 

1) Crie o usuário na qual foi usado para exportar as informações acima.

SQL> create user wmon identified by oracle;
SQL> grant dba to wmon;
2) Crie o diretório no banco na qual estão os arquivos recebidos do processo acima.

SQL> conn wmon/oracle
Connected.

SQL> create or replace directory DIRWMON as ‘/stage’;
3) Utilize o procedimento abaixo para importar as informações no novo ambiente , utilize o arquivo XML *main* que foi criado no SOURCE na qual contém todas as informações necessárias para criar o TCB.
SQL> connect wmon/oracle
begin
dbms_sqldiag.import_sql_testcase
(
directory => ‘DIRWMON’,
filename => ‘wmontcb1_004292F0011main.xml‘,
importData => TRUE
);
end;
/

PL/SQL procedure successfully completed.

4) Analise se os objetos e seus dependentes foram criados no banco de dados TARGET:

SQL> desc TEST_TAB
Name Null? Type
———————————————– ——– ——————————–
ID NOT NULL NUMBER
DESCRIPTION VARCHAR2(50)
5) Pronto,  só resta agora iniciar a analise executando as querys/procedimentos que estão com problemas pois o seu ambiente possui toda a estrutura necessária.

Como citado no início, não é necessário coletar estatísticas ou realizar outras configurações nos objetos criados pois o procedimento ja deixou tudo idêntico ao SOURCE, pois essa é a idéia, reproduzir tudo exatamente do mesmo jeito.

Para encontrar maiores informações sobre o TCB, veja o link abaixo:

TCB

Forte abraço

 

Leave a Reply

Your email address will not be published. Required fields are marked *