Alessandro Guimarães – Oracle Blog

June 17, 2008

Comando SQL Válido

Filed under: banco de dados — Tags: , — agleite @ 8:41 pm

Ve este comando :

Por que o comando  abaixo, aparentemente invalido fuciona ? Uma vez que não existe coluna ou numero “1.x” . No entanto o comando funciona

SQL> SELECT 1.x
2  FROM dual;

X
———-
1

Pelo header da coluna temos uma dica . O Oracle considerou x um alias. Vamos tirar o “x” e ver o que acontece.

SQL> SELECT 1. FROM DUAL;

1.
———-
1

Funciona como esperado, “1.” é tratado como número (1. = 1.0)

No entanto a pergunta permanece. Como é que o Oracle divide a string “1.x” e decide que “x” é a coluna e “1.” é a parte numerica, considerand-se que não existem espaços entre 1. e X. Você, preguiçoso padwan,  poderia responder que as vezes…as vezes.. espaços em branco são opcionais.

Embora esta resposta pareça a melhor – (certamente muito bem vinda em momentos de tensão em salas de aula) – me parece, o que acontece é que o string tokenizer (infelizmente não da pra traduzir ) utilizado pelo Oracle SQL parser , é suficientemente inteligente para não confiar que  espaços em branco são delimitadores de token. Talvez até use analise de classes de caracteres  para entender onde uma literal termina e o próximo token (como o alias de coluna) começa.

Portanto é possivel escrever um comando SQL válidos sem nenhum espaço em branco. Por exemplo:

SQL> select*from”DUAL”;

D
-
X

SQL> select”DUMMY”FROM”DUAL”;

D
-
X

Bom a informação acima, não tem nenhuma aplicação prática (a não ser que seu teclado esteja quebrado). De qualquer forma ilustra como trabalha internamente e a flexibilidade do Oracle SQL Analisador de Texto.

P.S Muito embora :

SQL> select 1.dummy from “dual”"1″;
select 1.dummy from “dual”"1″
*
ERRO na linha 1:
ORA-03001: recurso não-implementado

Seja Feliz

Filed under: banco de dados — Tags: , — agleite @ 7:17 pm

[oracle@orcl bdump]$ oerr tns 0000

00000, 00000, “Not An Error”
// *Cause: Everything is working as it should.
// *Action: Don’t worry: Be happy.

Portanto, se você acha que algum amigo seu está triste, desolado, desconsolado, tipo que ele lá achando que aos 29 anos está descontinuado, manda um TNS 0000 pra ele

[12235] | Eu já sabia

Filed under: banco de dados — Tags: — agleite @ 7:12 pm

Erro lá no background dump dest

Oracle program name: oracle@orcl
*** 2008-06-17 16:19:02.850
ksedmp: internal or fatal error
ORA-00600: internal error code, arguments: [12235], [], [], [], [], [], [], []

E o que temos como definição do erro : ORA-600 [12235] “Oracle process has no purpose in life !”

Err..nenhuma novidade.

cursor_space_for_time | Sem Valor

Filed under: banco de dados — Tags: — agleite @ 6:44 pm

Se você ainda nao viu a nota do Metalink 565424.1, o parâmetro cursor_space_for_time parameter será desprezado no Oracle 10.2.0.5 and 11.1.0.7.

Uma ótima noticia, uma vez que provavelmente irá diminuir o número de DBAs “experts” que alteram este parametro para true sempre que eles vem algum tipo de contenção na shared pool ou na library cache.

Por outro lado, spin_count se tornou um parametro não documentado a muito tempo atras, mas ainda é muito utilizado, portanto eu não ficaria muito surpreso se o mesmo acontecesse a um digamos futuro _cursor_space_for time

Blog at WordPress.com.