Ora Ora - Tecnologia Oracle e Afins
quarta-feira, 8 de maio de 2013
Flashback no 12c ? Então, olha só...
Hoje descobri que a primeira versão do Oracle 12c disponibilizada ao público (o famoso "release 1") não permitirá "flashback database" nos PDBs. Não sei qual a parcela da comunidade Oracle que tem feito, como eu tenho, planos de consolidação com base nesta nova funcionalidade, mas sei que isso prejudica muito esses planos. Sem a possibilidade de flashback, a consolidação de ambientes de homologação no 12c tira dos usuários finais uma agilidade que já está enraizada em seus processos.
Quero ver quem vai explicar aos testadores e desenvolvedores que agora estamos em uma versão muito mais moderna e consolidada, mas a reversão daquela bateria de testes vai demorar 10 vezes mais do que antes. Not cool, Oracle. Not cool.
Atualização em 8/3/2017: O Release 2, que saiu há alguns dias, implementa "flashback database" nos PDBs. Infelizmente a versão veio com um monte de outros problemas.
Veja Também:
Novas Features do Oracle 12c
Oracle 12c: Pluggable Databases
quinta-feira, 18 de abril de 2013
Houston, we have a Bug
Nesta semana meu colega Denis Artuzi encontrou aqui um belo bug no Oracle Database. Aparentemente, acontece em todas as versões de 11g. Nós testamos na 11.2.0.2 e na 11.2.0.3; o pessoal do fórum da Oracle testou na 11.2.0.1 também. O bug faz com que os "named parameters" sejam ignorados em certos casos, aparentemente quando a chamada está em "inline views" (um select dentro da cláusula FROM de outro select). O código abaixo exemplifica o efeito. A thread no fórum da Oracle está aqui.
Update: testamos na versão 12c (12.1.0.1) e o problema persiste.
Update: testamos na versão 12c (12.1.0.1) e o problema persiste.
CREATE OR REPLACE FUNCTION f_teste(pcEmp VARCHAR2, pcCod VARCHAR2)
RETURN NUMBER IS
vnRetorno NUMBER;
BEGIN
DBMS_OUTPUT.put_line('pcEmp: ' || pcEmp || ' pcCod: ' || pcCod);
IF pcEmp = '500' THEN
vnRetorno := 1;
ELSE
vnRetorno := -1;
END IF;
RETURN vnRetorno;
END;
/
Vejam o resultado de duas chamadas quase idênticas:SQL> select * from (SELECT 'A' campo1, f_teste(pcCod => '1000', pcEmp => '500') vlr from dual);
CAMPO1 VLR
------ ----------
A 1
pcEmp: 500 pcCod: 1000
SQL> select * from (SELECT 'A' campo1, f_teste(pcCod => '1000', pcEmp => '500') vlr from dual) abc where abc.vlr > 0;
CAMPO1 VLR
------ ----------
pcEmp: 1000 pcCod: 500
Na segunda chamada, a indicação de quem é "pcCod" e quem é "pcEmp" foi ignorada e os parâmetros foram passados na ordem, invertendo a atribuição.
quinta-feira, 11 de abril de 2013
Índices
Os índices fazem parte da rotina de qualquer pessoa que trabalhe com banco de dados, mas pouco se discute sobre o seu funcionamento. Apesar de ser uma estrutura considerada avançada, há dois bons motivos para se aprofundar no assunto:
- A estrutura do índice não muda há anos.
- É uma estrutura compartilhada entre diversos sistemas de bancos de dados.
Nesse texto, há um overview da implementação dos índices focado no banco de dados Oracle.
Assinar:
Postagens (Atom)