Alessandro Guimarães – Oracle Blog

September 28, 2009

OFA – Optimal Flexible Architecture | 15 Anos

Filed under: banco de dados — Tags: , , , , — agleite @ 1:14 pm

Aniversário de 15 anos do padrão OFA. Para aqueles que não sabem : OFA é um conjunto de diretrizes de instalação para termos bancos Oracle mais confiáveis, mais rápidos e com menor custo de administração. Cary Millsap fez uma apresentação em 1991 na International Oracle User Week  do documento 513 . Este documento chamado  “Configuring a growing Oracle V6 database for optimal performance.”  é  o marco inicial do que viria a ser conhecido como OFA Standard.

Este documento esta disponivel no site da Method – R, bem aqui: OFA-STANDARD

Engraçado, é que este documento tomou corpo devido situações  digamos bem pitorescas. Por exemplo :

1- Administradores Unix que ficavam apagando arquivos Oracle. Em especial os arquivos das tablespaces temporarias, que imaginem, ficavam localizadas no /tmp.

2 – Sistemas muito lentos, por que a todos os arquivos Oracle estavam armazenados em uma única file system montada em um único disco no diretório $ORACLE_HOME/dbs. Muito embora este ambiente tivesse pelo menos 8 (oito) discos.

Tirando apenas por estes exemplos, tenho calafrios só pensar no que ele encontrava. Arquivos Oracle espalhados por todos os diretorios da maquina sem nenhuma referencia a que instance ou tablespace pertencia.

Fazendo este post me lembrei de um fato ocorrido nos nem tão longe dias do versão 7.3 . Todos voces sabem que em um determinado sistema operacional, há algumas pessoas  que associam a extensão .ora ao processador de texto, o notepad por exemplo.

Temos então o seguinte dialogo :

Pessoa – “Dba sabe aquele aquele arquivo do Oracle o users.ora ?”

Dba (tranquilo, sem imaginar o que vinha pela frente) – “Sei. O que tem ? “

Pessoa – “Tava olhando ele aqui. Achei que tinha tabelas nele mas só estou vendo um monte de carinhas e simbolos esquisitos”

Dba (um pouco nervoso) – “Como assim tas olhando o users.ora. Olhando COMO ? “

Pessoa (com um certo desdem) – “Olhando oras …tu usa aquela ferramenta esquista um tal de svr… mgrl – quaquer coisa, eu uso o Notepad”

DBA -…….

Pessoa : “Agora ve…to tentando sair salvando e não consigo..saio sem salvar mesmo ?”

Vou omitir o resto da conversa, por respeito a Bill.

Portanto parabéns OFA e um muito obrigado  ao Sr. Cary Millsap !

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

Blog at WordPress.com.