fev 132016
 

A maior parte dos bancos de dados existentes no mercado possuem uma funcionalidade chamada Identity, basicamente um Auto incremento para campos numéricos.

Para implementarmos tal funcionalidade no Oracle 11g e anteriores era necessário usar uma sequence e chamar seu método “next_val” por meio de uma trigger, ou chamando diretamente no comando (eg. insert). Mas não havia nada automático.

Temos novidades no 12c ?

Continue reading »

jan 252016
 

Se tentarmos criar um índice numa coluna já indexada no Oracle 11g vamos receber o seguinte erro:

ORA-01408: such column list already indexed

No Oracle 12c isso não acontece.

O 12c trouxe inúmeras features e uma delas é a possibilidade de criar mais de um índice numa mesma coluna.

Mas por que alguém faria isso ?


Disponibilidade e performance.

Como assim ?

Continue reading »

jan 152016
 

Durante uma migração, alteração na aplicação ou criação de novas constraints, eventualmente podemos receber:

ORA-02298: cannot validate (SYS.FK_CHILD_PID) - parent keys not found

Isso acontece quando o registro na tabela filha tenta fazer referência a um registro não existente na tabela pai, ou seja, uma violação de integridade referencial.
De certa forma esse erro é bom, afinal, ele protege e evita dados inconsistentes.
Se o erro acima acontecer durante um insert, é fácil identificar o problema, afinal, temos todos os dados do insert e podemos facilmente (teóricamente) analisar a situação.
Mas supondo que você levou o erro acima ao criar ou ativar um constraint, como identificar quais registros da tabela estão nessa situação ? Podem ser milhares de registros…

Continue reading »

dez 312015
 

Como temos dito em vários posts, o Oracle tem um poderoso otimizador de consultas, e dentre suas inúmeras funcionalidades, ele também é capaz de reescrever uma consulta para torná-la mais performática.

Ele tem várias técnicas de reescrita que eu pretendo descrever em outros posts.

Mas hoje eu gostaria de mostrar como verificar se um comando foi reescrito pelo Oracle, e como ficou o comando final.

Continue reading »

dez 082015
 

No último post falei que era preciso aplicar um patch para resolver o erro “error in invoking target “agent nmhs” of makefile “ins_emagent.mk”

Mas ao aplicá-lo, ou mesmo ao aplicar outro patch, talvez você receba vários warnings:

OPatch found the word "warning" in the stderr of the make command.
Please look at this stderr. You can re-run this make command.
Stderr output:
ins_emagent.mk:113: warning: overriding recipe for target `nmosudo'
ins_emagent.mk:52: warning: ignoring old recipe for target `nmosudo'
/u01/app/oracle/product/11.2.0.4/db_1/sysman/lib/ins_emagent.mk:113: warning: overriding recipe for target `nmosudo'
/u01/app/oracle/product/11.2.0.4/db_1/sysman/lib/ins_emagent.mk:52: warning: ignoring old recipe for target `nmosudo'

Podemos simplesmente ignorá-los ?

Continue reading »