Pesquisar este blog

domingo, 29 de novembro de 2009

Como obter somente a data no ORACLE

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.

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

Verificar códigos de erro do ORACLE

http://www.ora-code.com/

Configurar Linux para o Oracle

http://www.puschitz.com/TuningLinuxForOracle.shtml

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.

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.

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.