Há muito tempo tenho esse script que sempre me ajudou a calcular horas, minutos e dias.
Utilizando algumas funções do Oracle para ajudar a montar datas decorrente do dia de hoje.
Há muito tempo tenho esse script que sempre me ajudou a calcular horas, minutos e dias.
Utilizando algumas funções do Oracle para ajudar a montar datas decorrente do dia de hoje.
Função que veio no Oracle 9i, fornece a habilidade de visualizar os dados como eles estavam em um determinado tempo no passado. Por padrão, operações no banco de dados usam os dados disponíveis mais recentemente “comitados”. Se você quiser pesquisar determinados dados em algum ponto no passado, você precisará utilizar o recurso de Flashback Query na qual será necessário especificar um “horário” ou um SCN (System change Number) para efetuar a pesquisa.
Este recurso é muito útil, quando você precisa restaurar dados que foram deletados ou alterados erroneamente. É melhor efetuar este procedimento do que voltar um export da tabela de um ponto no passado ou mesmo um backup full até um momento no tempo, que pode ser lento deixando a sua base totalmente inoperante até a sua conclusão.
Antes de mais nada, para você poder usar o recurso de Flashback Query, é necessário configurar o seu banco de dados para usar o gerenciamento automático de UNDO (Automatic Undo Management).
– retificado
E um detalhe importante que é liberado para todas as edições do Oracle, podendo ser vistos nessatabela de comparações das features contra suas edições.
CLAUSULA AS OF
Nas releases anteriores, o recurso FlashBack permitia ao usuario ter uma visao de um imagem mais antiga do banco de dados, com base em um horario ou em um SCN escolhido.
Para utilizar os dados dessa imagem mais antiga, por exemplo, para substituir linhas que haviam sido deletadas acidentalmente de uma tabela, a operação do Flashback precisava ser incorporada a um bloco PL/SQL.
Agora, pode-se obter imagens distintas, de tabelas individuais, em uma unica sessão.
Bom para entender melhor o que estarei explicando vou mostrar uma imagem que irá nos ajudar a entender o processo de acessar o mysql apartir do Oracle.
como mostra na imagem abaixo o Cliente(eu) vou conectar no meu Oracle database onde irá ter um DBlink para o Non-Oracle que no nosso caso é o MySQL. Assim podendo efetuar insert,delete,update e select apartir do Oracle lá no MySQL.
Isto tudo é feito apartir de um intermediador que vamos utilizar o ODBC. Particularmente falando não gosto muito, porem para quebrar um galho ajuda p/ caramba. Read the rest of this entry »
Rapidinha: O oracle tem como default a função de transformar query's sql para XML
Exemplo:
SET long 5000 SET pagesize 5000 SET linesize 132 SELECT dbms_xmlgen.getxml(’SELECT * FROM user_tables’) XMLQUERY FROM dual;
Imagine você está tentando para criar um jogo de resultados onde os registros precisam ser colunas, ou vice-versa.
A essência, você precisa "girar" os registros em colunas, ou vice-versa.
Muitas vezes há relatorios que exigêm isto e para que não precisarmos de criar functions ou qualquer outra coisa para solucionar isso podemos usar o chamado pivot ou crosstab queries.
Uma questão de pivot simples é realizada fazendo o seguinte:
1. Acrescente algum tipo de conta ou número de fila ao seu questionamento, se necessário para o agrupamento;
2. Então use sua query original como uma sub-query;
3. Use "decode" para se transformar os registros em colunas;
4. Use "MAX ou SUM" para "agrupar" os registros múltiplos em únicas coluna. E não pode ser esquecido de agrupar.
Exemplo prático: Read the rest of this entry »
Esses dias um cliente me solicitou algo para criptografar senhas, já conhecia a package dba_obfuscation_toolkit e ai fui pesquisar mais sobre e achei uma forma otima para criptografar a senha em MD5, assim fiz a função dentro do owner do sistema que faz esta conversão:
CREATE OR REPLACE FUNCTION md5 (valor VARCHAR) RETURN VARCHAR2 IS v_input VARCHAR2(2000) := valor; hexkey VARCHAR2(32) := NULL; BEGIN hexkey := RAWTOHEX(DBMS_OBFUSCATION_TOOLKIT.md5(input => UTL_RAW.cast_to_raw(v_input))); RETURN NVL(hexkey,''); END;
Exemplo da utilização:
sql> SELECT md5('senhadorafael') FROM dual; 70CB17EBF6A8DF8525016F7866075794
0