Esta dica é para obter somente a parte da data em um campo do tipo timestamp ou date do ORACLE, pois o mesmo armazena a data e a hora juntos.
Em uma expressão SQL, na parte where podemos encontrar as seguintes situações:
Situação 1: Não é o que você quer!
where DATA_COMPRA = TRUNC(SYSDATE)
ou
Situação 2: Funciona mas não usa índice!
where TRUNC(DATA_COMPRA) = TRUNC(SYSDATE)
ou
Situação 3: A forma correta
DATA_COMPRA BETWEEN TRUNC(SYSDATE) AND TRUNC(SYSDATE) + 1 - 1/24/60/60
Explicação:
As três situações vão executar sem erro do Oracle, mas a primeira pode não retornar todos os registros pois existe a parte da hora armazenado no campo, o que faz com que a comparação resulte em True somente para os campos exatamente iguais em data e hora.
A segunda situação impede que o ORACLE utilize índices para agilizar as pesquisas. Mesmo se um índice for criado na coluna DATA_COMPRA, o ORACLE não poderá utilizar.
OBS.: Existe um tipo de índice baseado em função que permite que o ORACLE utilize um índice, mas não é interessante sobrecarregar o ORACLE com este tipo de situação.
A terceira situação, é a única forma de realizar a consulta de forma rápida, pois o ORACLE vai conseguir utilizar um índice, se existir é claro. A metodologia consiste em verificar se a data está no período compreendido entre a meia noite até o último segundo do dia.
Pesquisar este blog
domingo, 29 de novembro de 2009
Trabalhando com Tablespaces
Excelente artigo que mostra comandos e sintaxes para trabalharmos com tablespaces pode ser acesso em Oracle Tablespaces
sábado, 28 de novembro de 2009
domingo, 22 de novembro de 2009
Rede Oracle Tips and Tricks
1. Configurei um alias no arquivo tnsnames.ora chamado notafiscal mas ao executar tnsping, ocorre o erro: TNS-12541: TNS:no listener. O que está errado ?
A configuração do sqlnet.ora deve ter no parâmetro NAMES.DIRECTORY_PATH a opção TNSNAMES e está opção deve vir antes de EZCONNECT.
NAMES.DIRECTORY_PATH= (TNSNAMES,EZCONNECT)
Obs.: No 11g, é importante que TNSNAMES venha antes de EZCONNECT pois caso contrário tnsping falha.
A configuração do sqlnet.ora deve ter no parâmetro NAMES.DIRECTORY_PATH a opção TNSNAMES e está opção deve vir antes de EZCONNECT.
NAMES.DIRECTORY_PATH= (TNSNAMES,EZCONNECT)
Obs.: No 11g, é importante que TNSNAMES venha antes de EZCONNECT pois caso contrário tnsping falha.
Recriando o Repositório do Enterprise Manager
Um excelente artigo de como recriar o repositório do Enterprise Manager pode ser encontrado em Recriando o Repositório do Enterprise Manager de Bruno Murassaki.
A recriação do Repositório do Enterprise Manager pode ser necessária para o caso de algum erro na instalação o impeça de funcionar corretamente.
A recriação do Repositório do Enterprise Manager pode ser necessária para o caso de algum erro na instalação o impeça de funcionar corretamente.
Consultando erros do ORACLE
Para consultar erros do ORACLE consulte este link: http://www.ora-error.com
Pode ser consultado tanto via código como via texto da mensagem de erro.
Pode ser consultado tanto via código como via texto da mensagem de erro.
segunda-feira, 9 de novembro de 2009
Assinar:
Postagens (Atom)