Aprenda PL/SQL

Estou escrevendo esse texto para colocar meu parecer sobre o novo curso de SQL Tuning oferecido pela Nerv. Como eu participei da primeira turma de SQL Tuning, tenho o privilégio de compartilhar sobre o curso de antemão. Este é o segundo curso que eu faço na Nerv. O primeiro, você pode ver o review neste link.

Instrutor

O professor é o Ricardo Portilho Proni que é uma referência técnica no Brasil. Para quem não conhece, ele possui uma grande quantidade de certificações, incluindo Oracle ACE e palestrante em diversos eventos sobre Oracle. Possui uma experiência profissional muito grande. Sou totalmente suspeito em falar sobre o Portilho, pois quem me conhece, sabe que eu sou fã de carteirinha dele desde 2010. :-D

Nerv1Nerv2Nerv Certificados

A Turma

Tive a grande alegria de re-encontrar amigos e conhecer novos. Na turma estavam os seguintes alunos:
* Fernando Franquini (DBA Capin do certificacaobd.com.br. Atualmente DBA na Softplan )
* Eduardo Ribeiro ( DBA na UOL Diveo )
* Hugo Torralbo ( DBA no Itaú / Unibanco )
* Itagyba Kuhlmann ( Arquiteto de soluçoes na Pernambucanas )
* Thomas Glufke ( Oracle EBS Senior Developer na Dell Computers )
* Abaixo, o instrutor Ricardo Portilho ( Instrutor e Owner da Nerv Informática )

Turma SQL Tuning

O curso

São três dias de treinamento, alternando entre teoria, exemplos práticos, laboratório e muita troca de experiência. Como sempre, turmas pequenas.

O assunto Tuning é quase sempre um tabu, pois muita coisa pode afetar o comportamento do Oracle, mesmo em ambientes idênticos. É bem comum o profissional simplesmente “ir testando” algumas coisas pra ver se melhora a performance. É neste momento que o curso faz a diferença!

Como o Portilho mesmo disse, se o curso fosse sobre carros, “eu não vou te ensinar a pilotar, eu vou te ensinar a ser um mecânico!“. Isso é realmente verdade. O curso não é baseado em dicas, ou seja, receitas de bolo: “Se isso, faça aquilo”. É totalmente voltado ao funcionamento do otimizador, plano de execução, funcionamento e comportamento de índices e estatísticas, etc.

É realmente impressionante fazer um TRACE do otimizador e ver o que ele faz pra decidir qual plano de execução vai optar, e todas transformações que uma query sofre. Com os tópicos que estudamos, é possível analisar o motivo da demora e ajustá-las para ganhar performance.

Se você quiser saber mais detalhes de todos assuntos que são abordados, veja o link do curso aqui.

Opinião Pessoal

Já fiz alguns cursos de Tuning, mas até hoje nenhum deles foi tão aprofundado no assunto. Eu diria que o curso é voltado tanto pra DBAs como para desenvolvedores. É ideal se você já conhece algumas coisas sobre o assunto e quer ir mais a fundo.

Se você tiver a oportunidade de ir pra São Paulo e fazer este treinamento, tenho certeza que será um grande investimento e um upgrade na sua carreira.




bug

Tem algumas coisas que estão praticamente enraizadas no mundo Oracle: me refiro a algumas práticas que quase todo mundo faz e que foi adotado como padrão. O texto abaixo não contém nenhuma nova feature do Oracle, nem é nenhuma novidade pra ninguém. Mas por incrível que pareça, eu vejo em quase todas empresas essa prática e isso normalmente gera problemas. Me refiro a utilização de um NVL pra fazer um filtro opcional na query. Abaixo está um exemplo:

SELECT *
FROM tabela
WHERE campo = NVL ( p_parametro1 , campo )

Quase todo programa tem um sistema de filtro como esse acima.
Se o usuário informar o p_parametro1, a query vai mostrar apenas as linhas cujo campo é igual ao p_parametro1.
Se o usuário não informar nada, cai no NVL, e ele faz join com a própria coluna, trazendo tudo.

Leia mais…




O forum completa 10 anos!

27/08/2014 | Tags:, , | Categories: Geral

glufke_twitter5

Parabéns a todos vocês que fizeram parte dessa história! Esses 10 anos no ar provam que a comunidade Oracle no Brasil é muito unida e principalmente solidária, pois este site só existe graças às milhares de respostas e ajuda de pessoas dispostas a compartilhar conhecimento. Essa é a principal filosofia aqui: compartilhar conhecimento! Já que completou 10 anos, nada mais justo do que escrever aqui um pouco da história e como o forum foi criado.

Leia mais…




report_error2

Este é mais um daqueles casos que temos que chamar o Padre Quevedo pra dizer: “Este fenômeno nôm exziste“. Abaixo, vamos fazer uma análise de um programa com erro e como foi solucionado o erro.

O PROBLEMA

O relatório funcionava perfeitamente. Mas raramente, ou seja, 1% das vezes em que era executado, o relatório saía com os valores de todos os campos duplicados! Exemplo:  Deveria sair o valor R$ 20,00  mas saía R$ 40,00. Isso ocorria em todas colunas!

Leia mais…




É com muita alegria que anunciamos uma parceria firmada entre a Nerv Informática e o forum glufke.net. A Nerv Informática colocou um banner patrocinado em todas páginas do forum. Como muitos já sabem, o forum glufke.net é uma comunidade online sem fins lucrativos com o único objetivo de disseminar conhecimentos e experiências na tecnologia Oracle. Além de todo esforço dos membros e moderadores, existem também despesas que são necessárias para manter o site no ar. É nesse quesito que a Nerv Informática está nos auxiliando e estamos muito orgulhosos disso.

Sobre a Nerv Informática

A empresa foi fundada pelo Ricardo Portilho, que é um dos grandes nomes do Oracle no Brasil e também um dos Oracle Aces brasileiros. Conheci o Portilho em 2010 e depois disso, tive a oportunidade de fazer um dos cursos na Nerv (aqui está o meu review). Uma das coisas que o Portilho comentou e que me chamou atenção foi que o objetivo da Nerv era mudar o Brasil. Como assim? O objetivo dele era treinar e qualificar os profissionais no Brasil para ser um país num nível competitivo em relação a outros pelo mundo! Ao fazer o curso, eu entendi perfeitamente o que ele queria dizer com isso, pois a Nerv é uma escola diferente de todas as outras.

Conclusão

Quero dizer que estamos muito felizes que além de fazer a diferença no Brasil com os cursos e treinamentos, a Nerv também está apoiando as comunidades independentes como essa. Obrigado a Nerv por nos ajudar com as depesas e também aos membros do forum por suas ótimas contribuições.

Um bom trabalho a todos!

Thomas Glufke
Desenvolvedor Oracle EBS
Moderador do forum glufke.net




Bug do ano 2013

25/02/2013 | Tags:, , | Categories: PL/SQL

Pra quem pensa que o Bug do Milênio foi o último envolvendo datas, aí vai a sensação do momento: O Bug de 2013.

O Bug ocorre na seguinte situação:
* O programa X grava dados de data na tabela usando o seguinte formato de datas:  YYYYMMDD.
* O programa Y lê dessa tabela usando o formato DDMMYYYY. (Sim, é um erro, um bug no programa).

Até o ano de 2012, este erro não aparecia, veja um exemplo:
* O programa X salva a data 23-abr-201120110423 (YYYYMMDD)
* Quando essa data era lida pelo programa Y, ele lia  20110423 (DDMMYYYY) = 20-nov-0423. Data errada, mas não acusava erro!

Pois o ano de 2013 chegou e esse erro apareceu. Veja:
* O programa X salva a data 23-abr-201320130423 (YYYYMMDD)
* Quando essa data era lida pelo programa Y, ele lia  20130423 (DDMMYYYY) = 20-???-0423. Como não existe mês 13, dá erro!

O interessante é que esse bug está aparecendo só agora, depois de muitos anos de erro oculto. Finalmente em 2013 ele está fazendo os programas pararem de rodar.

Exemplo/Situação compartilhada por Rafael Lopes Lima (Programador Oracle EBS)




Este é um texto off-topic, mas pode ser útil pra algumas pessoas.

Aqui na empresa, prestamos serviço pra vários clientes. Um particularmente, exige que o trabalho seja feito no próprio notebook que eles fornecem. Nesse caso, eu tenho na minha mesa um PC (na esquerda) e um notebook (na direita), este, exclusivamente para uso de um cliente.

O problema é que isso gera uma série de incômodos, por exemplo:

  • Quando conecto na VPN usando o notebook, acabo perdendo a conexão com a internet. Caso eu precise copiar algum script (aqui do site, por exemplo) tenho que desconectar da VPN ou copiar pra um pen-drive, etc.
  • Outro problema é o espaço na mesa. É um pouco desconfortavel usar 2 teclados, 2 mouses. Tem que girar os braços pra um lado ou pra outro (fail), e quase sempre eu me confundo e acabo usando o mouse errado (double fail).


Leia mais…




Neste post, vamos mostrar como utilizar funções analíticas para fazer o rateio de um valor em diversas linhas de uma tabela.

Primeiro, vamos criar a tabela de teste:

CREATE TABLE glufke_teste
(nro_nota  NUMBER, item NUMBER, valor NUMBER);
INSERT INTO glufke_teste VALUES ( 50, 1, 1.45);
INSERT INTO glufke_teste VALUES ( 50, 2, 3.91);
INSERT INTO glufke_teste VALUES ( 50, 3, 5.04);
SQL> SELECT * FROM glufke_teste;

  NRO_NOTA       ITEM      VALOR
---------- ---------- ----------
        50          1       1,45
        50          2       3,91
        50          3       5,04

SQL>

Nosso objetivo é ratear um valor proporcionalmente nessas linhas. Como exemplo prático, vamos distribuir o valor R$ 49,30!
Leia mais…




É comum termos que procurar qual package ou qual procedure de banco que faz INSERT dentro de uma determinada tabela.

Nestes casos, podemos usar a ALL_SOURCE, que contém os códigos de todos programas de banco. Normalmente um select com LIKE resolve o problema:

SELECT * FROM all_source
WHERE UPPER(text) LIKE '%INSERT%TABELA%'

O problema é que nem sempre o código está no padrão, por exemplo, o nome da tabela pode estar no lado ou na próxima linha!

INSERT INTO tabelax...

INSERT 
INTO tabelax...

O mesmo vale pra UPDATES! Ou seja, se o comando INSERT estiver na linha anterior, essa consulta simples não vai retornar o que procuramos!

UPDATE tabelax SET...

UPDATE 
tabelax
SET...


Leia mais…




Este tutorial mostra como instalar o Apex 4.1 no Oracle XE. Aí vai um passo a passo:

1 – Baixar e instalar Oracle XE

Download nesse link: http://www.oracle.com/technetwork/database/express-edition/overview/index.html

Leia mais…