terça-feira, 1 de setembro de 2020

Trigger


São blocos de execução nomeados, sua principal diferença em relação as Procedures e Packages, é que não existe "chamada" para Trigger sua execução é iniciada a partir de de uma ação de DML (Insert, Update ou Delete) na tabela a qual ela esta vinculada. O Trigger é disparado toda vez que ocorre uma ação na tabela.

https://docs.oracle.com/cd/B19306_01/server.102/b14220/triggers.htm
Fonte: https://docs.oracle.com/cd/B19306_01/server.102/b14220/triggers.htm


Os Triggers podem ser do tipo:

  • ROW LEVEL (Linha) 
  • STATEMENT (Tabela). 


Podendo ser acionadas  antes (BEFORE) ou depois(AFTER)  da execução da DML  na tabela.

Esse recurso de banco é utilizado principalmente quando existe a necessidade de se manter uma integridade dos dados alem das chaves (PK e FK), e para realizar a auditoria das alterações. Exemplo quando precisa-se manter um histórico de qual usuário realizou alteração e quando em outra tabela do sistema.

Triggers é um recurso poderoso dos SGBDs porem pode causar muita lentidão no sistema se mal aplicado, pois pode aumentar muito o tempo de execução de simples Inserts, Updates ou delete. O mais recomendado é criar a trigger Row Level ( Linha) validando apenas  a coluna e/ou ação.

Dentro das triggers encontramos 2 tipos específicos de variáveis :old e :new que permitem consultar o conteúdo da tabela anterior a ação de DML e posterior ação de DML respectivamente.



sábado, 2 de abril de 2016

Certificação Oracle - Segunda Chance

"Se duas pessoas com, praticamente, a mesma experiência estiverem disputando a mesma vaga de trabalho, a pessoa certificada geralmente chegará ao ponto mais alto na pré-triagem do departamento de RH. A certificação concede margem a um funcionário."
- Hans Forbrich, CEO, Forbrich Computing, provedor da Certificação Oracle


Ter uma certificação Oracle é um diferencial no currículo e uma garantia para si mesmo que você conhece ( e utiliza) as melhores praticas em seu banco de dados, o post Certificações Oracle.

Para aumentar sua confiança, a Oracle prorrogou a campanha Retake , fazem parte desta campanha os exames realizados em um Centro de Testes autorizado pela Pearson VUE® (Pearson VUE Authorized Test Center) até o dia 31 de maio de 2016 e o Retake Gratuito deve ser realizado até 15 de Julho de 2016.
Para mais informação acesse o site da Oracle education.

Se você tiver alguma dúvida, deixe um comentário terei o maior prazer em respondê-lo!!!




quarta-feira, 9 de dezembro de 2015

Blocos de Execução Anômimos







O PL/SQL permite trabalhar com blocos de execução anônimos e  Subprogramas, nesse post vamos falar sobre a utilização do bloco anônimo.

Sua estrutura é composta por:




  • Declare: Parte do código especifica para declaração das variáveis,cursores e funções internas do código.
  • Seção de Execução: parte do código que pode conter estruturas interativas ou condicionais, definição de variáveis, chamadas para blocos nomeados, é definido por: 
    • Begin: Define o inicio dos comandos PL/SQL, podem existir vários no bloco
    • End: Obrigatório para encerramento do bloco de execução, deve existir 1 para cada Begin.
  • Exception: Tratamento para erros em tempo de execução, sua utilização é opcional.  


É possível encadear varias seções de execução dentro de um bloco de execução, inclusive pode-se criar dentro de estruturas interativas ou condicionais da seção principal. Falando de forma mais objetiva podemos criar a estrutura Begin - End dentro de um Loop ou um IF.


Dominar o conceito de Blocos de execução é fundamental para aprender a programar em PL/SQL, essa é a base de todo o conhecimento desta linguagem, por isso fiquem à vontade para fazer perguntas aqui nos comentários!

segunda-feira, 9 de novembro de 2015

PL/SQL x SQL

Mais um post sobre diferenças de termos normalmente utilizados pelos profissionais de TI, de forma errada.

Já tem um tempinho fiz um post sobre a Definição de PL/SQL, agora vou abordar mais a diferença entre SQL e PL/SQL.


  • SQL: Structured Query Language(Linguagem de Consulta Estruturada ) - é a linguagem de manipulação de dados para banco de dados relacionais,  criada pela IBM na década de 70 baseada em conceitos da Álgebra relacional . Foi desenvolvida para padronização dos sistemas gerenciadores de banco de dados relacionais existentes. Seus comandos podem ser agrupado na seguintes categorias (DDL, DCL, DML, DQL).

  • PL/SQL: Procedural Language/Structured Query Language - é a linguagem própria de programação do SGBD Oracle, é uma ferramenta robusta, podendo ser utilizada de várias formas para tratamento de dados no banco de dados. O PL/SQL possibilita a aplicação de regras de negocio diretamente no SGB.

Principais Diferenças

Podemos dizer que enquanto o SQL é uma linguagem de consulta universal dos SGBDs relacionais o PL/SQL é uma linguagem de programação desenvolvida exclusivamente para o SGBD Oracle.

Para identificar se você esta utilizando o PL/SQL ou apenas o SQL em um acesso ao banco de dados é importante observar se é feita a declaração de variáveis ou se o seu código esta utilizando conceitos de programação ( If, else, Loop entre outros) e se o seu código esta dentro de um bloco de execução.

Normalmente o PL/SQL é utilizado dentro de blocos de execução armazenados no SGBD (Procedures, Functions, Triggers e Packages) em alguns casos pode ser utilizado através de blocos anônimos, é importante lembrar que comandos de SQL podem ser utilizados dentro do PL/SQL, porém o inverso não é valido, ou seja caso você tente executar uma função PL/SQL fora de um bloco de execução o SGBD oracle não vai reconhecer a instrução apresentando o erro "ora-00905 missing keyword".

Bloco Anônimo

quarta-feira, 12 de agosto de 2015

Banco de dados X SGBD

Nesse post vou tratar de um tema aparentemente simples mas que muitos se confundem em relação termos utilizados no universo de sistemas de banco de dados, vou falar sobre as diferenças entre banco de dado e SGBD.

Banco de dados

Um banco de dados é uma representação abstrata de um Mini-Mundo ou Universo de Discurso, ou seja, uma coleção de dados logicamente coerentes que juntos possam gerar informações.

Para abstrair um pouco de universo da informatica uma agenda telefônica, aquele modelo antigo de papel, pode ser considerado um banco de dados onde as informações gravadas são relacionadas ao Mini-mundo de pessoas que o dono da agenda conhece, esta situação o caderninho com folhas marcando o Alfabeto seria o SGBD.

Neste caso a agenda pode ser qualquer lugar onde você anota o nome da pessoa e seu telefone, já o SGBD seria o sistema de ordenação desses dados.

SGBD - Sistema de Gerenciamento de Banco de dados

O SGBD é um sistema desenvolvido para facilitar o armazenamento e a manipulação de dados no banco de dados, todo SGBD possui um banco de meta-dados que armazena as informações sobre o banco de dados. Voltando para o exemplo anterior o caderno com as letras do alfabeto simplifica o armazenamento e a consulta dos dados, inclusive já cria um índice para consulta.

Apesar de ser comum ouvir as pessoas dizerem que trabalham com banco Oracle, SQL Server ou MySql é preciso lembrar que esses softwares são SGBDs logo o correto seria dizer que trabalham com SGBD Oracle, SGBD SQL Server ou SGBD MySql.

Veja aqui um pouco da historia de Larry Ellison fundador da CIA Oracle, proprietária SGBD homônimo.

Diferença

Como representado na imagem abaixo o SGBD é um software que administra o Banco de dados, desta forma você sempre vai acessar o banco de dados através de um SGBD.

Figura1: SGBD

quarta-feira, 29 de julho de 2015

Dicionário de dados Oracle


O dicionário de dados do SGBD Oracle  é um conjunto de tabelas e views, pertencentes ao usuário SYS com permissão apenas de leitura.
Essas tabelas armazenam informações sobre a estrutura do banco de dados como: nomes dos usuários do servidor Oracle, privilégios concedidos, os nomes de objetos do banco de dados, as constraints de tabelas e as informações de auditoria.

Existem quatro tipos de prefixos dessas tabelas, esses prefixos definem as características das informações que serão apresentados, são eles:

  • USER_: Informações dos objetos pertencentes ao usuário que estiver logado no banco.
  • ALL_: Informações dos objetos para os quais o usuário logado tem direitos de acesso e dos objetos pertencentes ao usuário.
  • DBA_: Informações dos usuários com privilégios de DBA para acessar qualquer objeto do banco de dados.
  • V$_: Informações sobre o desempenho ou bloqueio do servidor do banco de dados; disponível para os administradores do banco.


Para identificar as tabelas do dicionario é possível fazer uma busca na tabela dictionary, serão listadas apenas as tabelas que o usuário logado tem permissão de acesso.

Exemplo:
select * from dictionary
where table_name like 'V$%'

         Retorno:


O dicionário de dados permite obter informações do banco de dados auxiliando em analises para tuning de querys e melhorias na sua base de dados.

segunda-feira, 13 de julho de 2015

Guob Tech Day 2015.


No ano passado participei do Goub Tech Day 2014  por isso já estou me programando para Goub Tech Day 2015 que já está com as inscrições abertas e com programação disponível.

Estão com valores especiais para inscrições feitas ate 31/07.

O GUOB (Grupo de usuários Oracle) já programou mais uma edição de seu evento nacional no dia 08/08/2015 em São Paulo no Hotel Blue Tree Morumbi, o qual proporcionará um grande encontro de usuários de tecnologia Oracle do Brasil com a participação de palestrantes internacionais e nacionais.




Estarão presentes palestrantes como Alex Zaballa, Tim Hall, Francisco Alvarez, Alex Gorbachev, Kyle Hailey, Gustavo Gonzalez, Kerry Osborne,  Mike Dietrich,  Debra Liley, entre outros. Segue programação do evento
Disponível no site do evento em 13/07/2015