Use the new PL/SQL compiler initialization parameters

PL/SCOPE

Com o PL/SCOPE, podemos obter informações sobre todos os identificadores na hora de compilação de uma procedure por exemplo. Isso é muito útil quando pegamos um código legado e apenas olhando para ele fica difícil entender o esse código realmente esta fazendo. Com a ajuda do PL/SCOPE, ele irá armazenar linha a linha, todas variáveis, parâmetros, declarações, uso, referências, e etc. Com isto poderemos entender o que um código legado faz e utiliza. Veja um exemplo abaixo.

ALTER SESSION SET plscope_settings = 'identifiers:all';
/

CREATE OR REPLACE PROCEDURE p1(
  p_a IN NUMBER,
  p_b IN OUT NUMBER
  ) IS
BEGIN
  p_b := p_a+p_b;
END p1;
/

SELECT LPAD(' ', level*2, ' ') || name as name, type, usage, line, col
FROM   user_identifiers
START WITH usage_context_id = 0
CONNECT BY PRIOR usage_id = usage_context_id;
/

Primeiro foi alterado o parâmetro para salvar a collection do PL/Scoper, o valor default é identifiers:none. Logo após criado uma procedure simples, apenas de teste e depois disto f\oi feita uma consulta na view user_identifiers, o que nos retornou o seguinte:

Repare que linha a linha vamos verificando o que foi feito. Isto inclue declaração, definição, referência e atribuição. Vamos analisando todos os passos de um subprograma. Se ele fizer uma chamada a outro subprograma isto também será listado.

Todos esses dados são armazenados na tablespace SYSAUX. Podemos imaginar que aplicações grandes irão armazenar centenas de dezenas de linhas. Se estiver preocupado com o espaço, poderemos verificar isto na view v$sysaux_occupants com a seguinte query.

SELECT space_usage_kbytes
FROM v$sysaux_occupants
WHERE occupant_name='PL/SCOPE';
/

E para verificar quais programas foram compilados com PL/SCOPE, é só utilizar a seguinte query.

SELECT name, PLSCOPE_SETTINGS
FROM user_plsql_object_settings;
/

PL/SQL Native Compiler

Para armazenar o código dos nosso programas em código de máquina, devemos alterar o parâmetro PLSQL_CODE_TYPE, da seguinte forma:

ALTER SESSION SET PLSQL_CODE_TYPE=’NATIVE’;
ALTER PROCEDURE nome_da_procedure COMPILE;

Com isso, podemos ganhar em tempo de execução, pois o código não precisará ser interpretado pela engine PL/SQL. P valor default é INTERPRETED, onde o código será armazenado no formato bytecode do PL/SQL. Lembrando que depois de alterar o parâmetro somente as novas compilações é que serão armazenados em código nativo, as anteriores irão se manter em INTERPRETED. E se ele foi compilado como NATIVE, todas as subsequentes compilações permanecerá em NATIVE.

PLSQL_OPTIMIZE_LEVEL

Este é um parâmetro que irá indicar o nível de otimização que será utilizado na compilação de código em PL/SQL. É um valor inteiro de 0 à 3, e quanto mais alto for, mais esforço o Oracle irá fazer para otimizar o código. Mas nada disso vem de graças, como foi dito, o Oracle irá se esforçar mais para otimizar o código, utilizando mais tempo e recursos para isto.

PLSQL_WARNINGS

Podemos habilitar avisos na hora de compilação do nosso código, esses avisos são apenas AVISOS, não são erros no nosso código, mas com isto, poderemos saber de problemas que poderão existir no nosso código que pode ocorrer em tempo de execução ou então má performance. Para isto, devemos entender primeiro as possíveis opções para esse parâmetro.

Os valores são identificar por duas strings, a primeira informando se vai ser habilitada tal mensagem de erro(ENABLE), desabilitar(DISABLE), ou se vai tratar a mensagem de aviso como erro(error). Depois disto devemos colocar o carácter ‘:’ seguido do valor modificar, que pode ser: ALL(todas as mensagens de aviso), SEVERE(categoria de avisos severos), INFORMATIONAL(informacional), PERFORMANCE(perfomance), ou então o código do erro. Podemos também utilizar mais de um valor por vez, da seguinte maneira:

ALTER SESSION SET PLSQL_WARNINGS = 'ENABLE:SEVERE', 'DISABLE:INFORMATIONAL', 'DISABLE:06002';
/

Em um próximo post, veremos na prática o uso desses avisos.

Anúncios

Meu nome é Tércio Costa, sou formado em Ciências da Computação pela UFPB, tenho a certificação Oracle SQL Expert e OCP PL/SQL, mantendo um blog reconhecido pela OTN(oraclepress.wordpress.com), no qual também publico artigos técnicos no portal OTN, no portal http://www.profissionaloracle.com.br/gpo e na revista SQL Magazine. Além de tudo isto sou um Oracle ACE Associate por estar sempre contribuindo para a comunidade com um bom nível de expertise.

Marcado com: , , , , , , ,
Publicado em PL/SQL

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.

Esse Blog é reconhecido pela
Certificações
Sou articulista

Clique para seguir este blog e receber notificações via email de novos posts.

Tércio Costa

Tércio Costa

Meu nome é Tércio Costa, sou formado em Ciências da Computação pela UFPB, tenho a certificação Oracle SQL Expert e OCP PL/SQL, mantendo um blog reconhecido pela OTN(oraclepress.wordpress.com), no qual também publico artigos técnicos no portal OTN, no portal http://www.profissionaloracle.com.br/gpo e na revista SQL Magazine. Além de tudo isto sou um Oracle ACE Associate por estar sempre contribuindo para a comunidade com um bom nível de expertise.

Links Pessoais

Serviços verificados

Visualizar Perfil Completo →

Total de Visualizações da Página
  • 138.077 Visualizações
%d blogueiros gostam disto: