Sempre que um DBA necessita ativar o “trace” para analisar a execução da aplicação ou até mesmo um script muitas vezes ele precisa habilitar os parâmetros, que servirão para todo o banco de dados.
Os parâmetros a serem ativados são:
SQL_TRACE = TRUE
USER_DUMP_DEST = <caminho_onde_sera_gravado_o_arquivo_trace>
MAX_DUMP_FILE_SIZE = <“opcional”, determina o tamanho do arquivo de “dump”>
TIMED_STATISTICS = TRUE
Porém muitas vezes não existe a necessidade de se habilitar o “trace” para todo o banco de dados. Quando na verdade desejaria-se verificar um ou outro usuário. Então como proceder ?
Para utilizar esse mecanismo, deve-se utilizar a package DBMS_SYSTEM. Nesta package existe uma procedure chamada SQL_TRACE_IN_SESSION, que permite habilitar/desabilitar o “trace”.
Nota: Para utilizar a package DBMS_SYSTEM, é necessário conectar-se no banco de dados utilizando o usuário SYS e dar acesso de execução para um usuário DBA.
Abaixo estão descritos os passos de como proceder para a ativação do “trace” em uma sessão:
1. Alterar o parâmetro “timed_statistics” no banco de dados:
Usar:
sqlplus system/manager
SQL> alter system set timed_statistics=true;
2. Na sequência verificar qual a sessão que terá o “trace” ativado, para fazê-lo execute o script abaixo:
SQL> select sid, serial#, username
2 from v$session;
SID SERIAL# USERNAME
---------- ---------- ---------------
1 1
2 1
3 1
4 1
5 1
6 1
7 1078 SYSTEM
8 121 SCOTT
Para esse exemplo será utilizada a conexão do usuário (Scott) onde a SID=8 e o SERIAL# = 121.
3. Com os valores das colunas do SID e SERIAL# em mãos podemos agora habilitar o “trace”
para a sessão, usando a seguinte linha de comando.
3. Com os valores das colunas do SID e SERIAL# em mãos podemos agora habilitar o “trace”
para a sessão, usando a seguinte linha de comando.
SQL> exec sys.dbms_system.set_sql_trace_in_session(8,121,true);
Uma vez habilitado o “trace”, a aplicação ou “query” poderá ser executada afim de encontrar os possíveis erros.
4. Para desabilitar o “trace” da sessão deve-se executar o comando.
SQL> exec sys.dbms_system.set_sql_trace_in_session(8,121,false);
5. Para verificar o arquivo de “dump” gerado durante o processo de trace, pode-se executar a query abaixo:
SQL> select value
2 from v$parameter
3 where name='user_dump_dest';
VALUE
--------------------------------
/u02/app/oracle/admin/V804/udump
6. O resultado indicará o diretório onde o arquivo de “trace” foi gerado. Para identificar qual o nome do arquivo que possui o trace da sessão, execute o seguinte comando:
$ grep 8.121 *
Este comando lhe retornará o seguinte resultado.
ora_26384.trc:***SESSIONID:(8.121) 2000.02.25.16.38.55.538
This way you see the trace file generated is ora_26384.trc
7. Para ver os planos de execução do arquivo de trace execute:
$ tkprof ora_26384.trc trace_scott.txt explain=
Onde o arquivo “trace_scott.txt” é o nome de um arquivo onde serão apresentados os planos de execução.
Onde o arquivo “trace_scott.txt” é o nome de um arquivo onde serão apresentados os planos de execução.
Rubens Oliveira
DBA Oracle Consultor
olivert.dba@consultant.com