Alessandro Guimarães – Oracle Blog

August 28, 2010

Data Guard | Papers

Filed under: banco de dados — Tags: , , , , , — agleite @ 3:24 pm

Se fizeres um search por “Data Guard”  no google, a pesquisa retornara com um numero bastante razoavel de pessoas que ja configuraram/implementaram esta feature de alta disponibilidade do Oracle. Durante configuração de um Data Guard com Maximum Availability em um cliente, alguns sites (pouquissimos na verdade) foram de alguma ajuda. A maioria dos blogs/sites mostram configurações basicas (aplicação de archives assincronos por exemplo) e ficam naquele velho esquema do copy/paste de outros sites/blogs ou até mesmo metalink.

Para implementar uma configuração de Data Guard consistente, é imprescindivel que sigas todos os pre-reqs e checklists possiveis.

Alem da documentação do produto e support notes , recomendo os papers abaixo (no caso do 10gR2):

1 - Redo Transport & Network Configuration

2 - Redo Apply & Media Recovery (physical standby)

3 - Switchover and Failover Best Practices

Minha configuração é um RAC primary com Standby Single, mas consegui resolver alguns “probleminhas” com o paper abaixo

* MAA 10g Setup Guide: Creating a RAC Physical Standby Database for a RAC Primary Database

Se quiseres um resumo sobre modos de proteção, podes olhar este post : Data Guard | Modos de Proteçao

March 17, 2010

Oracle Rdbms Code e o RadioHead

Filed under: banco de dados — Tags: , , , — agleite @ 2:39 pm

Tava brincando com os binarios do oracle e me deparei com isso :
54080832:I’m a creep, I’m a winner, what the hell am I doing here.I don’t belong here – radiohead.

Pra ver a frase o comando é simples : strings oracle | grep radiohead. Teste em Solaris e no Windows.

Apesar da letra não está correta, mostra como alguns caras na oracle tem senso de humor.

Pelo que vi na web…tem alguma coisa a ver com ASM :)

February 12, 2010

Oracle Unbreakable ? | Falha de Segurança no 11g

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

David Litchfield, achou vulnerabilidades de segurança no Oracle 11g, embora os testes que eles fez tenham sido na versão 11gR2, a falha também acontece no Oracle 11gR1.
O problema acontece devido a privilégios super generosos para as procedures java, permitindo que um usuario com apenas privilegio de create sesssion, possa se tornar um DBA, tendo assim total controle do banco.
Alem disso, este mesmo usuario pode, com um simples select executar comandos do sistema operacional, como por exemplo gerar um arquivo.txt.
Em casa fiz um teste e consegui t criar um usuario no sistema operacional e torna-lo membro do grupo administrator do windows. Terrivel não. ?
A Oracle não tem patch…nem se pronuciou quanto a falha. No entanto você pode fazer sua parte. Basta fazer o revoke do PUBLIC das seguintes packages:

revoke execute on DBMS_JVM_EXP_PERMS from public;
revoke execute on DBMS_JAVA from public;
revoke execute on DBMS_JAVA_TEST from  public;


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

Theme: Silver is the New Black. Blog at WordPress.com.

Follow

Get every new post delivered to your Inbox.

Join 78 other followers