Parte 1 - Introdução
Parte 2 - Criação e configuração da VM
Parte 3 - Criação do Oracle Linux
Parte 4 - Configuração do Oracle Linux
Parte 5 - Configuração do Oracle Linux II
Parte 6 - Clonagem da VM e criação dos disk image
Parte 7 - Configuração dos discos ASM e OCFS2
Parte 8 - Instalação do Oracle Clusterware
Parte 9 - Aplicação do Patch 10.2.0.5 no Oracle Clusterware
Parte 10 - Instalação Oracle Database 10g
Parte 11 - Aplicação do Patch 10.2.0.5 no Oracle Database
Parte 12 - Criação do Listener e ASM em modo cluster
Parte 13 - Criação do banco de dados
…
Dando inicio hoje a criação do nosso ambiente de teste Oracle RAC 10g utilizando VirtualBox tanto para criar as máquinas virtuais como os discos compartilhados entre as instâncias.
Não colocarei aqui o passo a passo para instalar o VirtualBox, visto que é extremamente simples, basta alguns “NEXT” e o seu VirtualBox estará instalado, até mesmo no Linux (no meu caso o Ubuntu) a utilização do VirtualBox é muito simples e amigável.
Criando a máquina virtual
A parte 2, está destinada a criação e configuração da VM. Estarei aqui demonstrando de forma mais detalhada possível a criação da máquina 1 do cluster que depois será clonada para a máquina 2.
Sem mais rodeios, vamos ao trabalho …
Quando se abre o VirtualBox é listado todas as máquinas virtuais instaladas no seu lado esquerdo (ver figura 1), caso você tenha instalado agora o seu VirtualBox, você será essa listagem vázia.
Vamos iniciar a criação de uma nova VM, ela será criada do zero. Para isso clique no botão azul New no canto superior esquerdo.
figura2
Será aberto o Wizard da criação da VM, basta clicar em Next.
Um Virtual Hard Disk pode ser dinâmico ou fixo. Para melhor utilização do espaço do meu HD, estarei utilizando o disco virtual em modo dinâmico.
Configuração da máquina virtual
Iremos iniciar agora, a configuração da máquina virtual recém criada. Para iniciar o Wizard de configuração da VM, basta selecionar a máquina desejada e clicar em Settings, como exibido na figura 13.

Para início de conversa … de nada vale um RAC se ele é mau distribuído, de nada vale se ele não tem services trabalhando para ele e não contra ele. Services são importantes para administração como também para a performance do RAC database. Um service por ser a cura ou a doença do seu RAC.
Mais o que são services e porque elas são tão importantes?
Em Oracle RAC, service significa um grupo de sessões que tem as mesmas características (duração, tempo de execução, acessos a um conjunto de objetos), uma grande ou pequena associação de sessões que realizam o mesmo tipo de trabalho.
Você pode se beneficiar muito utilizando services em ambiente Oracle RAC, a realização de performance-tuning e até mesmo tarefas administrativas podem ser feitas em cima dos services, permitindo realizar a sua tarefas por grupos de sessões e não no banco todo, diminuindo assim o seu trabalho . Services é a base da alta disponibilidade e o melhor que quase tudo pode ser feito dinamicamente como por exemplo a realocação de serviços.
Services podem ser configurado em relação a instâncias de três maneiras distintas.
- Preferred – São as instâncias preferenciais. Instâncias que tem preferência para a conexão do service.
- Available - As available instances são utilizadas quando uma preferred-instance falha.
- None - A instância não é utilizada pelo service.
Uma available instance não inicia um suporte a um service, ao contrário da preferred instance que sempre terá esse papel. Caso, em um determinado momento a preferred instance falha então o service é restaurado para uma available instance definido pelo service.
O mais importante sobre os services é saber balancear de maneira inteligente entre os nós existentes do cluster, nesse ponto conhecer a aplicação é fundamental porque é nesse momento que se deve saber os tipos de objetos (tabelas, índices, …) que a aplicação utiliza.
Nos próximos posts estarei criando e administrando um service em um ambiente RAC e os outros métodos de configuração do service.
Confira mais detalhes na própria documentação:
http://download.oracle.com/docs/cd/E11882_01/server.112/e17120/create007.htm#ADMIN11126
Até lá.
Olá Pessoal.
Andei sumido para responder os comentários e e-mails … mais foi por uma boa causa.
Depois de um tempo estudando pra valer Oracle RAC … hoje prestei a prova 1z0-048 (Oracle Database 10g: RAC Administrator Certified Expert) e passei. Muito bom ver o PASS na tela …
Agora apertem o cinto … vamos ver muitos posts sobre RAC a partir de hoje : )
Até mais
Coluna Virtual é uma nova feature do Oracle 11g que permite utilizar colunas puramente como expressões que são armazenadas no dicionário de dados.
Desde a versão 8i temos ao nosso alcance a possibilidade de armazenar expressões utilizando function-based indexes. Agora com a versão 11g temos a possibilidade de armazenar expressões diretamente em tabelas através das colunas virtuais.
Nesse artigo vou demonstrar usos básicos das colunas virtuais, algumas considerações sobre performance e suas limitações.
Criando uma coluna virtual
SYNTAX:
column_name [datatype] [GENERATED ALWAYS] AS (expression) [VIRTUAL]
SQL> create table triangulo 2 ( 3 base number, 4 altura number, 5 area number generated always as ((base * altura) / 2) virtual 6 ) 7 / Table created.
A tabela criada, é responsável por armazenas bases e alturas de triângulos, onde a coluna area armazenará a expressão matemática ((base x altura) / 2).
Agora vamos inserir um triângulo com base 5 e altura 6. Observe que não inserimos nada na coluna area, ela será gerada automaticamente. O primeiro insert gerará um erro propositalmente, aonde estou querendo mostrar que não podemos adicionar colunas virtual na syntax insert (e update).
SQL> insert into triangulo (base, altura, area) values (5, 6, 15); insert into triangulo (base, altura, area) values (5, 6, 15) * ERROR at line 1: ORA-54013: INSERT operation disallowed on virtual columns
Insert correto:
SQL> insert into triangulo (base, altura) values (5, 6);
1 row created.
SQL> select * from triangulo;
BASE ALTURA AREA
---------- ---------- ----------
5 6 15
A expressão pode ser visualizada pela coluna DATA_DEFAULT na view [DBA|ALL|USER]_TAB_COLUMNS.
SQL> select column_name, data_default 2 from dba_tab_columns 3 where table_name = 'TRIANGULO'; COLUMN_NAME DATA_DEFAULT -------------- ----------------------- BASE ALTURA AREA "BASE"*"ALTURA"/2 SQL> select column_name, data_type 2 from dba_tab_cols 3 where table_name = 'TRIANGULO' 4 and virtual_column = 'YES'; COLUMN_NAME DATA_TYPE -------------------- -------------------------------- AREA NUMBER
Algumas considerações sobre performance
Embora muito já se falou sobre o famoso “SELECT * FROM”, com colunas virtuais irá punir ainda mais a performance para quem emprega essa prática. Imagine que para cada linha que trouxer do seu SELECT, existam 3 colunas virtuais, isso tudo deverá ser gerado em runtime, ou seja, somente no momento da execução do SELECT que os dados serão “criados”, implicações significativas de desempenho são possíveis nesses casos. É extremamente importante, qualquer aplicação que utilize das colunas virtuais que use explicitamente as colunas que deseja utilizar, evitando assim desperdicio de processamento.
Limitações
- Colunas virtuais não podem ser baseadas em outras colunas virtuais.
- Elas não suportadas em index-organized, external, object, tabelas temporarias ou cluster.
- Indexes nas colunas virtuais, são iguais a function-based indexes.
- Eles podem ser usadas na clausula WHERE em updates e deletes, mais não podem ser manipuladas como DML.

























