Ola pessoal, Todo DBA ou Desenvolvedor que programa em PL/SQL ha algum tempo ou participou de algum curso sobre essa linguagem, provavelmente sabe que existem 2 modos de compilacao de blocos PL/SQL: nativo e interpretado, e que o modo interpretado pode ser compilado para debug ou nao! O modo de compilacao interpretado e o modo de compilacao padrao e e o mais utilizado. Poucos utilizam o modo nativo, que apesar de ser mais rapido, possui algumas desvantagens, tais como: perda da portabilidade, nao permite debugar o codigo PL/SQL e o tempo de compilacao e mais demorado. As 2 primeiras desvantagens sao as que mais pesam, por isso, a maioria compila seus blocos PL/SQL em modo interpretado, e muitos nem sabem da possibilidade de se efetuar a compilacao em modo nativo. A compilacao em modo nativo e indicada para otimizar a performance de casos muito especificos, que nao sao o foco deste artigo, portanto, apenas informo que explico isso no modulo extra de PL/SQL Tuning dos treinamentos PL/SQL Essentials. Na compilacao interpretada existem tambem 2 metodos de compilacao: normal (ou nodebug) e debug. A compilacao em modo debug deixa a execucao do codigo mais lenta e e recomendada somente quando for realmente necessario debugar um bloco PL/SQL (ver tutorial Developing and Debugging PL/SQL using Oracle SQL Developer), caso contrario, efetue a compilacao sempre no modo normal (nodebug). Para que voce entenda melhor o que estou comentando e veja o quanto realmente o codigo compilado em modo debug pode ser mais lento, veja os testes abaixo que eu fiz, criando 2 Stored Procedures que fazem a mesma coisa (um calculo hipotetico simples) e que foram compilados, um em modo debug, e o outro em modo normal, e por fim, compare o tempo de execucao deles: 1- Criando a procedure SP_TESTA_DEBUGCOMPILE em modo debug:ALTER SESSION SET PLSQL_OPTIMIZE_LEVEL=2;ALTER SESSION SET PLSQL_DEBUG = TRUE;create or replace procedure sp_testa_debugcompile is v_number number := 1;begin v_number := 1 * v_number + 2 * v_number + 3 * v_number;end;/2- Criando a procedure SP_TESTA_NODEBUGCOMPILE em modo normal:ALTER SESSION SET PLSQL_OPTIMIZE_LEVEL=2;ALTER SESSION SET PLSQL_DEBUG = FALSE;create or replace procedure sp_testa_nodebugcompile is v_number number := 1;begin v_number := 1 * v_number + 2 * v_number + 3 * v_number;end;/3- Chamando a procedure SP_TESTA_DEBUGCOMPILE para medir o seu desempenho:begin for i in 1..9999999 loop sp_testa_debugcompile; end loop;end;Tempo medio de 3 execucoes dela: ( 8,372s + 8.354s + 8.566s ) / 3 = 8,43s4- Chamando a procedure SP_TESTA_NODEBUGCOMPILE para medir o seu desempenho:begin for i in 1..9999999 loop sp_testa_nodebugcompile; end loop;end;Tempo medio de 3 execucoes dela: ( 2,185s + 2.257s + 2,22s ) / 3 = 2,22sObs.: As procedures foram compiladas e executadas em um Oracle Database Enterprise Edition 11.2.0.4. Se voce for reproduzir os mesmos testes no Oracle 12c, leia o doc Database PL/SQL Language Reference, pois ocorreram mudancas no 12c para efetuar a compilacao em modo debug. CONCLUSAO Veja que num teste simples chamando as 2 procedures 9.999.999 vezes dentro de um loop, o tempo de execucao total daquela que foi compilada em modo interpretado "normal" foi 3,80 X mais rapido do que