Você está na página 1de 170

Porque Usar Oracle RAC?

Nunca se falou tanto de Oracle RAC. As empresas, nunca estiveram to preocupadas em manter os servios disponveis pelo maior tempo possvel como hoje. A famosa frase: O sistema no pode parar nunca!, nunca foi to utilizada como hoje. Isso se deve ao grau de excelncia exigido no mercado. Os clientes dessas empresas, cada vez mais, querem ter certeza que o respectivo atendimento no ser impactado pela indisponibilidade dos servios de TI do prestador de servios. Em alguns casos, isso at item de auditoria para que os servios continuem a ser prestados por determinado prestador de servio. Mas porque isso no era to questionado anteriormente? Eu acredito que uma srie de fatores contriburam no passado para a no utilizao desse produto que eu acho fantstico! 1)Valor elevado para os servidores: para as empresas de pequeno/mdio porte, era inaceitvel comprar 2 servidores para rodarem o mesmo servio. Isso s era utilizado em grandes corporaes; 2)Valor elevado para os discos: disco antigamente era caro, alguma dvida nisso? Porque ser que o Flashback s foi evoluir tanto a partir do Oracle 10g? Ser que se todas as features do Flashback tivessem sido lanadas no Oracle 9i, o impacto no mercado seria o mesmo? 3)Valor elevado em infra-estrutura de rede: criar uma rede dedicada (mesmo que utilizando VLANs) para o InterConnect, tambm era mais complicado para empresas de pequeno/mdio porte. At mesmo porque, para isso, o servidor deve possuir pelo menos duas interfaces de rede; 4) Valor elevado para solues de clusterizao de file system: no Oracle 9i, as nicas maneiras de se armazenar um banco de dados Oracle em RAC era atravs de raw devices ou atravs de um file system clusterizado (CFS). Geralmente, com as empresas utilizando sistemas Unix proprietrios (AIX, HP-UX, Solaris, etc) para se armazenar arquivos em um CFS, o valor despendido pelas empresas no era baixo! Acreditem! A licena de um CFS proprietrio poderia at ultrapassar o valor gasto em licena com o Oracle RAC. No Oracle 10g, com a introduo do ASM, esse problema foi resolvido, pois as empresas no pagam nada a mais para utilizar esse recurso; 5)Mo de obra especializada: o preo da novidade caro, j que para ter o grau de excelncia exigido na implementao de um ambiente crtico, imagina-se que o DBA estar sempre atualizado com o que existe de vanguarda no mercado. Querendo ou no, hoje, a implantao de um Oracle RAC, est mais banalizada. E isso arrasta o preo de uma implementao de Oracle RAC para baixo. Hoje est mais barato ter o Oracle RAC. As empresas de pequeno/mdio porte j falam em ter ambientes altamente disponveis. Ter a garantia de que o banco de dados est num nvel de disponibilidade maior que o seu concorrente, hoje, um grande diferencial para as empresas. Alm disso, tempo dinheiro, e uma empresa com a aplicao parada por problemas de infra-estrutura, est perdendo dinheiro! E por este motivo, quem no conhece o Oracle RAC, corra atrs! Pois o que era considerado como especializao para um DBA h 3 anos, hoje visto como mais um item fundamental nas atribuies do cotidiano de um bom DBA. * Atualizao: Como pude esquecer de algo to importante? Obrigado, Rodrigo!

Um ponto muito importante que est ajudando a popularizar o Oracle RAC que na verso Standard Editon no h cobrana adicional de licena do produto. O Database Standard Edition no incide custo adicional de licena, mas, algumas limitaes so impostas: possvel utilizar no mximo 4 sockets de CPU por cluster, o banco de dados no pode ser armazenado em CFS ou Raw Devices, e, sim, somente em ASM. Em breve incluirei um artigo que trata das diferenas do Oracle RAC no Standard Edition e no Enterprise Edition.

Instalao do Oracle RAC 10g Release 2 Parte 1: Pr-requisitos


A partir desse artigo, veremos como instalar o Oracle RAC 10g Release 2 em mquinas virtuais, uma simulao do nosso mundo real. Existem muitos artigos na Internet que descrevem a instalao do Oracle RAC 10g Release 2 em mquinas virtuais em VMWare, utilizando Red Hat Enterprise Linux [RHEL4] 4 (ou seus primos: CentOS, Oracle Enterprise Linux). No encontrei (na minha opinio), um artigo bacana que descreve a instalao do Oracle RAC 10g Release 2 em VMWare, utilizando Red Hat Enterprise Linux 5 num host rodando Windows XP ou Vista. Esse o motivo da criao deste artigo. Hoje, muito comum ocorrer instalaes desse tipo, pois, o RHEL4 no mais comercializado. Desta forma, pelo menos comigo, todas as novas instalao de Oracle RAC em clientes, tem acontecido com RHEL5. Pr-requisitos de software: - Oracle Enterprise Linux 5 Update 3; - Oracle Clusterware 10g Release 2 para Linux x86; - Oracle Database 10g Release 2 para Linux x86; - Patchset 10.2.0.4 Patch Number 6810189; - VMWare Server (eu usei a verso 1.0.5). Pr-requisitos de hardware: - 45GB de disco. - Pelo menos 2GB de RAM.

Instalao do Oracle RAC 10g Release 2 Parte 2: Criao da VM


Aps instalado, o VMWare Server criar interfaces de rede virtuais na mquina Windows. Para consultarem ou editarem as interfaces de rede virtuais criadas pelo VMWare, basta ir em Iniciar / Programas / VMware Server / Manage Virtual Networks. No exibirei aqui, a tela, mas, para a rede InterConnect, entre os ns do RAC, usarei a VMNet2, que tem as seguintes definies: VMNet2 Rede: 10.0.0.0 Subnet: 255.0.0.0 Para a rede pblica, que os usurios tero acesso, usarei a placa de rede do notebook como ponte (bridge), e com isso, qualquer estao de trabalho da minha rede conseguir acessar o ambiente. Vamos l! Vamos comear a criar a nossa primeira mquina virtual para que possamos brevemente instalar o Oracle RAC! Acessem a VMWare Server Console: Iniciar / Programas / VMWare Server / VMWare Server Console:

Clicar no boto New Virtual Machine:

Clicar em Avanar:

Clicar em Custom e, em seguida, em Avanar:

Escolher o Linux como Sistema Operacional e, em seguida, escolher a verso Other Linux 2.6.x kernel. Clicar em Avanar:

Na definio dos nomes dos servidores que faro parte do cluster, escolhi os nomes mvrac1 e mvrac2. Como estamos criando a primeira mquina, defina o nome da mquina (mvrac1) e escolha o caminho onde a mquina virtual ficar armazenada (G:\VMWARE\mvrac1). Clicar em Avanar:

Deixar a opo Make this virtual machine private selecionada. Clicar em Avanar:

Deixar a opo User that powers on the virtual machine selecionada e clique em Avanar:

Eu utilizei apenas um processador. E, portanto, deixei a opo One selecionada para o item Number of processors. Clicar em Avanar:

Na tela acima, necessrio especificar a quantidade de memria que ser usada pela mquina virtual. Para os testes em VMWare, 512MB bastam. Clicar em Avanar:

Para a primeira placa de rede do servidor, utilizarei a conexo em ponte bridged networking, onde a placa de rede da VMWare ter um IP da rede da minha residncia. Com isso, qualquer estao da rede conseguir acessar o banco de dados. Clicar em Avanar:

O tipo de adaptador de I/O dever ser escolhido. Para os discos SCSI do servidor virtual, sempre usaremos o tipo LSI Logic. Clicar em Avanar:

Ser criado um novo disco virtual. Esse disco ser o disco interno do servidor. Deixar a opo Create a new virtual disk e clicar em Avanar:

O disco ser do tipo SCSI. Deixar essa opo selecionada e clicar em Avanar:

O tamanho do disco dever ser especificado. Um bom nmero para mquina virtual, um disco com 12GB de capacidade. Eu sempre deixo a opo Allocate all disk space now. Alguns colegas no usam essa opo, pois j se perde esse espao imediatamente. No entanto, muito chato ter que aguardar pela alocao de mais espao durante a instalao dos produtos que instalaremos nessas mquinas, isso causa o aumento do tempo de espera. Tambm deixo a opo Split disk into 2GB files, pois, caso eu precise copiar essa VM para algum disco formatado em FAT32, o tamanho mximo de arquivo permitido por esse tipo de sistema de arquivos 2GB. Clicar em Avanar:

necessrio especificar o nome do arquivo que ser o disco virtual. Eu sempre uso o nome de localdisk.vmdk. Clicar em Concluir:

Uma tela como a exibida acima ser mostrada.

A janela acima ser exibida quando a criao da VM for concluda. Lembrando que a VM ainda no est pronta para instalarmos o sistema operacional, pois, para o RAC, ainda precisamos de mais uma placa de rede (para o InterConnect) e os discos que ficaro compartilhados entre as mquinas virtuais (LUNs virtuais do storage). Portanto, cliquem no item Edit virtual machine settings:

Clicar no boto Add para adicionar um novo item de hardware:

A janela acima ser exibida. Clicar em Avanar:

Escolher o item Ethernet Adapter para adicionar uma nova placa de rede. Clicar em Avanar:

Selecionar a rede Custom: VMNet2 (Host-only). Essa rede a que responde pela faixa de IPs 10.0.0.0 e subnet 255.0.0.0. Essa placa de rede ser a responsvel pela rede InterConnect. Clicar em Concluir:

A janela acima ser exibida. Nela, j possvel ver a nova placa de rede adicionada (Ethernet 2). Clicar em Add para comear a adicionar agora os discos que ficaro compartilhados entre os ns do cluster:

Clicar em Avanar:

Deixar a opo Hard Disk selecionada e clicar em Avanar:

Deixar a opo Create a new virtual disk selecionada e clicar em Avanar:

Escolher o tipo de disco virtual, SCSI. Clicar em Avanar:

Escolher o tamanho do disco virtual. Como o ambiente virtualizado, eu deixei o primeiro disco com o tamanho de 5GB. Deixar a opes Allocate all disk space now e Split disk into 2GB files selecionadas. Clicar em Avanar:

Na janela acima, dever ser especificado o caminho onde o disco compartilhado ficar armazenado. Como se trata de discos que ficaro compartilhados entre todas as mquinas do cluster, o caminho que eu deixei o arquivo ser nico para todas as mquinas: G:\VMWARE\SharedDisks\sdisk01.vmdk. Clicar em Advanced:

Escolher qual controladora esse disco utilizar. Como o disco local (localdisk.vmdk) usa a controladora 0 (zero), eu utilizarei a controladora 1 para os discos de storage. Portanto, para o primeiro disco, o caminho ser SCSI1:0. Deixar as opes Independent e Persistent selecionadas. Clicar em Concluir:

A tela acima ser exibida com o progresso da criao do disco.

O novo disco ser exibido como Hard Disk 2. Para o ambiente clusterizado, criaremos 3 discos de 5GB compartilhados entre os ns. Portanto, devemos criar mais 2 discos. Clique em Add: Os resultados devero ser parecido dependendo da qtd de dispositivos que vc colocar state: Powered off Guest OS: Other Linux 2.6.x kernel Configuration file: G:\VMWARE\mvrac1\Other Linux 2.6.x kernel.vmx Version: Current virtual machine for VMware Server 1.0.5 E os seus dispositivos (devices): Memory: 512MB Hard Disk (SCSI 0:0) Hard Disk 2 (SCSI 1:0) Independent-persistent Hard Disk 3 (SCSI 1:1) Independent-persistent Hard Disk 4 (SCSI 1:2) Independent-persistent CD-ROM (IDE 1:0) Auto-detect Ethernet Bridged Ethernet 2 Custom Processors 1 O diretrio G:\VMWARE\mvrac1 dever ter os seguintes arquivos:

O arquivo Other Linux 2.6.x kernel.vmx dever ser editado e as seguintes linhas devero ser includas no final do arquivo:

disk.locking = FALSE diskLib.dataCacheMaxSize = 0 diskLib.dataCacheMaxReadAheadSize = 0 diskLib.dataCacheMinReadAheadSize = 0 diskLib.dataCachePageSize = 4096 diskLib.maxUnsyncedWrites = 0 scsi1.sharedBus = VIRTUAL

Instalao do Oracle RAC 10g Release 2 Parte 4: Configurao do Linux


Vimos no ltimo artigo como instalar o Linux. Pois bem, agora precisamos configurar o nosso sistema operacional para atender os pr-requisitos necessrios para instalar o software Oracle de banco de dados e clusterizao. Os pr-requisitos so citados na Documentao Oficial:

Database Installation Guide for Linux x86; Database Oracle Clusterware and Oracle Real Application Clusters Installation Guide for Linux.

No entanto, quando o software de banco de dados 10g Release 2 foi lanado, ainda no estava disponvel no mercado o Red Hat Enterprise Linux 5. Por esse motivo, nos documentos acima, essa verso de sistema operacional no citada. Somente possvel encontrar esses pr-requisitos no Metalink (Oracle Support). Para acesso ao Metalink, necessrio ter um contrato de suporte junto Oracle (CSI). No Metalink, possvel encontrar notas de suporte atualizadas para as verses de banco ainda suportadas pela Oracle. A Nota 419646.1 cita os pr-requisitos necessrios para instalar o Oracle 10g Release 2 no Red Hat Enterprise Linux 5 32bit. Vamos l, para os pacotes de sistema operacional (os RPMs), a lista dos pr-requisitos a seguinte:

binutils-2.17.50.0.6-2.el5; compat-libstdc++-33-3.2.3-61; elfutils-libelf-0.125-3.el5; elfutils-libelf-devel-0.125; gcc-4.1.1-52; gcc-c++-4.1.1-52; glibc-2.5-12; glibc-common-2.5-12; glibc-devel-2.5-12; glibc-headers-2.5-12; libaio-0.3.106; libaio-devel-0.3.106; libgcc-4.1.1-52; libstdc++-4.1.1 ; libstdc++-devel-4.1.1-52.e15; make-3.81-1.1; sysstat-7.0.0; unixODBC-2.2.11; unixODBC-devel-2.2.11.

Para pesquisar se temos os pacotes, uma das melhores maneiras utilizando a seguinte sintaxe, com o binrio rpm com o usurio root:
1 rpm -qa --queryformat "%{NAME}-%{VERSION}.%{RELEASE} (%{ARCH})\n" | grep package_name

Como exemplo, vou pesquisar o pacote binutils:


1 rpm -qa --queryformat "%{NAME}-%{VERSION}.%{RELEASE} (%{ARCH})\n" | grep binutils

A sada do comando ser:


1 binutils-2.17.50.0.6.9.el5 (i386)

De acordo com a lista acima, e com a instalao do sistema operacional realizada, os nicos pacotes que ainda precisamos instalar so os seguintes:
1 elfutils-libelf-devel-0.125; 2 libaio-devel-0.3.106; 3 unixODBC-2.2.11; 4 unixODBC-devel-2.2.11.

Para instalar esses pacotes, primeiramente devemos apontar na Console da VMWare que essa mquina virtual utilizar a imagem ISO do Linux:

Aps isso, deveremos montar o DVD no sistema operacional, acessar o DVD e instalar os pacotes restantes:
01 [root@mvrac1 ~]# mount /dev/hdc /media 02 mount: block device /dev/hdc is write-protected, mounting read-only 03 [root@mvrac1 ~]# cd /media/Server/ 04 [root@mvrac1 Server]# rpm -ivh elfutils-libelf-devel* warning: elfutils-libelf-devel-0.137-3.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159 06 Preparing... ############################### [100%] 05 07 08 1:elfutils-libelf-devel-s############################### [ 50%] 2:elfutils-libelf-devel ############################### [100%]

09 [root@mvrac1 Server]# rpm -ivh libaio-devel* warning: libaio-devel-0.3.106-3.2.i386.rpm: Header V3 DSA signature: NOKEY, key 10 ID 1e5e0159 11 Preparing... 12 1:libaio-devel ############################### [100%] ############################### [100%]

13 [root@mvrac1 Server]# rpm -ivh unixODBC* warning: unixODBC-2.2.11-7.1.i386.rpm: Header V3 DSA signature: NOKEY, key ID 14 1e5e0159 15 Preparing... 16 1:unixODBC 17 18 2:unixODBC-devel 3:unixODBC-kde ############################### [100%] ############################### [ 33%] ############################### [ 67%] ############################### [100%]

Pronto! Uma parte dos pr-requisitos foi concluda! O prximo passo sero os parmetros de kernel.

Os seguintes parmetros precisam ser adicionados ao arquivo de configurao /etc/sysctl.conf


1 kernel.shmmni = 4096 2 kernel.sem = 250 32000 100 128 3 net.ipv4.ip_local_port_range = 9000 65500 4 net.core.rmem_default = 1048576 5 net.core.rmem_max = 1048576 6 net.core.wmem_default = 262144 7 net.core.wmem_max = 262144

Aps colocar esses parmetros no arquivo acima especificado, para efetivar os parmetros no sistema operacional, o seguinte comando dever ser executado como root:
1 sysctl -p

Agora, faremos a criao dos grupos e usurio no sistema operacional. Para o ambiente com Oracle RAC, a Oracle solicita que todos os usurios e grupos envolvidos na instalao do software Oracle, possuam os mesmos IDs em todas as mquinas. Por isso, os grupos oinstall, dba e o usurio oracle sero criados da seguinte forma:
1 groupadd -g 1521 oinstall 2 groupadd -g 1522 dba 3 useradd -g oinstall -G dba -u 1521 oracle

A senha do usurio oracle dever ser definida:


1 [root@mvrac1 Server]# passwd oracle 2 Changing password for user oracle. 3 New UNIX password: 4 BAD PASSWORD: it is based on a dictionary word 5 Retype new UNIX password: 6 passwd: all authentication tokens updated successfully

Com os grupos e usurio criados, agora os diretrios devero ser criados:


1 mkdir -p /u01/app/oracle/oraInventory 2 mkdir -p /u01/app/oracle/product/10.2.0/crs 3 mkdir -p /u01/app/oracle/product/10.2.0/db_1 4 chown -R oracle:oinstall /u01

Num ambiente corporativo, recomendado instalar um Oracle Home para o ASM separadamente do Oracle Home do banco de dados. Como estamos num ambiente virtualizado, utilizarei o ASM e o banco de dados no mesmo Oracle Home. Agora, o arquivo /etc/security/limits.conf dever ser editado e as seguintes linhas devero ser adicionadas:
1 oracle soft nproc 2047 2 oracle hard nproc 16384 3 oracle soft nofile 1024 4 oracle hard nofile 65536

O prximo arquivo a ser editado o /etc/pam.d/login:


1 session required pam_limits.so

O prximo arquivo a ser editado o /etc/profile:


1 if [ $USER = "oracle" ]; then 2 ulimit -u 16384 3 4 fi ulimit -n 65536

O mdulo hangcheck-timer dever ser carregado no kernel. Alm disso, ele dever ser carregado automaticamente quando o servidor for iniciado novamente. Num prximo artigo eu definirei em detalhes sobre o que o hangcheck-timer. Editar o arquivo /etc/rc.d/rc.local e inserir a seguinte linha no final arquivo:
1 /sbin/insmod /lib/modules/2.6.18-128.el5/kernel/drivers/char/hangcheck-timer.ko hangcheck_tick=1 hangcheck_margin=10 hangcheck_reboot=1

Aps isso, executar o arquivo e verificar se o mdulo foi carregado:


1 [root@mvrac1 ~]# /etc/rc.d/rc.local 2 [root@mvrac1 ~]# lsmod |grep hangcheck 3 hangcheck_timer 8025 0

Outro ponto importante num ambiente clusterizado, o horrio dos servidores. Como os servidores vo hospedar o mesmo banco de dados, importante que o horrio desses servidores estejam sincronizados. Por este motivo, recomendado utilizar um servidor NTP (Network Time Protocol). Muitas empresas tm servidores NTP internamente, na sua prpria rede, e na grande maioria das vezes, esses servidores NTP apontam para um servidor NTP externo, muito preciso, brasileiro, que o servidor da Rede Nacional de Ensino e Pesquisa (RNP). Se a empresa no tiver um servidor NTP interno, e os servidores de banco de dados conseguirem acessar a Internet, basta colocar a seguinte informao na crontab do usurio root no servidor de banco de dados:
1 * * * * * /usr/sbin/ntpdate ntp.cais.rnp.br >/dev/null 2>/dev/null

Com isso, o servidor sempre ter a hora sincronizada. Para garantir que o servio est OK, ou seja, que o servidor de banco de dados consegue utilizar o binrio ntpdate para acessar o servidor da RNP, basta executar o seguinte comando como root:
1 [root@mvrac1 ~]# ntpdate ntp.cais.rnp.br 18 Feb 00:06:46 ntpdate[23646]: step time server 200.144.121.33 offset 2 90541.348582 sec

O prximo passo configurar o arquivo /etc/hosts do servidor. Nesse arquivo, teremos a configurao de todos os servidores que faro parte do cluster:
01 # ======================================== 02 # Arquivo /etc/hosts configurado para utilizacao do Oracle RAC 03 # Configurado por Marcus Vinicius 04 # 18/02/2010 05 # ======================================== 06 07 # Localhost 08 127.0.0.1 09 10 # Oracle RAC 10g 11 # ----------------localhost.localdomain localhost

12 13 # Rede Publica 14 172.23.10.11 mvrac1.viniciusdba.com.br 15 172.23.10.12 16 17 # InterConnect - Conexao Privada 18 10.0.0.11 mvrac1-priv.viniciusdba.com.br 19 10.0.0.12 20 21 # Virtual IP's 22 172.23.10.21 mvrac1-vip.viniciusdba.com.br 23 172.23.10.22 mvrac2-vip.viniciusdba.com.br mvrac1-vip mvrac2-vip mvrac2-priv.viniciusdba.com.br mvrac1-priv mvrac2-priv mvrac2.viniciusdba.com.br mvrac1 mvrac2

Por enquanto, para finalizarmos os pr-requisitos, falta instalarmos e configurarmos a ASMLib. Eu explicarei o porqu de utilizarmos essa LIB num artigo posterior. Para baixarmos a ASMLib, precisamos acessar o seguinte link: Oracle ASMLib Page / Downloads / Red Hat Enterprise Linux 5 AS*. Deveremos encontrar a seo na pgina que trata da arquitetura 32bit: Intel IA32 (x86) Architecture Aps encontrarmos, os dois primeiros arquivos devero ser baixados:

oracleasm-support-2.1.3-1.el5.i386.rpm; oracleasmlib-2.0.4-1.el5.i386.rpm*.

Aps baixar esses dois arquivos, procurar a verso correta da Lib para o Kernel utilizado no sistema operacional: 2.6.18-128.el5. Pode ser que voc encontre variaes como 2.6.18-128.1.1.el5 e assim por diante. Ignore essas verses, encontre a verso exata do Kernel:

oracleasm-2.6.18-128.el5-2.0.5-1.el5.i686.rpm.

Baixar os trs arquivos, transfer-los via SCP/FTP para o servidor e instal-los, com o usurio root:
1 [root@mvrac1 ~]# rpm -ivh oracleasm* warning: oracleasm-2.6.18-128.el5-2.0.5-1.el5.i686.rpm: Header V3 DSA signature: 2 NOKEY, key ID 1e5e0159 3 Preparing... 4 1:oracleasm-support 5 6 ############################### [100%] ############################### [ 33%]

2:oracleasm-2.6.18-128.el############################### [ 67%] 3:oracleasmlib ############################### [100%]

Aps instalar os pacotes, deveremos configurar a ASMLib no sistema operacional:


01 [root@mvrac1 ~]# /etc/init.d/oracleasm configure 02 Configuring the Oracle ASM library driver. 03 04 This will configure the on-boot properties of the Oracle ASM library 05 driver. The following questions will determine whether the driver is 06 loaded on boot and what permissions it will have. The current values 07 will be shown in brackets ('[]'). Hitting without typing an 08 answer will keep that current value. Ctrl-C will abort.

09 10 Default user to own the driver interface []: oracle 11 Default group to own the driver interface []: dba 12 Start Oracle ASM library driver on boot (y/n) [n]: y 13 Scan for Oracle ASM disks on boot (y/n) [y]: y 14 Writing Oracle ASM library driver configuration: done 15 Initializing the Oracle ASMLib driver: 16 Scanning the system for Oracle ASMLib disks: [ OK ] [ OK ]

Pronto! A primeira fase de pr-requisitos foi concluda! Falta agora particionar os discos e criar a equivalncia de usurios entre os servidores que faro parte do cluster. Como estamos num ambiente virtualizado, podemos agora baixar esse servidor, para clonar esse servidor para a nova mquina virtual (mvrac2). Baixar o servidor:
1 shutdown -h now

Instalao do Oracle RAC 10g Release 2 Parte 5: Clonagem da VM


Vimos no ltimo artigo como realizar a primeira parte da verificao e correo dos pr-requisitos no sistema operacional para instalar o software Bom, agora vamos ver como realizar a clonagem da mquina virtual (servidor mvrac1) para uma nova mquina virtual (servidor Com o servidor mvrac1 baixado, deveremos ir para o Windows Explorer e navegar at o diretrio G:\VMWARE\mvrac1. Todo o contedo do diretrio dever ser selecionado, e aps isso, clicar em Editar / Copiar:

Aps isso, navegar at o diretrio G:\VMWARE\mvrac2. O diretrio dever estar vazio:

Estando vazio, basta clicar em Editar / Colar que a cpia da VM se iniciar:

Quando a cpia for concluda, o diretrio G:\VMWARE\mvrac2 dever ter os seguintes arquivos:

Precisaremos editar o arquivo Other Linux 2.6.x kernel.vmx:

A linha displayName = mvrac1 dever ser editada:

O valor ficar como: displayName = mvrac2. Fechar e salvar o arquivo. Abrir a VMWare Server Console e ir para a aba Home:

Aps isso, clicar no boto Open Existing Virtual Machine:

Somente a VM mvrac1 ser exibida, clicar no boto Browse e navegar at o diretrio G:\VMWARE\mvrac2, clicar no arquivo Other Linux 2.6.x kernel.vmx e clicar no boto Open:

A tela acima ser exibida com a configurao e os devices do servidor mvrac2. Clicar no boto Power On (representado pelo Play de cor verde).

Como essa mquina virtual foi clonada (copiada) a partir de uma mquina virtual j existente. A mensagem acima ser exibida informando que a ltima vez que a mquina sofreu um boot o arquivo de configurao estava em outro diretrio, e nos questiona se queremos criar um novo UUID (unique identifier). O UUID funciona como uma PK para a mquina virtual, onde cada mquina virtual ter seu UUID exclusivo. a partir do UUID que sero atribudos os MAC Address das placas de rede do servidor. Como se trata de uma nova mquina virtual, deveremos deixar a opo Create selecionada e clicar no boto OK. A inicializao da mquina demorar pois tentar obter os IPs atravs de DHCP, j que para as novas mquinas virtuais, ns no atribumos ainda os IPs.

Ainda na VMWare Server Console, a tela acima ser exibida, entrar no sistema operacional com o usurio root. Em seguida, no menu superior, clicar em System / Administration / Network:

Sero exibidas 4 placas de rede no servidor:

eth1; eth0; eth0.bak; eth1.bak.

As placas eth0.bak e eth1.bak so os backups das placas de rede da primeira mquina virtual, e podero ser excludas sem problemas. Em primeiro lugar, a placa eth0.bak dever ser selecionada e em seguida voc dever clicar no boto Deactivate. Isso desativar a placa de rede. Em seguida, clique no boto Delete que j estar habilitado para essa tarefa.

O alerta acima ser exibido, clicar em Yes.

Restar a placa eth1.bak. Ela dever ser selecionada e ento voc clicar no boto Delete.

O alerta acima ser exibido, clicar em Yes.

Restaro as placas eth0 e eth1. Selecionar a placa eth0 e clicar no boto Edit:

A placa eth0 dever respeitar s seguintes configuraes: Address: 172.23.10.12 Subnet mask: 255.255.255.0 Gateway: 172.23.10.1 Aps editar as configuraes acima, clicar em OK.

Selecionar a placa eth1 e clicar no boto Edit:

A placa eth1 dever respeitar s seguintes configuraes: Address: 10.0.0.12 Subnet mask: 255.0.0.0 Aps editar as configuraes acima, clicar em OK.

Clicar em File / Save para salvar as configuraes efetuadas at o momento:

A mensagem acima ser exibida informando que as configuraes entraro em vigor quando o servio de rede for reiniciado ou quando o servidor for reiniciado. Clicar em OK:

Clicar na aba DNS:

No campo Hostname, alterar para mvrac2.viniciusdba.com.br. Clicar novamente em File / Save para salvar as configuraes:

A mensagem acima ser exibida informando que as configuraes entraro em vigor quando o servio de rede for reiniciado ou quando o servidor for reiniciado. Clicar em OK.

Fechar a tela clicando no X.

Na tela inicial do Linux, clicar com o boto direito do mouse no meio na tela, o menu de contexto se abrir, clicar no item Open Terminal:

O servidor dever ser reiniciado:


1 shutdown -r now

Agora na VMWare Server console, clicando na aba do servidor mvrac1, clique no boto Power On para tambm ligar este servidor (deveremos ligar os dois servidores virtuais). Pronto! A clonagem est concluda!

Instalao do Oracle RAC 10g Release 2 Parte 6: Prinstalao do RAC


Falta pouco para que iniciemos a instalao dos softwares Oracle que criaro o nosso ambiente Oracle RAC! Neste artigo de hoje, veremos os seguintes itens:

Criao de equivalncia de usurios para acesso SSH; Particionamento dos discos do storage; Marcao das parties dos discos do storage como discos ASM; Criao de raw devices; Criao de block devices.

Vamos l! Existem duas formas de se instalar o Oracle Clusterware e o Oracle Database num ambiente clusterizado:

Instalao dos binrios (Oracle Homes) em file system clusterizado; Instalao dos binrios (Oracle Homes) em file system local.

Eu particularmente no gosto de instalar os Oracle Homes em file system clusterizado. Isso porque para a aplicao de patches, incidncia de bugs no produto de clusterizao de file systems, ou qualquer problema que fuja s mos do DBA, afeter TODOS os ns do cluster, j que o Oracle Home enxergado por um n ser o mesmo enxergado pelos outros. Isso acontece porque fisicamente s h um Oracle Home, armazenado num file system clusterizado onde permitido montar esse mesmo file system em diversos ns com estado de read/write. Eu sempre fao a instalao dos Oracle Homes em file systems locais. Motivo: a aplicao de patches se torna individualizada, se o patch for do tipo rolling, apenas um n ser interrompido na aplicao do patch, ou seja, o ambiente de banco de dados RAC continuar disponvel para os usurios atravs dos outros ns. Mas no s pela aplicao dos patches que eu escolho a instalao local. O principal motivo que cada mquina ter sua cpia de Oracle Home, desta forma, se uma mquina sofrer algum tipo de problema de hardware ou software, o cluster continuar ativo com outros ns. J que cada n enxergar o seu Oracle Home. Pois bem, no entanto, como feita a instalao dos produtos em file systems locais? simples! A instalao dos produtos Oracle sero disparadas a partir de um nico n. O Oracle Universal Installer (OUI) criar o Oracle Home com seus arquivos e subdiretrios necessrios, aps o relink dos binrios, o prprio OUI disparar uma cpia desse Oracle Home para os outros ns. Para que isso acontea, necessrio que o usurio oracle do primeiro servidor, consiga copiar os arquivos para o segundo servidor sem a necessidade de informar senha (j que isso feito automaticamente). Para que isso seja realizado, criamos o que chamamos de equivalncia de usurio, onde, o usurio oracle do servidor mvrac1 poder copiar qualquer arquivo para o servidor mvrac2, considerando que o usurio oracle no servidor mvrac2 tenha os privilgios necessrios nos diretrios de destino da cpia, e viceversa. Quando a equivalncia de usurios est criada, qualquer ao de cpia ou login remoto, feita sem a solicitao de senha pelo sistema operacional. Bom, a equivalncia de usurio poder ocorrer atravs de duas maneiras:

rsh/rcp; ssh/scp.

A configurao por rsh/rcp mais simples de ser feita, no entanto, no a recomendada, j que no segura. J no ssh/scp, os dados so enviados pela rede de forma criptografada, o que aumenta a segurana. Inclusive, em muitas empresas, as portas utilizadas em rsh/rcp nem so liberadas no firewall

por motivos de segurana. A configurao do ssh/scp um pouco mais chata, mas a que veremos aqui por ser a mais segura. Para realizar a configurao da equivalncia de usurios para acesso via SSH, necessrio criar as chaves SSH de acesso ao usurio. Os passos so esses:

Criao das chaves do usurio oracle do servidor mvrac1; Criao das chaves do usurio oracle do servidor mvrac2; Criao de um arquivo de chaves autorizadas a acesso, contendo as chaves dos usurios oracle dos servidores mvrac1 e mvrac2. Esse arquivo ser utilizado nos dois servidores; Incluso dos servidores mvrac1 e mvrac2 num arquivo de hosts conhecidos para no mais confirmar o acesso via SSH e isso ser feito automaticamente.

Ento, vamos para o primeiro passo, criar as chaves do usurio oracle dos servidores mvrac1 e mvrac2. Com o usurio oracle a partir do servidor mvrac1:
1 [oracle@mvrac1 ~]$ cd /home/oracle 2 [oracle@mvrac1 ~]$ mkdir .ssh 3 [oracle@mvrac1 ~]$ cd .ssh 4 [oracle@mvrac1 .ssh]$ ssh-keygen -t dsa

Pressionar [ENTER] at voltar para o shell.


1 [oracle@mvrac1 .ssh]$ ssh-keygen -t rsa

Pressionar [ENTER] at voltar para o shell. O mesmo precisa ser feito com o usurio oracle no servidor mvrac2:
1 [oracle@mvrac2 ~]$ cd /home/oracle 2 [oracle@mvrac2 ~]$ mkdir .ssh 3 [oracle@mvrac2 ~]$ cd .ssh 4 [oracle@mvrac2 .ssh]$ ssh-keygen -t dsa

Pressionar [ENTER] at voltar para o shell.


1 [oracle@mvrac2 .ssh]$ ssh-keygen -t rsa

Pressionar [ENTER] at voltar para o shell. Agora vamos criar o arquivo com as chaves SSH autorizadas a acessar os servidores. Dentro desse arquivo, haver o contedo das chaves pblicas. Comeando com o usurio oracle no servidor mvrac1:
1 [oracle@mvrac1 .ssh]$ cat *.pub >> authorized_keys 2 [oracle@mvrac1 .ssh]$ ls -l authorized_keys 3 -rw-r--r-- 1 oracle oinstall 1036 Feb 20 10:24 authorized_keys

Observem que o arquivo authorized_keys tem 1036 bytes de tamanho, e, por enquanto, s existe no servidor mvrac1. Agora, colocaremos dentro desse mesmo arquivo, o contedo das chaves pblicas do usurio oracle do servidor mvrac2:
1 [oracle@mvrac1 .ssh]$ ssh mvrac2 cat /home/oracle/.ssh/*.pub >> authorized_keys 2 The authenticity of host 'mvrac2 (172.23.10.12)' can't be established. 3 RSA key fingerprint is ee:df:af:11:67:a9:b5:0a:e0:8f:3d:69:2a:3f:ef:6e. 4 Are you sure you want to continue connecting (yes/no)? yes

Observem que eu tive que confirmar com yes e em seguida, terei que colocar a senha do usurio oracle do servidor mvrac2:
1 oracle@mvrac2's password:

Vamos verificar o tamanho do arquivo?


1 [oracle@mvrac1 .ssh]$ ls -l authorized_keys 2 -rw-r--r-- 1 oracle oinstall 2072 Feb 20 10:26 authorized_keys

Ele agora tem 2072 bytes. Mas, ainda existe somente no servidor mvrac1. Devemos copi-lo para o servidor mvrac2, nesse mesmo diretrio, /home/oracle/.ssh, e, como a equivalncia de usurios ainda no existe nos dois servidores (pela falta do arquivo authorized_keys no servidor mvrac2), terei que fornecer a senha do usurio oracle mais uma vez:
1 [oracle@mvrac1 .ssh]$ scp -p authorized_keys mvrac2:`pwd` 2 oracle@mvrac2's password: 3 authorized_keys 100% 2072 2.0KB/s 00:00

Bom, como no servidor mvrac1 eu estava no diretrio /home/oracle/.ssh. E o arquivo authorized_keys tem que ir para o mesmo diretrio no servidor mvrac2, observem que eu usei um comando do Linux dentro do comando scp. O comando foi o pwd. E sempre que quisermos usar um comando dentro de outro comando, deveremos coloc-lo entre crases: `pwd`. Dessa forma, ele executar o comando pwd no servidor mvrac1 e com base na sada do comando (/home/oracle/.ssh), jogar o arquivo dentro desse diretrio no outro servidor. Se o diretrio no existisse, teramos um erro. Vamos testar para ver se a equivalncia de usurios est funcionando?
The authenticity of host 'mvrac2.viniciusdba.com.br (172.23.10.12)' can't be established. 2 RSA key fingerprint is ee:df:af:11:67:a9:b5:0a:e0:8f:3d:69:2a:3f:ef:6e. 1 3 Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'mvrac2.viniciusdba.com.br' (RSA) to the list of known 4 hosts. 5 Fri Feb 19 11:37:38 BRST 2010

Observem que eu tive que digitar yes. Mas no precisei mais digitar a senha. Porque? No precisei digitar mais a senha porque a equivalncia de usurios funcionou. Mas, o host mvrac2.viniciusdba.com.br ainda no um host conhecido para o SSH. Dessa forma, no servidor mvrac1, com o usurio oracle, deveremos fazer o seguinte:
1 ssh mvrac1 date 2 ssh mvrac1-priv date 3 ssh mvrac1.viniciusdba.com.br date 4 ssh mvrac1-priv.viniciusdba.com.br date 5 ssh mvrac2 date 6 ssh mvrac2-priv date 7 ssh mvrac2.viniciusdba.com.br date 8 ssh mvrac2-priv.viniciusdba.com.br date

Em todos as sadas, deveremos sempre confirmar com yes:


1 Are you sure you want to continue connecting (yes/no)? yes

Vocs viram que mesmo estando no servidor mvrac1, eu preciso fazer o ssh para ele mesmo. Isso necessrio porque quando o Oracle Universal Installer for confirmar se a equivalncia de usurio est funcionando, ele far isso tambm. Quando fizer isso em todos os servidores, para confirmar se est tudo OK, basta refazer o comando:
1 ssh mvrac1 date 2 ssh mvrac1-priv date 3 ssh mvrac1.viniciusdba.com.br date 4 ssh mvrac1-priv.viniciusdba.com.br date 5 ssh mvrac2 date 6 ssh mvrac2-priv date 7 ssh mvrac2.viniciusdba.com.br date 8 ssh mvrac2-priv.viniciusdba.com.br date

Ele no dever mais pedir confirmao para nenhum host:


01 [oracle@mvrac1 .ssh]$ ssh mvrac1 date 02 Sat Feb 20 11:38:59 BRST 2010 03 [oracle@mvrac1 .ssh]$ ssh mvrac1-priv date 04 Sat Feb 20 11:39:00 BRST 2010 05 [oracle@mvrac1 .ssh]$ ssh mvrac1.viniciusdba.com.br date 06 Sat Feb 20 11:39:00 BRST 2010 07 [oracle@mvrac1 .ssh]$ ssh mvrac1-priv.viniciusdba.com.br date 08 Sat Feb 20 11:39:01 BRST 2010 09 [oracle@mvrac1 .ssh]$ ssh mvrac2 date 10 Sat Feb 20 11:39:01 BRST 2010 11 [oracle@mvrac1 .ssh]$ ssh mvrac2-priv date 12 Sat Feb 20 11:39:02 BRST 2010 13 [oracle@mvrac1 .ssh]$ ssh mvrac2.viniciusdba.com.br date 14 Sat Feb 20 11:39:02 BRST 2010 15 [oracle@mvrac1 .ssh]$ ssh mvrac2-priv.viniciusdba.com.br date 16 Sat Feb 20 11:39:03 BRST 2010

Isso criar no servidor mvrac1, dentro do diretrio corrente, /home/oracle/.ssh, o arquivo known_hosts (hosts conhecidos):
1 [oracle@mvrac1 .ssh]$ ls -l known_hosts 2 -rw-r--r-- 1 oracle oinstall 3246 Feb 20 10:33 known_hosts

Agora basta copiar esse arquivo para o outro servidor:


1 [oracle@mvrac1 .ssh]$ scp -p known_hosts mvrac2:`pwd` known_hosts 2 100% 3246 3.2KB/s 00:00

Pronto! Equivalncia de usurios devidamente configurada! Agora iremos para o particionamento de discos. Como vocs se lembram, temos 4 discos disponibilizados:

1 disco de 12GB (disco local); 3 discos de 5GB (discos storage).

No mexeremos nas parties do disco local, pois essas j foram configuradas durante a instalao do Linux. Temos 3 discos de 5GB. Para instalarmos o Oracle RAC precisamos do seguinte:

3 parties para armazenar Voting Disk; 2 parties para armazenar OCR; 3 parties que sero os discos ASM.

Entrarei em mais detalhes sobre o Voting Disk e o OCR no artigo apropriado. At o Red Hat Enterprise Linux 4, geralmente se usava raw devices para o Voting Disk e o OCR. Os raw devices, so dispositivos brutos de caracter e no so buferizados. Porm, no kernel 2.6 o raw device foi depreciado, e no Red Hat Enterprise Linux 5 o servio rawdevices nem existe mais. Por esse motivo, necessrio que o OCR e o Voting Disk deixem de usar raw devices e passem a usar block devices. Os block devices so dispositivos brutos de nvel de acesso a blocos. Alm disso, so buferizados. Porm, no h diferenas em desempenho (Metalink Note: 401132.1 How to install Oracle Clusterware with shared storage on block devices). Mas, o Oracle Universal Installer do Oracle Clusterware 10.2.0.1 no consegue determinar se os block devices esto compartilhados entre os ns (premissa para que se tenha um ambiente clusterizado), isso acontece porque quando o produto Clusterware 10.2.0.1 foi lanado, ainda no se usava block devices para esse fim. Sendo assim, a instalao precisa ser feita apontando para os dispositivos raw devices, e somente aps a aplicao do patchset, que reaponteramos para os block devices. Mas, se eu comentei que os raw devices foram depreciados, como que instalaremos utilizando esse tipo de dispositivo? Usaremos um workaround para criar os dispositivos raw devices no RHEL5. Porm, como se trata de um workaround, devemos partir para a soluo definitiva o quanto antes, a fim de evitar uma possvel incidncia de bugs envolvendo a utilizao de raw devices. At mesmo se encontrarmos algum bug envolvendo raw devices, tanto a Oracle quanto a Red Hat citaro que estamos utilizando um cenrio que no mais certificado, j que foi anunciada a depreciao desse tipo de dispositivo. Sendo assim, a tabela de parties ser a seguinte:

3 parties para armazenar Voting Disk em raw device de 256MB cada; 3 parties para armazenar Voting Disk em block device de 256MB cada; 2 parties para armazenar OCR em raw device de 256MB cada; 2 parties para armazenar OCR em block device de 256MB cada; 3 parties que sero os discos ASM (o restante livre dos discos).

Vamos consultar os discos existentes no servidor mvrac1? Como root:


01 [root@mvrac1 oracle]# fdisk -l 02 03 Disk /dev/sda: 12.8 GB, 12884901888 bytes 04 255 heads, 63 sectors/track, 1566 cylinders 05 Units = cylinders of 16065 * 512 = 8225280 bytes 06 07 Device Boot 08 /dev/sda1 * 09 /dev/sda2 10 11 Disk /dev/sdb: 5368 MB, 5368709120 bytes 12 255 heads, 63 sectors/track, 652 cylinders 13 Units = cylinders of 16065 * 512 = 8225280 bytes 14 15 Device Boot Start End Blocks Id System Start 1 1436 End 1435 1566 Blocks 11526606 1052257+ Id 83 82 System Linux Linux swap / Solaris

16 17 Disk /dev/sdc: 5368 MB, 5368709120 bytes 18 255 heads, 63 sectors/track, 652 cylinders 19 Units = cylinders of 16065 * 512 = 8225280 bytes 20 21 22 23 Disk /dev/sdd: 5368 MB, 5368709120 bytes 24 255 heads, 63 sectors/track, 652 cylinders 25 Units = cylinders of 16065 * 512 = 8225280 bytes 26 27 Device Boot Start End Blocks Id System Device Boot Start End Blocks Id System

O disco sda o disco local do servidor mvrac1 (12GB). J, os discos sdb, sdc e sdd so os discos do storage. Vamos verificar se esses discos do storage tambm esto no servidor mvrac2?
01 [root@mvrac2 oracle]# fdisk -l 02 03 Disk /dev/sda: 12.8 GB, 12884901888 bytes 04 255 heads, 63 sectors/track, 1566 cylinders 05 Units = cylinders of 16065 * 512 = 8225280 bytes 06 07 Device Boot 08 /dev/sda1 * 09 /dev/sda2 10 11 Disk /dev/sdb: 5368 MB, 5368709120 bytes 12 255 heads, 63 sectors/track, 652 cylinders 13 Units = cylinders of 16065 * 512 = 8225280 bytes 14 15 16 17 Disk /dev/sdc: 5368 MB, 5368709120 bytes 18 255 heads, 63 sectors/track, 652 cylinders 19 Units = cylinders of 16065 * 512 = 8225280 bytes 20 21 22 23 Disk /dev/sdd: 5368 MB, 5368709120 bytes 24 255 heads, 63 sectors/track, 652 cylinders 25 Units = cylinders of 16065 * 512 = 8225280 bytes 26 27 Device Boot Start End Blocks Id System Device Boot Start End Blocks Id System Device Boot Start End Blocks Id System Start 1 1436 End 1435 1566 Blocks 11526606 1052257+ Id 83 82 System Linux Linux swap / Solaris

Como eu preciso criar mais de 4 parties por disco, e no Linux s possvel criar 4 parties primrias, criaremos ento uma partio estendida com o tamanho integral do disco, e depois criaremos as parties lgicas para atender as nossas necessidades. Vamos ver como ser exatamente a tabela de parties?

Como estamos vendo na tabela de parties acima, os discos sdb e sdc tero 5 parties lgicas e 1 partio extendida. Apenas para manter o padro de nomenclatura, o disco sdd tambm ter 1 partio extendida e 3 parties lgicas. Bom, sabendo qual ser a tabela de parties, vamos particionar? Vamos comear pelo disco sdb, como root no servidor mvrac1:
1 [root@mvrac1 oracle]# fdisk /dev/sdb

Ser solicitado o comando: criaremos a partio, ento digitaremos a tecla [n] de new partition e depois pressionaremos a tecla [ENTER]:
1 Command (m for help): n

Em seguida, deveremos especificar se ser uma partio estendida [e] ou primria [p]. Nesse caso, criaremos uma partio estendida, portanto, digitaremos a tecla [e] e depois a tecla [ENTER]:
1 Command action 2 e extended 3 4e p primary partition (1-4)

Deveremos qual partio ser (de 1 a 4), nesse caso, escolheremos a partio 1:
1 Partition number (1-4): 1

Em seguida, deveremos especificar o tamanho da partio, como a partio estendida, pegar todo o tamanho do disco, basta pressionar [ENTER] para o primeiro cilindro, e [ENTER] para o ltimo cilindro:
1 First cylinder (1-652, default 1): 2 Using default value 1 3 Last cylinder or +size or +sizeM or +sizeK (1-652, default 652): 4 Using default value 652

Maravilha! Agora precisamos criar as parties lgicas, automaticamente, sero atribudos nmeros a partir de 5. Criar a nova partio, pressionar a tecla [n] e pressionar [ENTER]:
1 Command (m for help): n

A partio agora ser do tipo lgica, basta pressionar a tecla [l] e depois [ENTER]:
1 Command action 2 l logical (5 or over) 3 4l p primary partition (1-4)

Essa partio ter o tamanho de 256MB, portanto, basta pressionar [ENTER] no primeiro cilindro e no ltimo cilindro, digitar +256M e em seguida pressionar [ENTER]:
1 First cylinder (1-652, default 1): 1 2 Last cylinder or +size or +sizeM or +sizeK (1-652, default 652): +256M

Precisamos criar mais 3 parties de 256MB (colocarei aqui todos os comandos num nico bloco):
01 Command (m for help): n 02 Command action 03 04 l p logical (5 or over) primary partition (1-4)

05 l 06 First cylinder (33-652, default 33): 07 Using default value 33 08 Last cylinder or +size or +sizeM or +sizeK (33-652, default 652): +256M 09 10 Command (m for help): n 11 Command action 12 l logical (5 or over) 13 14 l p primary partition (1-4)

15 First cylinder (65-652, default 65): 16 Using default value 65 17 Last cylinder or +size or +sizeM or +sizeK (65-652, default 652): +256M 18 19 Command (m for help): n 20 Command action 21 22 l p logical (5 or over) primary partition (1-4)

23 l 24 First cylinder (97-652, default 97): 25 Using default value 97 26 Last cylinder or +size or +sizeM or +sizeK (97-652, default 652): +256M

Agora precisamos criar a ltima partio lgica desse disco, basta pressionar [n], depois [ENTER], na hora de especificar o tamanho, basta pressionar [ENTER] para o cilindro inicial e o cilindro final:
1 Command (m for help): n 2 Command action 3 4 l p logical (5 or over) primary partition (1-4)

5l 6 First cylinder (129-652, default 129): 7 Using default value 129 8 Last cylinder or +size or +sizeM or +sizeK (129-652, default 652): 9 Using default value 652

Para saber se a tabela de parties est correta, basta pressionar [p] e depois [ENTER]:
01 Command (m for help): p 02 03 Disk /dev/sdb: 5368 MB, 5368709120 bytes 04 255 heads, 63 sectors/track, 652 cylinders 05 Units = cylinders of 16065 * 512 = 8225280 bytes 06 07 Device Boot 08 /dev/sdb1 09 /dev/sdb5 10 /dev/sdb6 11 /dev/sdb7 12 /dev/sdb8 13 /dev/sdb9 Start 1 1 33 65 97 129 End 652 32 64 96 128 652 Blocks 5237158+ 256977 257008+ 257008+ 257008+ 4208998+ Id 5 83 83 83 83 83 System Extended Linux Linux Linux Linux Linux

Como est correto, temos que gravar a tabela e parties, basta pressionar [w] e depois [ENTER]:
1 Command (m for help): w 2 The partition table has been altered! 3 4 Calling ioctl() to re-read partition table. 5 Syncing disks.

Como se trata de um disco compartilhado entre os servidores, vamos ver se ele foi tambm particionado no servidor mvrac2? Como root no servidor mvrac2:
01 [root@mvrac2 oracle]# fdisk -l /dev/sdb 02 03 Disk /dev/sdb: 5368 MB, 5368709120 bytes 04 255 heads, 63 sectors/track, 652 cylinders 05 Units = cylinders of 16065 * 512 = 8225280 bytes 06 07 Device Boot 08 /dev/sdb1 09 /dev/sdb5 10 /dev/sdb6 11 /dev/sdb7 12 /dev/sdb8 13 /dev/sdb9 Start 1 1 33 65 97 129 End 652 32 64 96 128 652 Blocks 5237158+ 256977 257008+ 257008+ 257008+ 4208998+ Id 5 83 83 83 83 83 System Extended Linux Linux Linux Linux Linux

As parties apareceram no servidor mvrac2! Mas, como o comando foi feito a partir do servidor mvrac1, os devices de cada partio ainda no foram criados no servidor mvrac2 (no diretrio /dev/). H duas formas de criarmos esses devices das parties no servidor mvrac2: reiniciando o servidor, ou, como root:
1 [root@mvrac2 oracle]# fdisk /dev/sdb

E gravar a tabela de parties, pressionando a tecla [w] e depois [ENTER]:


1 Command (m for help): w 2 The partition table has been altered! 3 4 Calling ioctl() to re-read partition table.

5 Syncing disks.

Pronto! O disco /dev/sdb foi particionado com sucesso nos 2 servidores. O disco /dev/sdc ter a mesma estrutura de parties que o disco /dev/sdb, colocarei o comando num nico bloco:
01 [root@mvrac1 oracle]# fdisk /dev/sdc 02 03 Command (m for help): n 04 Command action 05 06 e p extended primary partition (1-4)

07 e 08 Partition number (1-4): 1 09 First cylinder (1-652, default 1): 10 Using default value 1 11 Last cylinder or +size or +sizeM or +sizeK (1-652, default 652): 12 Using default value 652 13 14 Command (m for help): n 15 Command action 16 l logical (5 or over) 17 18 l p primary partition (1-4)

19 First cylinder (1-652, default 1): 20 Using default value 1 21 Last cylinder or +size or +sizeM or +sizeK (1-652, default 652): +256M 22 23 Command (m for help): n 24 Command action 25 26 l p logical (5 or over) primary partition (1-4)

27 l 28 First cylinder (33-652, default 33): 29 Using default value 33 30 Last cylinder or +size or +sizeM or +sizeK (33-652, default 652): +256M 31 32 Command (m for help): n 33 Command action 34 l logical (5 or over) 35 36 l p primary partition (1-4)

37 First cylinder (65-652, default 65): 38 Using default value 65 39 Last cylinder or +size or +sizeM or +sizeK (65-652, default 652): +256M 40 41 Command (m for help): n 42 Command action 43 44 l p logical (5 or over) primary partition (1-4)

45 l 46 First cylinder (97-652, default 97): 47 Using default value 97 48 Last cylinder or +size or +sizeM or +sizeK (97-652, default 652): +256M

49 50 Command (m for help): n 51 Command action 52 l logical (5 or over) 53 54 l p primary partition (1-4)

55 First cylinder (129-652, default 129): 56 Using default value 129 57 Last cylinder or +size or +sizeM or +sizeK (129-652, default 652): 58 Using default value 652 59 60 Command (m for help): p 61 62 Disk /dev/sdc: 5368 MB, 5368709120 bytes 63 255 heads, 63 sectors/track, 652 cylinders 64 Units = cylinders of 16065 * 512 = 8225280 bytes 65 66 Device Boot Start 1 1 33 65 97 129 End 652 32 64 96 128 652 Blocks 5237158+ 256977 257008+ 257008+ 257008+ 4208998+ Id 5 83 83 83 83 83 System Extended Linux Linux Linux Linux Linux 67 /dev/sdc1 68 /dev/sdc5 69 /dev/sdc6 70 /dev/sdc7 71 /dev/sdc8 72 /dev/sdc9 73 74 Command (m for help): w 75 The partition table has been altered! 76 77 Calling ioctl() to re-read partition table. 78 Syncing disks.

Lembrando que no servidor mvrac2 esse disco precisa ter os devices das parties criadas no diretrio /dev:
1 [root@mvrac2 oracle]# fdisk /dev/sdc 2 3 Command (m for help): w 4 The partition table has been altered! 5 6 Calling ioctl() to re-read partition table. 7 Syncing disks.

O disco /dev/sdd ter 1 partio estendida com o tamanho total do disco, 2 parties de 256MB e 1 partio com o restante de espao disponvel no disco (4,5GB):
01 [root@mvrac1 oracle]# fdisk /dev/sdd 02 03 Command (m for help): n 04 Command action 05 06 e p extended primary partition (1-4)

07 e 08 Partition number (1-4): 1

09 First cylinder (1-652, default 1): 10 Using default value 1 11 Last cylinder or +size or +sizeM or +sizeK (1-652, default 652): 12 Using default value 652 13 14 Command (m for help): n 15 Command action 16 l logical (5 or over) 17 18 l p primary partition (1-4)

19 First cylinder (1-652, default 1): 20 Using default value 1 21 Last cylinder or +size or +sizeM or +sizeK (1-652, default 652): +256M 22 23 Command (m for help): n 24 Command action 25 26 l p logical (5 or over) primary partition (1-4)

27 l 28 First cylinder (33-652, default 33): 29 Using default value 33 30 Last cylinder or +size or +sizeM or +sizeK (33-652, default 652): +256M 31 32 Command (m for help): n 33 Command action 34 l logical (5 or over) 35 36 l p primary partition (1-4)

37 First cylinder (65-652, default 65): 38 Using default value 65 39 Last cylinder or +size or +sizeM or +sizeK (65-652, default 652): 40 Using default value 652 41 42 Command (m for help): p 43 44 Disk /dev/sdd: 5368 MB, 5368709120 bytes 45 255 heads, 63 sectors/track, 652 cylinders 46 Units = cylinders of 16065 * 512 = 8225280 bytes 47 48 Device Boot Start 1 1 33 65 End 652 32 64 652 Blocks 5237158+ 256977 257008+ 4723078+ Id 5 83 83 83 System Extended Linux Linux Linux 49 /dev/sdd1 50 /dev/sdd5 51 /dev/sdd6 52 /dev/sdd7 53 54 Command (m for help): w 55 The partition table has been altered! 56 57 Calling ioctl() to re-read partition table. 58 Syncing disks.

No servidor mvrac2 esse disco precisa ter os devices das parties criadas no diretrio /dev:
1 [root@mvrac2 oracle]# fdisk /dev/sdd 2 3 Command (m for help): w 4 The partition table has been altered! 5 6 Calling ioctl() to re-read partition table. 7 Syncing disks.

As parties foram criadas! Agora, marcaremos como discos de ASM, as parties reservadas para o ASM. Lembrando que as parties reservadas para o ASM so:

/dev/sdb9: 4GB; /dev/sdc9: 4GB; /dev/sdd7: 4,5GB.

Para marcarmos as parties como discos ASM, basta usarmos a ASMLib. A nomenclatura padro ser: ASMDISKx. Como root, no servidor mvrac1:
1 [root@mvrac1 oracle]# /etc/init.d/oracleasm createdisk ASMDISK1 /dev/sdb9 2 Marking disk "ASMDISK1" as an ASM disk: [ OK ] 3 [root@mvrac1 oracle]# /etc/init.d/oracleasm createdisk ASMDISK2 /dev/sdc9 4 Marking disk "ASMDISK2" as an ASM disk: [ OK ] 5 [root@mvrac1 oracle]# /etc/init.d/oracleasm createdisk ASMDISK3 /dev/sdd7 6 Marking disk "ASMDISK3" as an ASM disk: [ OK ]

Para verificar se os discos foram criados, ainda no servidor mvrac1:


1 [root@mvrac1 oracle]# /etc/init.d/oracleasm listdisks 2 ASMDISK1 3 ASMDISK2 4 ASMDISK3

Agora, precisamos verificar se o servidor mvrac2 enxergar os discos de ASM criados. Antes, precisamos fazer um scan dos discos, no momento do scan, a ASMLib ler o cabealho de todas as parties de disco do servidor:
1 [root@mvrac2 oracle]# /etc/init.d/oracleasm scandisks 2 Scanning the system for Oracle ASMLib disks:

OK

Agora precisamos verificar se os discos foram realmente enxergados:


1 [root@mvrac2 oracle]# /etc/init.d/oracleasm listdisks 2 ASMDISK1 3 ASMDISK2 4 ASMDISK3

Pronto! Discos do ASM criados! Agora falta apenas criar os raw e block devices. Usaremos o utilitrio chamado UDEV para isso. Para criarmos esses dispositivos, criaremos arquivos com as regras necessrias no diretrio /etc/udev/rules.d. O arquivo precisa ter a extenso .rules.

Criaremos primeiro o arquivo que criar os raw devices:


1 [root@mvrac1 oracle]# cd /etc/udev/rules.d/ 2 [root@mvrac1 oracle]# vi 62-oracle-raw.rules

O contedo do arquivo 62-oracle-raw.rules ser:


1 ACTION=="add", KERNEL=="sdb5", RUN+="/bin/raw /dev/raw/raw1 %N" 2 ACTION=="add", KERNEL=="sdb7", RUN+="/bin/raw /dev/raw/raw2 %N" 3 ACTION=="add", KERNEL=="sdc5", RUN+="/bin/raw /dev/raw/raw3 %N" 4 ACTION=="add", KERNEL=="sdc7", RUN+="/bin/raw /dev/raw/raw4 %N" 5 ACTION=="add", KERNEL=="sdd5", RUN+="/bin/raw /dev/raw/raw5 %N" 6 KERNEL=="raw[1-5]*", OWNER="oracle", GROUP="dba", MODE="640"

Agora criaremos o arquivo que criar os block devices:


1 [root@mvrac1 oracle]# vi 63-oracle-block.rules

O contedo do arquivo 63-oracle-block.rules ser:


1 KERNEL=="sdb6", NAME="ocr1", OWNER="root", GROUP="dba", MODE="0640" 2 KERNEL=="sdb8", NAME="voting1", OWNER="oracle", GROUP="dba", MODE="0640" 3 KERNEL=="sdc6", NAME="ocr2", OWNER="root", GROUP="dba", MODE="0640" 4 KERNEL=="sdc8", NAME="voting2", OWNER="oracle", GROUP="dba", MODE="0640" 5 KERNEL=="sdd6", NAME="voting3",OWNER="oracle",GROUP="dba", MODE="0640"

Aps isso, faremos o restart do servio udev:


1 [root@mvrac1 rules.d]# start_udev 2 Starting udev:

OK

Agora verificaremos se os devices foram criados:


01 [root@mvrac1 rules.d]# ls -l /dev/ocr* /dev/voting* /dev/raw/raw* 02 brw-r----- 1 oracle dba 8, 22 Feb 20 17:34 /dev/ocr1 03 brw-r----- 1 oracle dba 8, 38 Feb 20 17:35 /dev/ocr2 04 crw-r----- 1 oracle dba 162, 1 Feb 20 17:36 /dev/raw/raw1 05 crw-r----- 1 oracle dba 162, 06 crw-r----- 1 oracle dba 162, 07 crw-r----- 1 oracle dba 162, 08 crw-r----- 1 oracle dba 162, 09 brw-r----- 1 root 10 brw-r----- 1 root dba dba 2 Feb 20 17:36 /dev/raw/raw2 3 Feb 20 17:36 /dev/raw/raw3 4 Feb 20 17:36 /dev/raw/raw4 5 Feb 20 17:36 /dev/raw/raw5

8, 24 Feb 20 17:34 /dev/voting1 8, 40 Feb 20 17:35 /dev/voting2 8, 54 Feb 20 17:35 /dev/voting3

11 brw-r----- 1 oracle dba

Os dispositivos foram criados! Agora precisamos copiar esses arquivos para o servidor mvrac2:
1 [root@mvrac1 rules.d]# scp -p *ora*.rules mvrac2:`pwd` 2 The authenticity of host 'mvrac2 (172.23.10.12)' can't be established. 3 RSA key fingerprint is ee:df:af:11:67:a9:b5:0a:e0:8f:3d:69:2a:3f:ef:6e. 4 Are you sure you want to continue connecting (yes/no)? yes 5 Warning: Permanently added 'mvrac2,172.23.10.12' (RSA) to the list of known hosts. 6 root@mvrac2's password:

7 62-oracle-raw.rules 8 63-oracle-block.rules

100% 100%

386 359

0.4KB/s 0.4KB/s

00:00 00:00

Teremos que confirmar com yes, e depois digitar a senha do usurio root. Isso acontece porque criamos a equivalncia de usurio para o usurio oracle. O root no precisa ter a equivalncia de usurio criada. Aps copiar os arquivos para o servidor mvrac2, teremos que reiniciar o servio udev no servidor mvrac2:
1 [root@mvrac2 rules.d]# start_udev 2 Starting udev:

OK

Agora verificaremos se os devices foram criados: Agora verificaremos se os devices foram criados:
01 [root@mvrac2 rules.d]# ls -l /dev/ocr* /dev/voting* /dev/raw/raw* 02 brw-r----- 1 oracle dba 8, 22 Feb 20 17:34 /dev/ocr1 03 brw-r----- 1 oracle dba 8, 38 Feb 20 17:35 /dev/ocr2 04 crw-r----- 1 oracle dba 162, 1 Feb 20 17:36 /dev/raw/raw1 05 crw-r----- 1 oracle dba 162, 06 crw-r----- 1 oracle dba 162, 07 crw-r----- 1 oracle dba 162, 08 crw-r----- 1 oracle dba 162, 09 brw-r----- 1 root 10 brw-r----- 1 root dba dba 2 Feb 20 17:36 /dev/raw/raw2 3 Feb 20 17:36 /dev/raw/raw3 4 Feb 20 17:36 /dev/raw/raw4 5 Feb 20 17:36 /dev/raw/raw5

8, 24 Feb 20 17:34 /dev/voting1 8, 40 Feb 20 17:35 /dev/voting2 8, 54 Feb 20 17:35 /dev/voting3

11 brw-r----- 1 oracle dba

Pronto! Devices criados! Observao: Apenas para ficar claro, sobre as parties de discos, num ambiente corporativo eu costumo pedir o seguinte:

1 disco (LUN) de 2GB para utilizar as parties raw devices (esse disco posteriormente ser eliminado); 2 discos (LUNs) de 512MB para utilizar as parties block devices; 1 disco (LUN) de 256MB para utilizar a partio block device; Quantidade X de discos para ASM, a vai depender do tamanho do banco de dados.

Instalao do Oracle RAC 10g Release 2 Parte 7: Instalao do Oracle Clusterware


Nesse artigo instalaremos o Oracle Clusterware 10.2.0.1. Com isso, j subiremos no sistema operacional dos servidores mvrac1 e mvrac2 a camada de cluster necessria para a criao de um banco de dados Oracle RAC. Alguns pontos importantes:

A instalao do Oracle Home ser local, ou seja, cada servidor ter uma cpia do Oracle Home; Cada servidor precisa de pelo menos duas placas de rede: o Rede Pblica: para subir o endereo IP Virtual, o chamado VIP; o Rede Privada: para subir o endereo IP da rede privada entre os ns, o chamado InterConnect. Precisamos de discos compartilhados entre os servidores: o Armazenamento do OCR; o Armazenamento do Voting Disk; o Discos ASM. Os usurios oracle de cada servidor precisaro ter equivalncia de usurio entre si.

Bom, vamos l?

Na tela da VMWare Server Console, deveremos clicar duas vezes no cone do CD-ROM (identificado pela seta vermelha).

Eu fiz uma imagem ISO com alguns softwares Oracle, portanto, na tela acima, deveremos manter a opo Use ISO image: marcada, e clicar em Browse, para escolhermos a mdia do Oracle:

Basta selecionar a imagem ISO, e clicar em Open. Agora, precisamos montar esse CD no servidor. Como root no servidor mvrac1:
1 [root@mvrac1 ~]# mount /dev/hdc /media 2 mount: block device /dev/hdc is write-protected, mounting read-only

Para verificar se o disco foi montado:


1 [root@mvrac1 ~]# df -h 2 Filesystem 3 /dev/sda1 4 tmpfs 5 /dev/hdc Size 11G 252M 3.1G Used Avail Use% Mounted on 2.4G 0 3.1G 7.8G 252M 24% / 0% /dev/shm

0 100% /media

Com o disco montado, precisamos acess-lo:


1 [root@mvrac1 ~]# cd /media/Ora10.2.0.1

Vamos ver o contedo do disco:


1 [root@mvrac1 Ora10.2.0.1]# ls -l 2 total 8 3 dr-xr-xr-x 6 root root 2048 May 21 4 dr-xr-xr-x 9 root root 2048 May 21 5 dr-xr-xr-x 6 root root 2048 May 21 6 dr-xr-xr-x 6 root root 2048 May 21 2008 client 2008 clusterware 2008 companion 2008 database

Agora copiaremos o diretrio clusterware para o diretrio /home/oracle:


1 [root@mvrac1 Ora10.2.0.1]# cp -rp clusterware/ /home/oracle/

Agora precisamos acertar as permisses, pois o diretrio foi copiado como root:
1 [root@mvrac1 ~]# chown -R oracle:oinstall /home/oracle/*

Agora, iniciaremos a instalao. H algumas formas de realizar a instalao:


Localmente no servidor, atravs da VMWare Server Console; Remotamente, atravs de um software que simule um X-Server (existem diversas opes gratuitas na Internet); Remotamente, atravs de uma estao Linux/Unix/Mac que tenha a parte grfica (X) habilitado.

Eu usarei a terceira opo, portanto, a partir da minha estao:


1 vinicius@Viniciuss-MacBook:~$ ssh -X oracle@172.23.10.11 2 oracle@172.23.10.11's password: 3 /usr/bin/xauth: creating new authority file /home/oracle/.Xauthority

Testando para ver se a parte grfica est funcionando:


1 [oracle@mvrac1 ~]$ xclock

O teste funcionou! Vejam:

Bom, apenas para facilitar a instalao, vamos definir algumas variveis de ambiente, j colocando-as no arquivo .bash_profile:
1 [oracle@mvrac1 ~]$ vi .bash_profile

O contedo do arquivo dever ter o seguinte:


01 # .bash_profile

03 04 05 06

# Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi

08 export ORACLE_BASE=/u01/app/oracle 09 export ORA_CRS_HOME=${ORACLE_BASE}/product/10.2.0/crs 10 export ORACLE_HOME=${ORACLE_BASE}/product/10.2.0/db_1 export 1 PATH=${ORA_CRS_HOME}/bin:${ORACLE_HOME}/bin:/usr/kerberos/bin:/usr/local/bin:/bin 1 :/usr/bin:/usr/sbin:/sbin

Com o arquivo configurado, devemos fechar o vi e salv-lo. Aps isso, devemos carregar as variveis de ambiente:
1 [oracle@mvrac1 ~]$ . .bash_profile

Para confirmar se as variveis foram carregadas:


1 [oracle@mvrac1 ~]$ env |grep ORA 2 ORA_CRS_HOME=/u01/app/oracle/product/10.2.0/crs 3 ORACLE_BASE=/u01/app/oracle 4 ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1

Pronto! Vamos iniciar a instalao:


01 [oracle@mvrac1 ~]$ cd clusterware/ 02 [oracle@mvrac1 clusterware]$ ls -l 03 total 36 04 dr-xr-xr-x 2 oracle oinstall 4096 May 21 05 dr-xr-xr-x 6 oracle oinstall 4096 May 21 06 dr-xr-xr-x 4 oracle oinstall 4096 May 21 07 dr-xr-xr-x 2 oracle oinstall 4096 May 21 08 dr-xr-xr-x 2 oracle oinstall 4096 May 21 09 -r-xr-xr-x 1 oracle oinstall 1328 Jul 2 2008 cluvfy 2008 doc 2008 install 2008 response 2008 rpm 2005 runInstaller 2008 stage 2008 upgrade 2005 welcome.html

10 dr-xr-xr-x 9 oracle oinstall 4096 May 21 11 dr-xr-xr-x 2 oracle oinstall 4096 May 21 12 -r--r--r-- 1 oracle oinstall 3445 Jul 2

Como estamos usando o RHEL5/OEL5, quando o produto 10.2.0.1 foi lanado, essa verso de sistema operacional ainda no estava disponvel no mercado, precisaremos executar a instalao informando que a verificao de pr-requisitos dever ser ignorada:
1 [oracle@mvrac1 clusterware]$ ./runInstaller -ignoreSysPreReqs

A tela acima a tela inicial. Devemos clicar em Next:

A tela acima solicita definirmos a localizao do inventrio e qual ser o grupo no sistema operacional que ser o dono do inventrio. Os valores sugeridos sero:

Para a localizao do inventrio: /u01/app/oracle/oraInventory; Para o grupo do sistema operacional: oinstall.

Clicar em Next:

Na tela acima devemos especificar o nome do Oracle Home do Clusterware, assim como a sua localizao. Os valores sugeridos so:

Para o nome do Oracle Home do Clusterware: OraCrs10g_home; Para a localizao do Oracle Home do Clusterware: /u01/app/oracle/product/10.2.0/crs.

Clicar em Next:

O OUI reclamar de pouca memria, bastar clicar na caixa de seleo onde est escrito Warning na coluna de Status:

Aps ter clicado na caixa, observem que o status passar para o valor User Verified. Clicar em Next:

Na tela acima, devemos especificar a configurao do cluster. O campo Cluster Name deve ter valor nico na rede corporativa. O nome default crs. Eu alterei o valor para crs_mv. Observem que no campo Cluster Nodes as informaes de Public Node Name,Private Node Name e Virtual Host Name j aparecero para o host mvrac1, j que a instalao foi iniciada a partir desse host. Como o

cluster ter 2 ns, precisamos adicionar mais um n na configurao do cluster. Basta clicar no boto Add:

Deveremos preencher os campos Public Node Name, Private Node Name e Virtual Host Name. Os valores sugeridos so:

Para o Public Node Name: mvrac2.viniciusdba.com.br; Para o Private Node Name: mvrac2-priv.viniciusdba.com.br; Para o Virtual Node Name: mvrac2-vip.viniciusdba.com.br.

Clicar em OK:

Observem que agora na tela so exibidos os 2 ns. Ao clicar em Next, o OUI verificar 2 itens:

Se os hostnames informados existem no arquivo /etc/hosts; Se h equivalncia de usurio entre os ns especificados para o usurio oracle.

Apenas para lembrarmos do /etc/hosts:


01 # ============================================================ 02 # Arquivo /etc/hosts configurado para utilizacao do Oracle RAC 03 # Configurado por Marcus Vinicius 04 # 18/02/2010 05 # ============================================================ 06 07 # Localhost 08 127.0.0.1 localhost.localdomain localhost

09 10 # Oracle RAC 10g 11 #----------------12 13 # Rede Publica 14 172.23.10.11 15 172.23.10.12 16 17 # InterConnect - Conexao Privada 18 10.0.0.11 19 10.0.0.12 20 21 # Virtual IP's 22 172.23.10.21 23 172.23.10.22 mvrac1-vip.viniciusdba.com.br mvrac2-vip.viniciusdba.com.br mvrac1-vip mvrac2-vip mvrac1-priv.viniciusdba.com.br mvrac2-priv.viniciusdba.com.br mvrac1-priv mvrac2-priv mvrac1.viniciusdba.com.br mvrac2.viniciusdba.com.br mvrac1 mvrac2

Clicar em Next:

Na tela acima sero exibidas TODAS as interfaces de rede existentes no servidor. A regra que utilizaremos ser:

eth0: Pblica; eth1: Privada.

Mas, observem que as duas interfaces aparecem como Privadas. Nesse caso, deveremos selecionar a interface eth0 e clicar no boto Edit:

Basta clicar na opo Option e depois clicar em OK. Caso tivssemos mais de duas placas de rede, deveramos selecionar a placa que no seria usada no cluster, e selecionar a opo Do not use.

Aps editarmos a placa de rede eth0, agora sim observaremos que as duas placas esto com as configuraes adequadas. Clicar em Next:

Na tela acima, deveremos especificar o tipo de redundncia para o OCR: normal (2 locais), externa (1 local). O tipo de redundncia escolhido foi a normal. Aps isso, deveremos especificar 2 locais para armazenar o OCR. Lembram que eu comentei que o OUI do Clusterware 10.2.0.1 no consegue determinar se os block devices esto compartilhados entre os ns do cluster? Pois bem, eu simulei o erro e especifiquei um local apontando para um block device, e outro apontando para um raw device:

OCR Location: /dev/ocr1 (block device); OCR Mirror Location: /dev/raw/raw4 (raw device).

Clicar em Next:

A tela acima ser exibida com a mensagem informando que a localizao /dev/ocr1 no est compartilhada entre os ns do cluster. Isso descrito na Nota do Metalink nmero 401132.1. Clicar em OK:

Devemos corrigir o valor para o campo Specify OCR Location. Os dois campos devero estar preenchidos da seguinte forma:

OCR Location: /dev/raw/raw2; OCR Mirror Location: /dev/raw/raw4.

Clicar em Next:

Na tela acima, deveremos especificar o tipo de redundncia e localizao do voting disk. O tipo de redundncia escolhido foi o normal. A localizao dos voting disks dever ser o seguinte:

Voting Disk Location: /dev/raw/raw1; Additional Voting Disk 1 Location: /dev/raw/raw3; Additional Voting Disk 2 Location: /dev/raw/raw5.

Clicar em Next:

Um resumo sobre a instalao ser exibido. Clicar em Install:

A janela com o progresso da instalao ser exibida. Observem que h um item chamado Remote operations pending. nesse item que o Oracle Home ser copiado para o outro n.

Uma janela aparecer solicitando executarmos scripts como root nos 2 ns do cluster. No podemos executar os scripts em paralelo!! Devemos executar os scripts no primeiro n, e depois, no segundo n. Vamos execuo do script /u01/app/oracle/oraInventory/orainstRoot.sh no n mvrac1:
1 [root@mvrac1 ~]# /u01/app/oracle/oraInventory/orainstRoot.sh 2 Changing permissions of /u01/app/oracle/oraInventory to 770. 3 Changing groupname of /u01/app/oracle/oraInventory to oinstall.

4 The execution of the script is complete

Agora, vamos executar o script /u01/app/oracle/product/10.2.0/crs/root.sh no n mvrac1:


01 [root@mvrac1 ~]# /u01/app/oracle/product/10.2.0/crs/root.sh 02 WARNING: directory '/u01/app/oracle/product/10.2.0' is not owned by root 03 WARNING: directory '/u01/app/oracle/product' is not owned by root 04 WARNING: directory '/u01/app/oracle' is not owned by root 05 WARNING: directory '/u01/app' is not owned by root 06 WARNING: directory '/u01' is not owned by root 07 Checking to see if Oracle CRS stack is already configured 08 /etc/oracle does not exist. Creating it now. 09 10 Setting the permissions on OCR backup directory 11 Setting up NS directories 12 Oracle Cluster Registry configuration upgraded successfully 13 WARNING: directory '/u01/app/oracle/product/10.2.0' is not owned by root 14 WARNING: directory '/u01/app/oracle/product' is not owned by root 15 WARNING: directory '/u01/app/oracle' is not owned by root 16 WARNING: directory '/u01/app' is not owned by root 17 WARNING: directory '/u01' is not owned by root 18 assigning default hostname mvrac1 for node 1. 19 assigning default hostname mvrac2 for node 2. 20 Successfully accumulated necessary OCR keys. 21 Using ports: CSS=49895 CRS=49896 EVMC=49898 and EVMR=49897. 22 node : 23 24 node 1: mvrac1 mvrac1-priv mvrac1 25 node 2: mvrac2 mvrac2-priv mvrac2 26 Creating OCR keys for user 'root', privgrp 'root'.. 27 Operation successful.

28 Now formatting voting device: /dev/raw/raw1 29 Now formatting voting device: /dev/raw/raw3 30 Now formatting voting device: /dev/raw/raw5 31 Format of 3 voting devices complete. 32 Startup will be queued to init within 90 seconds. 33 Adding daemons to inittab 34 Expecting the CRS daemons to be up within 600 seconds. 35 CSS is active on these nodes. 36 mvrac1

37 CSS is inactive on these nodes. 38 mvrac2

39 Local node checking complete. 40 Run root.sh on remaining nodes to start CRS daemons.

Aps a concluso desse script, vamos executar o script /u01/app/oraInventory/orainstRoot.sh no n mvrac2:


1 [root@mvrac2 ~]# /u01/app/oracle/oraInventory/orainstRoot.sh 2 Changing permissions of /u01/app/oracle/oraInventory to 770. 3 Changing groupname of /u01/app/oracle/oraInventory to oinstall. 4 The execution of the script is complete

Em seguida, devemos executar o script /u01/app/oracle/product/10.2.0/crs/root.sh no n mvrac2:


01 [root@mvrac2 ~]# /u01/app/oracle/product/10.2.0/crs/root.sh 02 WARNING: directory '/u01/app/oracle/product/10.2.0' is not owned by root 03 WARNING: directory '/u01/app/oracle/product' is not owned by root 04 WARNING: directory '/u01/app/oracle' is not owned by root 05 WARNING: directory '/u01/app' is not owned by root 06 WARNING: directory '/u01' is not owned by root 07 Checking to see if Oracle CRS stack is already configured 08 /etc/oracle does not exist. Creating it now. 09

10 Setting the permissions on OCR backup directory 11 Setting up NS directories 12 Oracle Cluster Registry configuration upgraded successfully 13 WARNING: directory '/u01/app/oracle/product/10.2.0' is not owned by root 14 WARNING: directory '/u01/app/oracle/product' is not owned by root 15 WARNING: directory '/u01/app/oracle' is not owned by root 16 WARNING: directory '/u01/app' is not owned by root 17 WARNING: directory '/u01' is not owned by root 18 clscfg: EXISTING configuration version 3 detected. 19 clscfg: version 3 is 10G Release 2. 20 assigning default hostname mvrac1 for node 1. 21 assigning default hostname mvrac2 for node 2. 22 Successfully accumulated necessary OCR keys. 23 Using ports: CSS=49895 CRS=49896 EVMC=49898 and EVMR=49897. 24 node : 25 26 node 1: mvrac1 mvrac1-priv mvrac1 27 node 2: mvrac2 mvrac2-priv mvrac2 28 clscfg: Arguments check out successfully. 29 30 NO KEYS WERE WRITTEN. Supply -force parameter to override. 31 -force is destructive and will destroy any previous cluster 32 configuration. 33 Oracle Cluster Registry for cluster has already been initialized 34 Startup will be queued to init within 90 seconds. 35 Adding daemons to inittab 36 Expecting the CRS daemons to be up within 600 seconds. 37 CSS is active on these nodes. 38 39 mvrac1 mvrac2

40 CSS is active on all nodes. 41 Waiting for the Oracle CRSD and EVMD to start 42 Waiting for the Oracle CRSD and EVMD to start 43 Waiting for the Oracle CRSD and EVMD to start 44 Oracle CRS stack installed and running under init(1M) 45 Running vipca(silent) for configuring nodeapps 46 /u01/app/oracle/product/10.2.0/crs/jdk/jre//bin/java: error while 47 loading shared libraries: libpthread.so.0: cannot open shared 48 object file: No such file or directory

Terminamos de executar o script, mas observem que pegamos um erro na execuo do ltimo script no n mvrac2:
1 Running vipca(silent) for configuring nodeapps 2 /u01/app/oracle/product/10.2.0/crs/jdk/jre//bin/java: error while 3 loading shared libraries: libpthread.so.0: cannot open shared 4 object file: No such file or directory

Esse erro normal no Red Hat Enterprise Linux 5 e sempre acontecer nessa verso e descrito pela Nota do Metalink nmero 414163.1. Deveremos editar 2 arquivos para corrigir esse problema. Primeiro, precisamos ir para ao diretrio $ORA_CRS_HOME com o usurio oracle:
1 [oracle@mvrac1 clusterware]$ cd $ORA_CRS_HOME/bin

Em seguida, editaremos o arquivo srvctl:


1 [oracle@mvrac1 bin]$ vi srvctl

Aproximadamente da linha 166, haver a seguinte string:


1 #Remove this workaround when the bug 3937317 is fixed 2 LD_ASSUME_KERNEL=2.4.19 3 export LD_ASSUME_KERNEL

Devemos acrescentar o seguinte contedo abaixo da ltima linha da string:


1 unset LD_ASSUME_KERNEL

Dever ficar da seguinte forma:

1 #Remove this workaround when the bug 3937317 is fixed 2 LD_ASSUME_KERNEL=2.4.19 3 export LD_ASSUME_KERNEL 4 unset LD_ASSUME_KERNEL

Agora, editaremos o arquivo vipca:


1 [oracle@mvrac1 bin]$ vi vipca

Aproximadamente da linha 121, haver a seguinte string:


1 #Remove this workaround when the bug 3937317 is fixed 2 3 4 5 6 7 8 fi #End workaround arch=`uname -m` if [ "$arch" = "i686" -o "$arch" = "ia64" ] then LD_ASSUME_KERNEL=2.4.19 export LD_ASSUME_KERNEL

Devemos acrescentar o seguinte contedo abaixo da linha que tenha a string export LD_ASSUME_KERNEL:
1 unset LD_ASSUME_KERNEL

Dever ficar da seguinte forma:


1 #Remove this workaround when the bug 3937317 is fixed 2 3 4 5 6 7 8 9 fi #End workaround arch=`uname -m` if [ "$arch" = "i686" -o "$arch" = "ia64" ] then LD_ASSUME_KERNEL=2.4.19 export LD_ASSUME_KERNEL unset LD_ASSUME_KERNEL

Feito isso, deveremos copiar esses dois arquivos para o servidor mvrac2:
1 [oracle@mvrac1 bin]$ scp -rp srvctl mvrac2:`pwd` 2 srvctl 3 [oracle@mvrac1 bin]$ scp -rp vipca mvrac2:`pwd` 4 vipca 100% 5038 4.9KB/s 00:00 100% 5577 5.5KB/s 00:00

Podemos agora voltar para tela de instalao e clicar no boto OK:

Uma janela ser exibida com a execuo automtica de assistentes de configurao:

No ltimo assistente (Oracle Cluster Verification Utility), teremos um erro:

Erro erro comum e no devemos nos preocupar. Clicar em OK:

Ser exibido na janela que o ltimo assistente falhou. Clicar em Next. Aparecer uma mensagem informando que um assistente falhou:

Clicar em OK:

Clicar em Exit:

Clicar em Yes. Estamos quase finalizando a instalao do Clusterware. Lembrem-se que na execuo do ltimo script no servidor mvrac2, obtivemos um erro:
Running vipca(silent) for configuring nodeapps /u01/app/oracle/product/10.2.0/crs/jdk/jre//bin/java: error while

loading shared libraries: libpthread.so.0: cannot open shared object file: No such file or directory

Pois bem, o assistente VIPCA, responsvel por criar os recursos de IP virtuais (os VIPs), nos servidores, falhou. Agora que corrigimos o problema editando os arquivos srvctl e vipca, agora precisamos executar o assistente vipca para criarmos os IPs virtuais. No entanto, como se trata de iniciar um endereo IP no sistema operacional, s possvel executar o vipca com o usurio root (e com display grfico):
1 vinicius@Viniciuss-MacBook:~$ ssh -X root@172.23.10.11 2 root@172.23.10.11's password: 3 Last login: Sun Feb 21 09:35:58 2010 from 172.23.10.100 1 [root@mvrac1 ~]# /u01/app/oracle/product/10.2.0/crs/bin/vipca

A tela inicial do VIPCA ser exibida. Clicar em Next:

A interface de rede eth0 ser exibida. Foi essa interface que definimos como interface de rede pblica na instalao do Oracle Clusterware. Clicar em Next:

A janela acima ser exibida. Precisamos definir o IP Alias Name para os servidores. Basta preencher o valor para o servidor mvrac1:

mvrac1-vip.viniciusdba.com.br

Pressionar [TAB] e o valor para o servidor mvrac2 ser preenchido automaticamente, atravs da leitura do arquivo /etc/hosts:

Clicar em Next:

Um resumo sobre a configurao ser exibido. Clicar em Finish.

Uma janela com o progresso da operao ser exibido. Aguardar.

Quando o processo terminar, clicar no boto OK.

Uma janela com o resultado da configurao ser exibido. Nesse momento, os endereos IP virtuais estaro online em cada servidor. Clicar em Exit. Com o usurio oracle mesmo, podemos verificar quais so os endereos IP que esto online no servidor mvrac1:
1 [oracle@mvrac1 ~]$ ifconfig |grep inet | grep -v fe | grep -v 127.0. | grep -v ::1/128 2 3 4 inet addr:172.23.10.11 inet addr:172.23.10.21 inet addr:10.0.0.11 Bcast:172.23.10.255 Bcast:172.23.10.255 Mask:255.255.255.0 Mask:255.255.255.0 Mask:255.0.0.0

Bcast:10.255.255.255

Ou seja:

172.23.10.11: IP pblico fsico; 172.23.10.21: IP pblico virtual; 10.0.0.11: IP privado fsico, InterConnect.

Vamos ver agora no servidor mvrac2:


1 [oracle@mvrac2 ~]$ ifconfig |grep inet | grep -v fe | grep -v 127.0. | grep -v ::1/128 2 inet addr:172.23.10.12 Bcast:172.23.10.255 Mask:255.255.255.0

3 4

inet addr:172.23.10.22 inet addr:10.0.0.12

Bcast:172.23.10.255

Mask:255.255.255.0 Mask:255.0.0.0

Bcast:10.255.255.255

Ou seja:

172.23.10.12: IP pblico fsico; 172.23.10.22: IP pblico virtual; 10.0.0.12: IP privado fsico, InterConnect.

Caso o servidor mvrac1 sofra algum problema de hardware ou software e seja desligado, o seu IP virtual, 172.23.10.21 ser transferido automaticamente para o servidor mvrac2. Para verificarmos o status dos recursos do cluster, com o usurio oracle:
1 [oracle@mvrac1 ~]$ crs_stat -t 2 Name Type Target State Host

3 -----------------------------------------------------------4 ora.mvrac1.gsd application 5 ora.mvrac1.ons application 6 ora.mvrac1.vip application 7 ora.mvrac2.gsd application 8 ora.mvrac2.ons application 9 ora.mvrac2.vip application ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE mvrac1 mvrac1 mvrac1 mvrac2 mvrac2 mvrac2

Num artigo conveniente, veremos o que cada um desses recursos. O que importa por enquanto, que todos esto online. Pessoal, por enquanto isso!

Instalao do Oracle RAC 10g Release 2 Parte 8: Instalao do Patchset 10.2.0.4 no Clusterware
Nesse artigo instalaremos o Patchset 10.2.0.4 no Oracle Clusterware. Bom, vamos l? Precisamos verificar se o CD-ROM est montado. Se estiver, aparecer da seguinte forma
1 [root@mvrac1 ~]# df -h 2 Filesystem 3 /dev/sda1 4 tmpfs 5 /dev/hdc Size 11G 252M 3.1G Used Avail Use% Mounted on 2.4G 0 3.1G 7.8G 252M 24% / 0% /dev/shm

0 100% /media

Se no estiver, deveremos mont-lo:

Na tela da VMWare Server Console, deveremos clicar duas vezes no cone do CD-ROM (identificado pela seta vermelha).

Eu fiz uma imagem ISO com alguns softwares Oracle, portanto, na tela acima, deveremos manter a opo Use ISO image: marcada, e clicar em Browse, para escolhermos a mdia do Oracle:

Basta selecionar a imagem ISO, e clicar em Open. Agora, precisamos montar esse CD no servidor. Como root no servidor mvrac1:
1 [root@mvrac1 ~]# mount /dev/hdc /media 2 mount: block device /dev/hdc is write-protected, mounting read-only

Para verificar se o disco foi montado:


1 [root@mvrac1 ~]# df -h 2 Filesystem 3 /dev/sda1 4 tmpfs 5 /dev/hdc Size 11G 252M 3.1G Used Avail Use% Mounted on 2.4G 0 3.1G 7.8G 252M 24% / 0% /dev/shm

0 100% /media

Com o disco montado, precisamos acess-lo:


1 [root@mvrac1 ~]# cd /media/Ora10.2.0.4

Vamos ver o contedo do disco:

1 [root@mvrac1 Ora10.2.0.4]# ls -l 2 total 177 3 dr-xr-xr-x 5 root root 2048 May 21 2008 p6810189 2008 README.html

4 -r--r--r-- 1 root root 178473 Feb 25

Agora copiaremos o diretrio p6810189 para o diretrio /home/oracle:


1 [root@mvrac1 Ora10.2.0.4]# cp -rp p6810189/ /home/oracle/

Agora precisamos acertar as permisses, pois o diretrio foi copiado como root:
1 [root@mvrac1 ~]# chown -R oracle:oinstall /home/oracle/*

Agora, iniciaremos a instalao. H algumas formas de realizar a instalao:


Localmente no servidor, atravs da VMWare Server Console; Remotamente, atravs de um software que simule um X-Server (existem diversas opes gratuitas na Internet); Remotamente, atravs de uma estao Linux/Unix/Mac que tenha a parte grfica (X) habilitado.

Eu usarei a terceira opo, portanto, a partir da minha estao:


1 vinicius@Viniciuss-MacBook:~$ ssh -X oracle@172.23.10.11 2 oracle@172.23.10.11's password: 3 /usr/bin/xauth: creating new authority file /home/oracle/.Xauthority

Testando para ver se a parte grfica est funcionando:


1 [oracle@mvrac1 ~]$ xclock

O teste funcionou! Vejam:

Pronto! Vamos iniciar a instalao:


[oracle@mvrac1 ~]$ cd p6810189/

2 [oracle@mvrac1 p6810189]$ ls -l 3 total 1784 4 -r--r--r-5 dr-xr-xr-x 6 -r--r--r-7 dr-xr-xr-x 8 -r-xr-xr-x 1 oracle oinstall 1620786 Feb 21 4 oracle oinstall 1 oracle oinstall 2 oracle oinstall 1 oracle oinstall 4096 May 21 178465 Feb 22 4096 May 21 1756 Feb 17 4096 May 21 2008 10204_buglist.htm 2008 install 2008 patch_note.htm 2008 response 2008 runInstaller 2008 stage

9 dr-xr-xr-x 10 oracle oinstall

1 [oracle@mvrac1 p6810189]$ ./runInstaller

Na tela inicial do Patchset, devemos clicar em Next.

Como as variveis de ambiente j esto definidas, o OUI encontra um Oracle Home de BD ainda no existente. Basta clicar no combo Name e escolher o Oracle Home do Clusterware:

Com o Oracle Home do Clusterware definido, clicar em Next.

Automaticamente ser selecionado o item Cluster Installation e todos os ns do cluster (mvrac1 e mvrac2) sero selecionados. Clicar em Next.

Os pr-requisitos sero verificados. Clicar em Next.

Um resumo ser exibido. Clicar em Install.

Uma janela com o progresso ser exibida.

Ser solicitado executar 1 script como root nos 2 ns. Sendo que antes temos que parar os servios do Clusterware, e em seguida, executar o script. Ateno: o script dever ser executado em um n por vez. No podendo ser executado em paralelo! Vamos executar o procedimento no servidor mvrac1, como root. Vamos primeiro parar os servios do Clusterware:
1 [root@mvrac1 ~]# /u01/app/oracle/product/10.2.0/crs/bin/crsctl stop crs 2 Stopping resources. 3 Successfully stopped CRS resources

4 Stopping CSSD. 5 Shutting down CSS daemon.

Agora, precisamos executar o script que aplicar o Patchset no servidor mvrac1:


01 [root@mvrac1 ~]# /u01/app/oracle/product/10.2.0/crs/install/root102.sh 02 Creating pre-patch directory for saving pre-patch clusterware files 03 Completed patching clusterware files to /u01/app/oracle/product/10.2.0/crs 04 Relinking some shared libraries. 05 Relinking of patched files is complete. 06 WARNING: directory '/u01/app/oracle/product/10.2.0' is not owned by root 07 WARNING: directory '/u01/app/oracle/product' is not owned by root 08 WARNING: directory '/u01/app/oracle' is not owned by root 09 WARNING: directory '/u01/app' is not owned by root 10 WARNING: directory '/u01' is not owned by root 11 Preparing to recopy patched init and RC scripts. 12 Recopying init and RC scripts. 13 Startup will be queued to init within 30 seconds. 14 Starting up the CRS daemons. 15 Waiting for the patched CRS daemons to start. 16 17 . 18 . 19 10204 patch successfully applied. 20 clscfg: EXISTING configuration version 3 detected. 21 clscfg: version 3 is 10G Release 2. 22 Successfully accumulated necessary OCR keys. 23 Using ports: CSS=49895 CRS=49896 EVMC=49898 and EVMR=49897. 24 node : <nodenumber>: <nodename> <private interconnect name> <hostname> 25 node 1: mvrac1 mvrac1-priv mvrac1 26 Creating OCR keys for user 'root', privgrp 'root'.. 27 Operation successful. This may take a while on some systems.

28 clscfg -upgrade completed successfully

Agora precisamos fazer isso tambm no servidor mvrac2:


1 [root@mvrac2 ~]# /u01/app/oracle/product/10.2.0/crs/bin/crsctl stop crs 2 Stopping resources. 3 Successfully stopped CRS resources 4 Stopping CSSD. 5 Shutting down CSS daemon.

Agora, precisamos executar o script que aplicar o Patchset no servidor mvrac2:


01 [root@mvrac2 ~]# /u01/app/oracle/product/10.2.0/crs/install/root102.sh 02 Creating pre-patch directory for saving pre-patch clusterware files 03 Completed patching clusterware files to /u01/app/oracle/product/10.2.0/crs 04 Relinking some shared libraries. 05 Relinking of patched files is complete. 06 WARNING: directory '/u01/app/oracle/product/10.2.0' is not owned by root 07 WARNING: directory '/u01/app/oracle/product' is not owned by root 08 WARNING: directory '/u01/app/oracle' is not owned by root 09 WARNING: directory '/u01/app' is not owned by root 10 WARNING: directory '/u01' is not owned by root 11 Preparing to recopy patched init and RC scripts. 12 Recopying init and RC scripts. 13 Startup will be queued to init within 30 seconds. 14 Starting up the CRS daemons. 15 Waiting for the patched CRS daemons to start. 16 17 . 18 . 19 10204 patch successfully applied. 20 clscfg: EXISTING configuration version 3 detected. 21 clscfg: version 3 is 10G Release 2. This may take a while on some systems.

22 Successfully accumulated necessary OCR keys. 23 Using ports: CSS=49895 CRS=49896 EVMC=49898 and EVMR=49897. 24 node : <nodenumber>: <nodename> <private interconnect name> <hostname> 25 node 2: mvrac2 mvrac2-priv mvrac2 26 Creating OCR keys for user 'root', privgrp 'root'.. 27 Operation successful. 28 clscfg -upgrade completed successfully

Pronto! Agora precisamos voltar para a tela do OUI:

Clicar em Exit.

Clicar em Yes para confirmar a sada! Vamos verificar se os recursos do Clusterware subiram? Como oracle:
1 [oracle@mvrac1 ~]$ crs_stat -t 2 Name Type Target State Host

3 -----------------------------------------------------------4 ora.mvrac1.gsd application 5 ora.mvrac1.ons application 6 ora.mvrac1.vip application ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE mvrac1 mvrac1 mvrac1

7 ora.mvrac2.gsd application 8 ora.mvrac2.ons application 9 ora.mvrac2.vip application

ONLINE ONLINE ONLINE

ONLINE ONLINE ONLINE

mvrac2 mvrac2 mvrac2

Patchset aplicado com sucesso! Agora faremos a mudana dos Voting Disks para os block devices. Como vocs sabem, tivemos que instalar o Clusterware com o Voting Disk e o OCR em raw devices por limitaes do OUI. Aps aplicado o Patchset, precisamos alterar os arquivos do cluster para os block devices. Para alterarmos os Voting Disks para os block devices, precisamos interromper os servios do cluster nos 2 ns. O procedimento dever ser executado como root nos 2 ns. mvrac1:
1 [root@mvrac1 ~]# /u01/app/oracle/product/10.2.0/crs/bin/crsctl stop crs 2 Stopping resources. This could take several minutes. 3 Successfully stopped CRS resources. 4 Stopping CSSD. 5 Shutting down CSS daemon. 6 Shutdown request successfully issued.

mvrac2:
1 [root@mvrac2 ~]# /u01/app/oracle/product/10.2.0/crs/bin/crsctl stop crs 2 Stopping resources. This could take several minutes. 3 Successfully stopped CRS resources. 4 Stopping CSSD. 5 Shutting down CSS daemon. 6 Shutdown request successfully issued.

Agora, a partir do n mvrac1, vamos consultar os Voting Disks existentes:


1 [root@mvrac1 ~]# /u01/app/oracle/product/10.2.0/crs/bin/crsctl query css votedisk 2 0. 3 1. 4 2. 5 0 0 0 /dev/raw/raw1 /dev/raw/raw3 /dev/raw/raw5

6 located 3 votedisk(s).

Vamos agora adicionar os 3 Voting Disks que usam block devices. Precisamos usar o flag force:
1 [root@mvrac1 ~]# /u01/app/oracle/product/10.2.0/crs/bin/crsctl add css votedisk /dev/voting1 -force

2 Now formatting voting disk: /dev/voting1 3 successful addition of votedisk /dev/voting1. 1 [root@mvrac1 ~]# /u01/app/oracle/product/10.2.0/crs/bin/crsctl add css votedisk /dev/voting2 -force

2 Now formatting voting disk: /dev/voting2 3 successful addition of votedisk /dev/voting2. 1 [root@mvrac1 ~]# /u01/app/oracle/product/10.2.0/crs/bin/crsctl add css votedisk /dev/voting3 -force

2 Now formatting voting disk: /dev/voting3 3 successful addition of votedisk /dev/voting3.

Agora precisamos eliminar os 3 Voting Disks que usam raw devices. Precisamos usar tambm o flag force:
1 [root@mvrac1 ~]# /u01/app/oracle/product/10.2.0/crs/bin/crsctl delete css votedisk /dev/raw/raw1 -force

2 successful deletion of votedisk /dev/raw/raw1. 1 [root@mvrac1 ~]# /u01/app/oracle/product/10.2.0/crs/bin/crsctl delete css votedisk /dev/raw/raw3 -force

2 successful deletion of votedisk /dev/raw/raw3. 1 [root@mvrac1 ~]# /u01/app/oracle/product/10.2.0/crs/bin/crsctl delete css votedisk /dev/raw/raw5 -force

2 successful deletion of votedisk /dev/raw/raw5.

Os Voting Disks foram trocados para os block devices. Vamos agora subir os recursos do Clusterware nos ns mvrac1 e mvrac2. mvrac1:
1 [root@mvrac1 ~]# /u01/app/oracle/product/10.2.0/crs/bin/crsctl start crs 2 Attempting to start CRS stack 3 The CRS stack will be started shortly

mvrac2:

1 [root@mvrac2 ~]# /u01/app/oracle/product/10.2.0/crs/bin/crsctl start crs 2 Attempting to start CRS stack 3 The CRS stack will be started shortly

Vamos ver se os recursos do cluster esto online. Como oracle:


1 [oracle@mvrac1 ~]$ crs_stat -t 2 Name Type Target State Host

3 -----------------------------------------------------------4 ora.mvrac1.gsd application 5 ora.mvrac1.ons application 6 ora.mvrac1.vip application 7 ora.mvrac2.gsd application 8 ora.mvrac2.ons application 9 ora.mvrac2.vip application ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE mvrac1 mvrac1 mvrac1 mvrac2 mvrac2 mvrac2

Agora, precisamos alterar os OCR para os block devices. Vamos primeiro verificar os OCR existentes. Como oracle:
01 [oracle@mvrac1 ~]$ ocrcheck 02 Status of Oracle Cluster Registry is as follows : 03 04 05 06 07 08 09 10 11 12 Device/File Name Version Total space (kbytes) Used space (kbytes) : : : 2 256788 2016 254772 382969207

Available space (kbytes) : ID Device/File Name :

: /dev/raw/raw2 Device/File integrity check succeeded : /dev/raw/raw4 Device/File integrity check succeeded

13

Cluster registry integrity check succeeded

Observamos que os devices de OCR so /dev/raw/raw2 e /dev/raw/raw4, e a integridade dos dois devices est perfeita. Vamos agora alterar o OCR para os block devices. O procedimento deve ser executado como root nos 2 ns. mvrac1:
1 [root@mvrac1 ~]# /u01/app/oracle/product/10.2.0/crs/bin/ocrconfig -replace ocr /dev/ocr1 [root@mvrac1 ~]# /u01/app/oracle/product/10.2.0/crs/bin/ocrconfig -replace ocrmirror /dev/ocr2

Vamos verificar novamente a integridade dos devices do OCR. Como oracle:


01 [oracle@mvrac1 ~]$ ocrcheck 02 Status of Oracle Cluster Registry is as follows : 03 04 05 06 07 08 09 10 11 12 13 Cluster registry integrity check succeeded Device/File Name : Version Total space (kbytes) Used space (kbytes) : : : 2 256788 2016 254772 382969207 /dev/ocr1 Device/File integrity check succeeded /dev/ocr2 Device/File integrity check succeeded

Available space (kbytes) : ID Device/File Name : :

Pudemos observar que agora os devices so /dev/ocr1 e /dev/ocr2 e o teste de integridade foi bem sucedido! Bom, nesse post vimos como instalar o Patchset 10.2.0.4 no Oracle Clusterware. Tambm vimos como mudar os Voting Disks e o OCR para os block devices.

Instalao do Oracle RAC 10g Release 2 Parte 9: Instalao do Oracle Database


Nesse artigo instalaremos software do banco de dados Oracle 10.2.0.1. Bom, vamos l? Precisamos verificar se o CD-ROM est montado. Se estiver, aparecer da seguinte forma
1 [root@mvrac1 ~]# df -h 2 Filesystem 3 /dev/sda1 4 tmpfs 5 /dev/hdc Size 11G 252M 3.1G Used Avail Use% Mounted on 2.4G 0 3.1G 7.8G 252M 24% / 0% /dev/shm

0 100% /media

Se no estiver, deveremos mont-lo:

Na tela da VMWare Server Console, deveremos clicar duas vezes no cone do CD-ROM (identificado pela seta vermelha).

Eu fiz uma imagem ISO com alguns softwares Oracle, portanto, na tela acima, deveremos manter a opo Use ISO image: marcada, e clicar em Browse, para escolhermos a mdia do Oracle:

Basta selecionar a imagem ISO, e clicar em Open. Agora, precisamos montar esse CD no servidor. Como root no servidor mvrac1:
1 [root@mvrac1 ~]# mount /dev/hdc /media 2 mount: block device /dev/hdc is write-protected, mounting read-only

Para verificar se o disco foi montado:


1 [root@mvrac1 ~]# df -h 2 Filesystem 3 /dev/sda1 4 tmpfs 5 /dev/hdc Size 11G 252M 3.1G Used Avail Use% Mounted on 2.4G 0 3.1G 7.8G 252M 24% / 0% /dev/shm

0 100% /media

Com o disco montado, precisamos acess-lo:


1 [root@mvrac1 ~]# cd /media/Ora10.2.0.1

Vamos ver o contedo do disco:

1 [root@mvrac1 Ora10.2.0.1]# ls -l 2 total 8 3 dr-xr-xr-x 6 root root 2048 May 21 4 dr-xr-xr-x 9 root root 2048 May 21 5 dr-xr-xr-x 6 root root 2048 May 21 6 dr-xr-xr-x 6 root root 2048 May 21 2008 client 2008 clusterware 2008 companion 2008 database

Agora copiaremos o diretrio clusterware para o diretrio /home/oracle:


1 [root@mvrac1 Ora10.2.0.1]# cp -rp database/ /home/oracle/

Agora precisamos acertar as permisses, pois o diretrio foi copiado como root:
1 [root@mvrac1 ~]# chown -R oracle:oinstall /home/oracle/*

Agora, iniciaremos a instalao. H algumas formas de realizar a instalao:


Localmente no servidor, atravs da VMWare Server Console; Remotamente, atravs de um software que simule um X-Server (existem diversas opes gratuitas na Internet); Remotamente, atravs de uma estao Linux/Unix/Mac que tenha a parte grfica (X) habilitado.

Eu usarei a terceira opo, portanto, a partir da minha estao:


1 vinicius@Viniciuss-MacBook:~$ ssh -X oracle@172.23.10.11 2 oracle@172.23.10.11's password: 3 /usr/bin/xauth: creating new authority file /home/oracle/.Xauthority

Testando para ver se a parte grfica est funcionando:


1 [oracle@mvrac1 ~]$ xclock

O teste funcionou! Vejam:

Pronto!

Vamos iniciar a instalao:


1 [oracle@mvrac1 ~]$ cd database/ 2 [oracle@mvrac1 database]$ ls -l 3 total 28 4 dr-xr-xr-x 9 oracle oinstall 4096 May 21 5 dr-xr-xr-x 5 oracle oinstall 4096 May 21 6 dr-xr-xr-x 2 oracle oinstall 4096 May 21 7 -r-xr-xr-x 1 oracle oinstall 1327 Jul 2 2008 doc 2008 install 2008 response 2005 runInstaller 2008 stage 2005 welcome.html

8 dr-xr-xr-x 9 oracle oinstall 4096 May 21 9 -r-xr-xr-x 1 oracle oinstall 5213 Jul 2

Como estamos usando o RHEL5/OEL5, quando o produto 10.2.0.1 foi lanado, essa verso de sistema operacional ainda no estava disponvel no mercado, precisaremos executar a instalao informando que a verificao de pr-requisitos dever ser ignorada:
1 [oracle@mvrac1 database]$ ./runInstaller -ignoreSysPreReqs

Clicar em Next.

A edio que instalaremos ser a Standard Edition, portanto, selecione essa edio na tela e clique em Next.

Na tela acima devemos especificar o nome do Oracle Home do Banco de Dados, assim como a sua localizao. Os valores sugeridos so:

Para o nome do Oracle Home do Banco de Dados: OraDb10g_home1; Para a localizao do Oracle Home do Banco de Dados: /u01/app/oracle/product/10.2.0/db_1.

Clicar em Next.

Nessa tela podemos escolher entre realizar uma instalao Local (para bancos de dados single instance, sem RAC), ou uma instalao de Cluster. O tipo escolhido a instalao de Cluster. Clicar no boto Select All para selecionar todos os ns:

Clicar em Next.

O OUI reclamar de pouca memria e parmetros de kernel, isso acontece pois o RHEL5, bastar clicar na caixa de seleo onde est escrito Warning na coluna de Status:

Aps ter clicado na caixa, observem que o status passar para o valor User Verified. Clicar em Next:

Por enquanto, instalaremos apenas o software. Portanto, clicar na opo Install database Software only:

Um resumo sobre a instalao ser exibido. Clicar em Install.

A janela com o progresso da instalao ser exibida. Aguardar.

Uma janela aparecer solicitando executarmos 1 script como root nos 2 ns do cluster. Vamos execuo do script /u01/app/oracle/product/10.2.0/db_1/root.sh no n mvrac1:
01 [root@mvrac1 ~]# /u01/app/oracle/product/10.2.0/db_1/root.sh 02 Running Oracle10 root.sh script... 03 04 The following environment variables are set as: 05 ORACLE_OWNER= oracle

06 07

ORACLE_HOME=

/u01/app/oracle/product/10.2.0/db_1

08 Enter the full pathname of the local bin directory: [/usr/local/bin]: 09 10 11 12 13 Creating /etc/oratab file... 14 Entries will be added to the /etc/oratab file as needed by 15 Database Configuration Assistant when a database is created 16 Finished running generic part of root.sh script. 17 Now product-specific root actions will be performed. Copying dbhome to /usr/local/bin ... Copying oraenv to /usr/local/bin ... Copying coraenv to /usr/local/bin ...

Aps a concluso desse script, vamos execut-lo no servidor mvrac2:


01 [root@mvrac2 ~]# /u01/app/oracle/product/10.2.0/db_1/root.sh 02 Running Oracle10 root.sh script... 03 04 The following environment variables are set as: 05 06 07 08 Enter the full pathname of the local bin directory: [/usr/local/bin]: 09 10 11 12 13 Creating /etc/oratab file... 14 Entries will be added to the /etc/oratab file as needed by 15 Database Configuration Assistant when a database is created 16 Finished running generic part of root.sh script. Copying dbhome to /usr/local/bin ... Copying oraenv to /usr/local/bin ... Copying coraenv to /usr/local/bin ... ORACLE_OWNER= oracle ORACLE_HOME= /u01/app/oracle/product/10.2.0/db_1

17 Now product-specific root actions will be performed.

Clicar em OK.

Clicar em Exit.

Clicar em Yes. Pronto!

Instalao do Oracle RAC 10g Release 2 Parte 10: Instalao do Patchset 10.2.0.4 no Oracle Database
Nesse artigo instalaremos o Patchset 10.2.0.4 no Oracle Database. Bom, vamos l? Precisamos verificar se o CD-ROM est montado. Se estiver, aparecer da seguinte forma
1 [root@mvrac1 ~]# df -h 2 Filesystem 3 /dev/sda1 4 tmpfs 5 /dev/hdc Size 11G 252M 3.1G Used Avail Use% Mounted on 2.4G 0 3.1G 7.8G 252M 24% / 0% /dev/shm

0 100% /media

Se no estiver, deveremos mont-lo:

Na tela da VMWare Server Console, deveremos clicar duas vezes no cone do CD-ROM (identificado pela seta vermelha).

Eu fiz uma imagem ISO com alguns softwares Oracle, portanto, na tela acima, deveremos manter a opo Use ISO image: marcada, e clicar em Browse, para escolhermos a mdia do Oracle:

Basta selecionar a imagem ISO, e clicar em Open. Agora, precisamos montar esse CD no servidor. Como root no servidor mvrac1:
1 [root@mvrac1 ~]# mount /dev/hdc /media 2 mount: block device /dev/hdc is write-protected, mounting read-only

Para verificar se o disco foi montado:


1 [root@mvrac1 ~]# df -h 2 Filesystem 3 /dev/sda1 4 tmpfs 5 /dev/hdc Size 11G 252M 3.1G Used Avail Use% Mounted on 2.4G 0 3.1G 7.8G 252M 24% / 0% /dev/shm

0 100% /media

Com o disco montado, precisamos acess-lo:


1 [root@mvrac1 ~]# cd /media/Ora10.2.0.4

Vamos ver o contedo do disco:

1 [root@mvrac1 Ora10.2.0.4]# ls -l 2 total 177 3 dr-xr-xr-x 5 root root 2048 May 21 2008 p6810189 2008 README.html

4 -r--r--r-- 1 root root 178473 Feb 25

Agora copiaremos o diretrio p6810189 para o diretrio /home/oracle:


1 [root@mvrac1 Ora10.2.0.4]# cp -rp p6810189/ /home/oracle/

Agora precisamos acertar as permisses, pois o diretrio foi copiado como root:
1 [root@mvrac1 ~]# chown -R oracle:oinstall /home/oracle/*

Agora, iniciaremos a instalao. H algumas formas de realizar a instalao:


Localmente no servidor, atravs da VMWare Server Console; Remotamente, atravs de um software que simule um X-Server (existem diversas opes gratuitas na Internet); Remotamente, atravs de uma estao Linux/Unix/Mac que tenha a parte grfica (X) habilitado.

Eu usarei a terceira opo, portanto, a partir da minha estao:


1 vinicius@Viniciuss-MacBook:~$ ssh -X oracle@172.23.10.11 2 oracle@172.23.10.11's password: 3 /usr/bin/xauth: creating new authority file /home/oracle/.Xauthority

Testando para ver se a parte grfica est funcionando:


1 [oracle@mvrac1 ~]$ xclock

O teste funcionou! Vejam:

Pronto! Vamos iniciar a instalao:


1 [oracle@mvrac1 ~]$ cd p6810189/

2 [oracle@mvrac1 p6810189]$ ls -l 3 total 1784 4 -r--r--r-5 dr-xr-xr-x 6 -r--r--r-7 dr-xr-xr-x 8 -r-xr-xr-x 1 oracle oinstall 1620786 Feb 21 4 oracle oinstall 1 oracle oinstall 2 oracle oinstall 1 oracle oinstall 4096 May 21 178465 Feb 22 4096 May 21 1756 Feb 17 4096 May 21 2008 10204_buglist.htm 2008 install 2008 patch_note.htm 2008 response 2008 runInstaller 2008 stage

9 dr-xr-xr-x 10 oracle oinstall

1 [oracle@mvrac1 p6810189]$ ./runInstaller

Na tela inicial do Patchset, devemos clicar em Next.

Na tela acima devemos especificar o Oracle Home do Banco de Dados. No entanto, esse Oracle j est selecionado automaticamente. Basta clicar em Next.

No tem como mudarmos os itens da janela acima, pois o OUI j detectou que o Oracle Home selecionado foi instalado na arquitetura de cluster, e por isso, os 2 ns j foram selecionados automaticamente. Clicar em Next.

Os pr-requisitos sero verificados. Clicar em Next.

No Patchset 10.2.0.4, possvel habilitar o Oracle Configuration Manager, que auxiliar na aplicao de patches automaticamente baixados pelo Metalink. Por enquanto, no configuraremos esse item. Clicar em Next.

Um resumo sobre a instalao ser exibido. Clicar em Install.

Uma janela com o progresso ser exibida. Aguardar.

Uma janela ser exibida solicitando executarmos 1 script como root nos 2 ns do cluster. Vamos execuo do script /u01/app/oracle/product/10.2.0/db_1/root.sh no n mvrac1:
01 [root@mvrac1 ~]# /u01/app/oracle/product/10.2.0/db_1/root.sh 02 Running Oracle10 root.sh script... 03 04 The following environment variables are set as: 05 ORACLE_OWNER= oracle

06 07

ORACLE_HOME=

/u01/app/oracle/product/10.2.0/db_1

08 Enter the full pathname of the local bin directory: [/usr/local/bin]: 09 The file "dbhome" already exists in /usr/local/bin. 10 [n]: y 11 Copying dbhome to /usr/local/bin ... Overwrite it? (y/n) Overwrite it? (y/n)

12 The file "oraenv" already exists in /usr/local/bin. 13 [n]: y 14 Copying oraenv to /usr/local/bin ...

15 The file "coraenv" already exists in /usr/local/bin. 16 [n]: y 17 18 Copying coraenv to /usr/local/bin ...

Overwrite it? (y/n)

19 Entries will be added to the /etc/oratab file as needed by 20 Database Configuration Assistant when a database is created 21 Finished running generic part of root.sh script. 22 Now product-specific root actions will be performed.

Aps a concluso do script no servidor mvrac1, vamos execut-lo no servidor mvrac2:


01 [root@mvrac2 ~]# /u01/app/oracle/product/10.2.0/db_1/root.sh 02 Running Oracle10 root.sh script... 03 04 The following environment variables are set as: 05 06 07 08 Enter the full pathname of the local bin directory: [/usr/local/bin]: 09 The file "dbhome" already exists in /usr/local/bin. 10 [n]: y 11 Copying dbhome to /usr/local/bin ... Overwrite it? (y/n) ORACLE_OWNER= oracle ORACLE_HOME= /u01/app/oracle/product/10.2.0/db_1

12 The file "oraenv" already exists in /usr/local/bin. 13 [n]: y 14 Copying oraenv to /usr/local/bin ...

Overwrite it? (y/n)

15 The file "coraenv" already exists in /usr/local/bin. 16 [n]: y 17 18 Copying coraenv to /usr/local/bin ...

Overwrite it? (y/n)

19 Entries will be added to the /etc/oratab file as needed by 20 Database Configuration Assistant when a database is created 21 Finished running generic part of root.sh script. 22 Now product-specific root actions will be performed.

Clicar em OK.

Clicar em Exit.

Clicar em Yes. Pronto!

Instalao do Oracle RAC 10g Release 2 Parte 11: Criao do Listener no Cluster
Vimos no ltimo artigo a aplicao do Patchset 10.2.0.4 no Oracle Database. Veremos hoje como criar o Listener no ambiente clusterizado. Vocs vero que uma operao bem fcil de ser feita. Agora, executaremos o assistente para criao do Listener, o netca. H algumas formas de executar esse assistente:

Localmente no servidor, atravs da VMWare Server Console; Remotamente, atravs de um software que simule um X-Server (existem diversas opes gratuitas na Internet); Remotamente, atravs de uma estao Linux/Unix/Mac que tenha a parte grfica (X) habilitado.

Eu usarei a terceira opo, portanto, a partir da minha estao:


1 vinicius@Viniciuss-MacBook:~$ ssh -X oracle@172.23.10.11 2 oracle@172.23.10.11's password: 3 /usr/bin/xauth: creating new authority file /home/oracle/.Xauthority

Testando para ver se a parte grfica est funcionando:


1 [oracle@mvrac1 ~]$ xclock

O teste funcionou! Vejam:

Pronto! Vamos executar o netca:


1 [oracle@mvrac1 ~]$ netca

O netca detectar que a pilha de cluster est em execuo, e precisamos selecionar qual ser o tipo de configurao que faremos:

Configurao de cluster; Configurao de single node.

Manteremos a opo Cluster configuration selecionada. Clicar em Next:

Todos os ns estaro selecionados. Caso no estejam, devemos clicar no boto Select all nodes. Clicar em Next.

Como faremos a criao do Listener, devemos manter a opo Listener configuration selecionada. Clicar em Next.

A nica opo disponvel a Add. Clicar em Next.

O nome padro do Listener LISTENER. Manteremos esse nome, clicar em Next.

Na tela acima selecionamos quais protocolos o Listener utilizar. Nesse caso, s manteremos o protocolo TCP. Clicar em Next.

Na tela acima, precisamos especificar qual porta ser utilizada pelo Listener. Manteremos a porta padro (1521). Clicar em Next.

No configuraremos outros Listeners. Manter a opo No selecionada e clicar em Next.

A tela acima indica que o Listener foi criado com sucesso. Clicar em Next.

Clicar em Finish. O Listener foi criado. Como ele faz parte do cluster e foi cadastrado como recurso do mesmo, e o seu status tambm pode ser visto junto com o status dos outros recursos do cluster:
01 Name Type Target State Host

02 -----------------------------------------------------------03 ora....C1.lsnr application 04 ora.mvrac1.gsd application 05 ora.mvrac1.ons application 06 ora.mvrac1.vip application 07 ora....C2.lsnr application ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE mvrac1 mvrac1 mvrac1 mvrac1 mvrac2

08 ora.mvrac2.gsd application 09 ora.mvrac2.ons application 10 ora.mvrac2.vip application

ONLINE ONLINE ONLINE

ONLINE ONLINE ONLINE

mvrac2 mvrac2 mvrac2

Observem que temos os recursos lsnr, esses recursos so os Listeners, um em cada n. No entanto, observem que a leitura da sada do comando crs_stat j no est to prtica, pois alguns recursos esto com o nome cortado. H um script criado pelo Jeffrey Hunter, guru em Oracle RAC, que formata a sada para melhor leitura: Clique aqui para baixar esse script. No servidor mvrac1, como root, criar o seguinte arquivo:
1 [root@mvrac1 ~]# cd /usr/local/bin 2 [root@mvrac1 bin]# vi crsstat 01 #!/bin/ksh 02 03 # +---------------------------------------------------------------------------- + 04 # | 05 # | 06 # | Jeffrey M. Hunter jhunter@idevelopment.info www.idevelopment.info | | |

07 # |---------------------------------------------------------------------------- | 08 # | Copyright (c) 1998-2009 Jeffrey M. Hunter. All rights reserved. |

09 # |---------------------------------------------------------------------------- | 10 # | DATABASE : Oracle 11 # | FILE 12 # | CLASS 13 # | PURPOSE 14 # | 15 # | 16 # | 17 # | 18 # | 19 # | : rac_crs_stat : UNIX Shell Scripts | | |

: This KSH script will query all CRS resources using the crs_stat | script. The report will be a formatted version of the crs_stat -t command, but in tabular form with resource name and status. Filtering options are available by passing in a single string parameter to this script. This argument will be used to limit the output to HA resources whose names match that string. | | | | | |

20 # | USAGE 21 # | NOTE 22 # | 23 # | NOTE 24 # |

: rac_crs_stat.ksh [RESOURCE_KEY]

: This script requires the environment $ORA_CRS_HOME to be set to | your CRS installation. : As with any code, ensure to test this script in a development environment before attempting to run it in production. | | |

25 # +---------------------------------------------------------------------------- + 26 27 # +---------------------------------------------------------------------------- + 28 # | GLOBAL VARIABLES |

29 # +---------------------------------------------------------------------------- + 30 31 RSC_KEY=$1 32 QSTAT=-u 33 AWK=/usr/bin/awk 34 ORA_CRS_HOME=/u01/app/oracle/product/10.2.0/crs 35 36 # +---------------------------------------------------------------------------- + 37 # | TABLE HEADER |

38 # +---------------------------------------------------------------------------- + 39 40 $AWK \ 41 42 43 44 # +---------------------------------------------------------------------------- + 45 # | TABLE BODY | 'BEGIN {printf "%-50s %-10s %-18s\n", "HA Resource", "Target", "State"; printf "%-50s %-10s %-18s\n", "-----------", "------", "-----";}'

46 # +---------------------------------------------------------------------------- + 47 48 $ORA_CRS_HOME/bin/crs_stat $QSTAT | $AWK \ 49 'BEGIN { FS="="; state = 0; }

50 51 52 53 54

$1~/NAME/ && $2~/'$RSC_KEY'/ {appname = $2; state=1}; state == 0 {next;} $1~/TARGET/ && state == 1 {apptarget = $2; state=2;} $1~/STATE/ && state == 2 {appstate = $2; state=3;} state == 3 {printf "%-50s %-10s %-18s\n", appname, apptarget, appstate; state=0;}'

Observem que eu inclu a seguinte linha no script:


1 ORA_CRS_HOME=/u01/app/oracle/product/10.2.0/crs

Com isso, o script poder ser executado com qualquer usurio no sistema operacional. Aps salvar o script, devemos definir suas permisses para execuo:
1 [root@mvrac1 bin]# chmod 755 crsstat

E agora, devemos copi-lo para o servidor mvrac2:


1 [root@mvrac1 bin]# scp -p crsstat mvrac2:`pwd` 2 root@mvrac2's password: 3 crsstat 100% 3195 3.1KB/s 00:00

Vamos testar o script?


01 [oracle@mvrac1 ~]$ crsstat 02 HA Resource 03 ----------04 ora.mvrac1.LISTENER_MVRAC1.lsnr 05 ora.mvrac1.gsd 06 ora.mvrac1.ons 07 ora.mvrac1.vip 08 ora.mvrac2.LISTENER_MVRAC2.lsnr 09 ora.mvrac2.gsd 10 ora.mvrac2.ons 11 ora.mvrac2.vip Target -----ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE State ----ONLINE on mvrac1 ONLINE on mvrac1 ONLINE on mvrac1 ONLINE on mvrac1 ONLINE on mvrac2 ONLINE on mvrac2 ONLINE on mvrac2 ONLINE on mvrac2

Observem que est mais legvel do que com o comando crs_stat -t.

Pronto pessoal! Criamos o Listener e configuramos um script para melhor leitura do comando crs_stat -t. No prximo artigo veremos como criar e configurar a instncia ASM no cluster.

Instalao do Oracle RAC 10g Release 2 Parte 12: Criao do ASM no Cluster
Vimos no ltimo artigo a criao do Listener no Cluster. Veremos hoje como criar e configurar o ASM no ambiente clusterizado. Vocs vero que uma operao bem fcil de ser feita. Agora, executaremos o assistente para criao do ASM, o dbca. H algumas formas de executar esse assistente:

Localmente no servidor, atravs da VMWare Server Console; Remotamente, atravs de um software que simule um X-Server (existem diversas opes gratuitas na Internet); Remotamente, atravs de uma estao Linux/Unix/Mac que tenha a parte grfica (X) habilitado.

Eu usarei a terceira opo, portanto, a partir da minha estao:


vinicius@Viniciuss-MacBook:~$ ssh -X oracle@172.23.10.11 oracle@172.23.10.11's password: /usr/bin/xauth: creating new authority file /home/oracle/.Xauthority

Testando para ver se a parte grfica est funcionando:


[oracle@mvrac1 ~]$ xclock

O teste funcionou! Vejam:

Pronto! Agora, vamos criar os diretrios de trace da instncia ASM nos servidores mvrac1 e mvrac2, com o usurio oracle. mvrac1:
[oracle@mvrac1 [oracle@mvrac1 [oracle@mvrac1 [oracle@mvrac1 ~]$ ~]$ ~]$ ~]$ mkdir mkdir mkdir mkdir -p -p -p -p /u01/app/oracle/admin/+ASM/bdump /u01/app/oracle/admin/+ASM/cdump /u01/app/oracle/admin/+ASM/hdump /u01/app/oracle/admin/+ASM/pfile

mvrac2:
[oracle@mvrac2 ~]$ mkdir -p /u01/app/oracle/admin/+ASM/bdump

[oracle@mvrac2 ~]$ mkdir -p /u01/app/oracle/admin/+ASM/cdump [oracle@mvrac2 ~]$ mkdir -p /u01/app/oracle/admin/+ASM/hdump [oracle@mvrac2 ~]$ mkdir -p /u01/app/oracle/admin/+ASM/pfile

Vamos executar o dbca:


[oracle@mvrac1 ~]$ dbca

O dbca detectar que a pilha de cluster est em execuo, e precisamos selecionar qual ser o tipo de ambiente que ser configurado:

Oracle Real Application Clusters database; Oracle single instance database.

Manteremos a opo Oracle Real Application Clusters database selecionada e clicar em Next.

Clicar na opo Configure Automatic Storage Management e depois clicar em Next.

Somente o n mvrac1 estar selecionado pois foi de onde partiu a execuo do dbca. Clicar em Select All:

Clicar em Next.

Na tela acima deveremos especificar a senha do usurio SYS para a instncia ASM. Como estamos utilizando o Standard Edition, no possvel utilizar um SPFILE para o ASM, j que a premissa que no importa quantos ns (e consequentemente, quantas instncias) teremos no cluster, quando se usa o SPFILE, esse arquivo dever ficar armazenado num local compartilhado entre os ns do cluster. No nosso caso, usaremos o arquivo PFILE (init.ora). Portanto, clicar na opo Create initialization parameter file (IFILE). Clicar em Next.

A janela acima ser exibida informando que o DBCA ir criar a instncia ASM, e que depois que a instncia ASM for criada, poderemos criar os nossos disk groups. Clicar em OK.

A tela acima exibe que a instncia ASM est sendo criada.

A tela acima ser exibida. Precisamos criar um Disk Group para poder armazenar o banco de dados que criaremos brevemente. Para criar um novo disk group, basta clicar em Create New.

Na tela acima, deveremos definir os valores de alguns campos:


Disk Group Name: DG_DADOS; Redundancy: External; No campo Select Disk Members, devemos selecionar todos os discos.

Clicar em OK.

A tela acima exibe que o DG est sendo criado.

Podemos ver que o DG_DADOS foi criado e est montado nas duas instncias ASM (uma em cada n).

Clicar em Finish.

Clicar em Yes. Vamos verificar e ver se a instncia ASM foi criada e se os recursos do cluster foram alterados? mvrac1:
[oracle@mvrac1 ~]$ ps -ef |grep pmon oracle 14645 1 0 19:41 ? 00:00:00 asm_pmon_+ASM1

mvrac2:
[oracle@mvrac2 ~]$ ps -ef |grep pmon oracle 26486 1 0 19:42 ? 00:00:00 asm_pmon_+ASM2

Pudemos ver que a instncia ASM est em execuo nos 2 servidores. Para verificar o status dos recursos do cluster:
[oracle@mvrac1 ~]$ crsstat HA Resource ----------ora.mvrac1.ASM1.asm ora.mvrac1.LISTENER_MVRAC1.lsnr ora.mvrac1.gsd ora.mvrac1.ons ora.mvrac1.vip ora.mvrac2.ASM2.asm ora.mvrac2.LISTENER_MVRAC2.lsnr ora.mvrac2.gsd ora.mvrac2.ons ora.mvrac2.vip Target -----ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE State ----ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE

on on on on on on on on on on

mvrac1 mvrac1 mvrac1 mvrac1 mvrac1 mvrac2 mvrac2 mvrac2 mvrac2 mvrac2

Pronto! Pudemos ver que foi registrado no cluster uma instncia ASM para cada n! No prximo artigo veremos como criar o banco de dados RAC.

Instalao do Oracle RAC 10g Release 2 Parte 13: Criao do Banco de Dados no Cluster
Vimos no ltimo artigo a criao do ASM no Cluster. Veremos hoje como criar e configurar o Banco de Dados RAC. Vocs vero que uma operao bem fcil de ser feita. Agora, executaremos o assistente para criao do Banco de Dados, o dbca. H algumas formas de executar esse assistente:

Localmente no servidor, atravs da VMWare Server Console; Remotamente, atravs de um software que simule um X-Server (existem diversas opes gratuitas na Internet); Remotamente, atravs de uma estao Linux/Unix/Mac que tenha a parte grfica (X) habilitado.

Eu usarei a terceira opo, portanto, a partir da minha estao:


1 vinicius@Viniciuss-MacBook:~$ ssh -X oracle@172.23.10.11 2 oracle@172.23.10.11's password: 3 /usr/bin/xauth: creating new authority file /home/oracle/.Xauthority

Testando para ver se a parte grfica est funcionando:


1 [oracle@mvrac1 ~]$ xclock

O teste funcionou! Vejam:

Pronto! Agora, vamos criar os diretrios de trace da instncia de banco de dados nos servidores mvrac1 e mvrac2, com o usurio oracle. mvrac1:
1 [oracle@mvrac1 ~]$ mkdir -p /u01/app/oracle/admin/mvdb/adump 2 [oracle@mvrac1 ~]$ mkdir -p /u01/app/oracle/admin/mvdb/bdump 3 [oracle@mvrac1 ~]$ mkdir -p /u01/app/oracle/admin/mvdb/cdump 4 [oracle@mvrac1 ~]$ mkdir -p /u01/app/oracle/admin/mvdb/udump

5 [oracle@mvrac1 ~]$ mkdir -p /u01/app/oracle/admin/mvdb/pfile

mvrac2:
1 [oracle@mvrac2 ~]$ mkdir -p /u01/app/oracle/admin/mvdb/adump 2 [oracle@mvrac2 ~]$ mkdir -p /u01/app/oracle/admin/mvdb/bdump 3 [oracle@mvrac2 ~]$ mkdir -p /u01/app/oracle/admin/mvdb/cdump 4 [oracle@mvrac2 ~]$ mkdir -p /u01/app/oracle/admin/mvdb/udump 5 [oracle@mvrac2 ~]$ mkdir -p /u01/app/oracle/admin/mvdb/pfile

Vamos executar o dbca:


1 [oracle@mvrac1 ~]$ dbca

O dbca detectar que a pilha de cluster est em execuo, e precisamos selecionar qual ser o tipo de ambiente que ser configurado:

Oracle Real Application Clusters database; Oracle single instance database.

Manteremos a opo Oracle Real Application Clusters database selecionada e clicar em Next.

Manter a opo Create a Database e clicar em Next.

A tela acima ser exibida, o DBCA solicita que escolhamos em quais ns o banco de dados RAC ser criado. Clicar no boto Select All.

Agora, com todos os ns selecionados, clicar em Next.

Nos templates, como j temos o Patchset 10.2.0.4 aplicado, a nica opo possvel, a Custom Database, onde os datafiles no esto includos. Isso porque os templates com os datafiles, nada mais so do que um backup RMAN que acompanha a mdia de instalao do Banco de Dados na verso 10.2.0.1. Portanto, se tentarmos criar o banco de dados usando um template que inclua os datafiles, teremos um erro no meio do processo informando que o banco de dados precisa ser iniciado com a opo STARTUP UPGRADE. Portanto, mantenha a opo Custom Database selecionada e clique em Next.

Na tela acima devemos especificar o nome global do banco de dados e o prefixo de SID. Os valores sero iguais: mvdb Clicar em Next.

Por enquanto no configuraremos o Enterprise Manager, faremos isso depois. Clicar em Next.

Na tela acima, devemos especificar a senha. Como se trata de um ambiente de testes, mantive a opo Use the Same Password for All Accounts. A senha foi definida como oracle. Clicar em Next.

Como a edio utilizada a Standard Edition, a nica opo possvel para armazenar o banco de dados o Automatic Storage Management (ASM). Clicar em Next.

A tela acima exibir os Disk Groups existentes no ASM. Nesse momento, se necessrio, possvel criar outros Disk Groups, no entanto, no o faremos. Basta selecionar o Disk Group DG_DADOS como DG de destino do banco de dados e clicar em Next.

Na tela acima, o Disk Group DG_DADOS foi colocado como rea onde o banco de dados ser armazenado, clicar em Next.

No habilitaremos a Flash Recovery Area e nem ativaremos o ArchiveLog Mode no banco de dados. Clicar em Next.

No nosso banco de dados de estudo, no precisamos de todos os componentes. Por isso, na tela acima, s deixei a opo Enterprise Manager Repository selecionada. Clicar em Next.

Na tela acima, ns podemos criar os servios de load balance e failover. Faremos isso posteriormente (nosso prximo artigo). Clicar em Next.

A tela acima nos dar um alerta que precisamos de no mnimo 216MB para a memria disponvel para o banco de dados. Esse alerta ocorreu pois a nossa mquina virtual tem apenas 512MB de RAM, no h problema no alerta. Clicar em OK.

No alteraremos nenhum parmetro nesse momento. Clicar em Next.

Na tela acima podemos criar mais tablespaces, multiplexar os control files e multiplexar os redo logs. Clicar em Next.

A tela acima a ltima tela antes do incio da criao do banco de dados. Eu sempre gosto de deixar os scripts de criao do banco de dados guardado. Portanto, clico na opo Generate Database Creation Scripts. Depois disso, clicar em Finish.

Uma tela com o resumo sobre a criao do banco de dados ser exibida. Clicar em OK.

Uma tela com o progresso da gerao dos scripts de criao do banco de dados ser exibida. Aguardar.

A tela acima ser exibida informando que os scripts foram gerados com sucesso. Clicar em OK.

Uma janela com o progresso da criao do banco de dados ser exibida. Aguardar.

Quando o banco de dados for criado, a tela acima ser exibida. Basta agora clicar em Exit.

O banco de dados RAC ser iniciado. Aguardar. A tela do DBCA ser fechada automaticamente. Vamos verificar e ver se a instncia ASM foi criada e se os recursos do cluster foram alterados? mvrac1:
1 [oracle@mvrac1 ~]$ ps -ef |grep pmon | grep -v grep 2 oracle 3 oracle 5342 28942 1 1 0 Feb22 ? 0 Feb23 ? 00:00:21 asm_pmon_+ASM1 00:00:31 ora_pmon_mvdb1

mvrac2:
1 [oracle@mvrac2 ~]$ ps -ef |grep pmon | grep -v grep 2 oracle 3 oracle 5040 5268 1 1 0 Feb22 ? 0 Feb23 ? 00:00:00 asm_pmon_+ASM2 00:00:00 ora_pmon_mvdb2

Pudemos ver que o banco de dados est em execuo nos 2 servidores atravs das instncias mvdb1 e mvdb2 respectivamente. Para verificar o status dos recursos do cluster:
01 [oracle@mvrac1 ~]$ crsstat 02 HA Resource 03 ----------04 ora.mvdb.db 05 ora.mvdb.mvdb1.inst 06 ora.mvdb.mvdb2.inst 07 ora.mvrac1.ASM1.asm 08 ora.mvrac1.LISTENER_MVRAC1.lsnr 09 ora.mvrac1.gsd 10 ora.mvrac1.ons 11 ora.mvrac1.vip 12 ora.mvrac2.ASM2.asm 13 ora.mvrac2.LISTENER_MVRAC2.lsnr 14 ora.mvrac2.gsd 15 ora.mvrac2.ons 16 ora.mvrac2.vip Target -----ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE State ----ONLINE on mvrac1 ONLINE on mvrac1 ONLINE on mvrac2 ONLINE on mvrac1 ONLINE on mvrac1 ONLINE on mvrac1 ONLINE on mvrac1 ONLINE on mvrac1 ONLINE on mvrac2 ONLINE on mvrac2 ONLINE on mvrac2 ONLINE on mvrac2 ONLINE on mvrac2

Pronto! Pudemos ver que foi registrado no cluster uma instncia de banco de dados para cada n, alm de um recurso com o final .db, representando o banco de dados. No prximo artigo veremos como criar e configurar os servios de failover e load balance, bem como simular uma situao de failover, alm de configurar o Enterprise Manager.

Instalao do Oracle RAC 10g Release 2 Parte 14: Criao do Servio para Load Balance e Failover
Vimos no ltimo artigo a criao do Banco de Dados RAC. Veremos hoje como criar o servio responsvel pelo load balance e principalmente, o failover. Vocs vero que uma operao bem fcil de ser feita. Agora, executaremos o assistente para criao do servio, o dbca. H algumas formas de executar esse assistente:

Localmente no servidor, atravs da VMWare Server Console; Remotamente, atravs de um software que simule um X-Server (existem diversas opes gratuitas na Internet); Remotamente, atravs de uma estao Linux/Unix/Mac que tenha a parte grfica (X) habilitado.

Eu usarei a terceira opo, portanto, a partir da minha estao:


1 vinicius@Viniciuss-MacBook:~$ ssh -X oracle@172.23.10.11 2 oracle@172.23.10.11's password: 3 /usr/bin/xauth: creating new authority file /home/oracle/.Xauthority

Testando para ver se a parte grfica est funcionando:


1 [oracle@mvrac1 ~]$ xclock

O teste funcionou! Vejam:

Pronto!

Vamos executar o dbca:


1 [oracle@mvrac1 ~]$ dbca

O dbca detectar que a pilha de cluster est em execuo, e precisamos selecionar qual ser o tipo de ambiente que ser configurado:

Oracle Real Application Clusters database; Oracle single instance database.

Manteremos a opo Oracle Real Application Clusters database selecionada e clicaremos em Next.

Clicar no item Services Management e depois clicar em Next.

O DBCA exibir a lista de bancos de dados existentes e ativos no cluster. Como s temos o banco de dados mvdb, ele ser selecionado automaticamente. Clicar em Next.

A janela acima ser exibida. Essa janela tambm aparece na criao do banco de dados. Nela, criaremos no boto Add para criar um novo servio.

Como exemplo, estou criando um servio chamado producao. Clicar em OK.

No item Details for producao, temos 3 opes disponveis para as instncias de banco de dados:

Not used: o servio nunca utilizar a instncia de banco de dados, ou seja, nunca haver conexes feitas quela instncia utilizando esse servio de banco de dados; Preferred: o servio SEMPRE utilizar a instncia de banco de dados, ou seja, no caso de um cluster de 2 ns, se as 2 instncias estiverem como Preferred, haver o Load Balance entre as 2 instncias; Available: o servio SOMENTE utilizar a instncia de banco dados em caso de falha na instncia que estiver definida como PREFERRED. Ou seja, se a instncia mvdb1 estiver como Preferred, e a instncia mvdb2 estiver como Available, as conexes s sero feitas na instncia mvdb2 se a instncia mvdb1 estiver indisponvel.

Como queremos que acontea o Load Balance entre as 2 instncias, as 2 instncias devero ser preenchidas como Preferred. Agora configuraremos a parte do servio responsvel pelo failover. Chamamos isso de TAF (Transparent Application Failover). No item TAF Policy temos 3 opes:

None: no haver failover para o servio.; Basic: ocorrer o failover bsico para o servio, ou seja, se o usurio estiver conectado na instncia mvdb1 executando uma query e a instncia ficar indisponvel, o usurio ser levado para a instncia mvdb2;

Pre-connect: quando o usurio se conectar pelo servio na instncia mvdb1, automaticamente ser criada uma conexo (pr-conexo) na instncia mvdb2, isso torna o failover mais rpido, j que haver uma conexo existente na segunda instncia, no entanto, em contra-partida, essa sesso na segunda instncia consumir uma fatia da memria no servidor.

Utilizaremos a poltica Basic. Clicar em Finish.

A janela acima solicitar confirmao para a criao do servio no banco de dados mvdb. Clicar em OK.

Uma janela com o progresso da criao do servio ser exibida. Aguardar.

A janela acima ser exibida questionando se o DBA deseja realizar mais alguma operao. Clicar em No. Vamos verificar se os recursos do cluster foram alterados? Para verificar o status dos recursos do cluster:
01 [oracle@mvrac1 ~]$ crsstat 02 HA Resource 03 ----------04 ora.mvdb.db Target -----ONLINE State ----ONLINE on mvrac1

05 ora.mvdb.mvdb1.inst 06 ora.mvdb.mvdb2.inst 07 ora.mvdb.producao.cs 08 ora.mvdb.producao.mvdb1.srv 09 ora.mvdb.producao.mvdb2.srv 10 ora.mvrac1.ASM1.asm 11 ora.mvrac1.LISTENER_MVRAC1.lsnr 12 ora.mvrac1.gsd 13 ora.mvrac1.ons 14 ora.mvrac1.vip 15 ora.mvrac2.ASM2.asm 16 ora.mvrac2.LISTENER_MVRAC2.lsnr 17 ora.mvrac2.gsd 18 ora.mvrac2.ons 19 ora.mvrac2.vip

ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE

ONLINE on mvrac1 ONLINE on mvrac2 ONLINE on mvrac1 ONLINE on mvrac1 ONLINE on mvrac2 ONLINE on mvrac1 ONLINE on mvrac1 ONLINE on mvrac1 ONLINE on mvrac1 ONLINE on mvrac1 ONLINE on mvrac2 ONLINE on mvrac2 ONLINE on mvrac2 ONLINE on mvrac2 ONLINE on mvrac2

Pronto! Podemos ver que foi registrado no cluster uma servio de banco de dados para cada n, alm de um recurso com o final .cs, representando o servio clusterizado (cluster service). Agora vamos realizar os testes com o servio. Porm, para que o failover acontea com sucesso, a Oracle recomenda que os hostnames pblicos, alm dos hostnames referentes aos endereos VIP estejam registrados no DNS e/ou no arquivo hosts dos usurios. Como estou usando uma estao de trabalho baseada em Unix, o arquivo o /etc/hosts, no caso do Windows, C:\WINDOWS\SYSTEM32\DRIVERS\ETC\HOSTS. As seguintes linhas precisam ser adicionadas:
1 172.23.10.21 2 172.23.10.22 3 172.23.10.11 4 172.23.10.12 mvrac1-vip mvrac2-vip mvrac1 mvrac2 mvrac1-vip.viniciusdba.com.br mvrac2-vip.viniciusdba.com.br mvrac1.viniciusdba.com.br mvrac2.viniciusdba.com.br

Outro ponto importantssimo para que o failover acontea com sucesso, a entrada do TNSNAMES.ORA deve estar correta. Dentro do prprio servidor, h o TNSNAMES.ORA correto:
01 PRODUCAO = 02 (DESCRIPTION =

03

(ADDRESS = (PROTOCOL = TCP)(HOST = mvrac1-vip.viniciusdba.com.br)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = mvrac2-vip.viniciusdba.com.br)(PORT = 1521)) (LOAD_BALANCE = yes) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = producao) (FAILOVER_MODE = (TYPE = SELECT) (METHOD = BASIC) (RETRIES = 180) (DELAY = 5) ) ) )

04 05 06 07 08 09 10 11 12 13 14 15 16

Observem que o TNSNAMES aponta para os 2 endereos VIP, ou seja, mesmo que um servidor fique indisponvel, o IP VIP que estava nele, ir para o outro servidor. Alm disso, o ambiente pode retornar o erro ORA-12545 ao tentar se conectar pelo servio criado recentemente. A correo deste erro definir o parmetro LOCAL_LISTENER para que cada n tenha somente o VIP local associado ao parmetro. Vejamos:
SQL> alter system set 1 local_listener='(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=mvrac1vip)(PORT=1521)))' scope=both sid='mvdb1'; 2 3 System altered. 4 SQL> alter system set 5 local_listener='(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=mvrac2vip)(PORT=1521)))' scope=both sid='mvdb2'; 6 7 System altered.

Agora sim podemos testar:

01 sqlplus system/oracle@producao 02 03 SQL*Plus: Release 10.2.0.4.0 - Production on Thu Feb 25 00:06:27 2010 04 05 Copyright (c) 1982, 2007, Oracle. 06 07 Connected to: 08 Oracle Database 10g Release 10.2.0.4.0 - Production 09 With the Real Application Clusters option 10 11 SQL> @taf 12 13 INST# INST_NAME 14 15 HOST USERNAME TYPE METHOD FAILED OVER All Rights Reserved.

------ ---------- ---------------------------- ---------- ---------- ---------- ---------2 mvdb2 mvrac2.viniciusdba.com.br SYSTEM SELECT BASIC NO

O script taf.sql contm as seguintes linhas:


01 set linesize 100 02 col INST# format 99999 03 col INST_NAME format a10 04 col HOST format a28 05 col USERNAME format a10 06 col TYPE format a10 07 col METHOD format a10 08 col "FAILED OVER" format a11 09 10 select 11 12 13 INSTANCE_NUMBER INST#,INSTANCE_NAME INST_NAME,HOST_NAME HOST, USERNAME, FAILOVER_TYPE TYPE, FAILOVER_METHOD METHOD, FAILED_OVER "FAILED OVER"

14 from 15 V$SESSION a, V$INSTANCE b

16 where 17 USERNAME = (select SYS_CONTEXT ('USERENV', 'SESSION_USER') from DUAL)

18 and 19 20 ; SID = (select SYS_CONTEXT ('USERENV', 'SID') from DUAL)

De acordo com a sada do script, estamos na instncia mvdb2, vamos fazer uma nova conexo para verificar o funcionamento do Load Balance:
1 SQL> connect system/oracle@producao 2 Connected. 3 SQL> @taf 4 5 INST# INST_NAME 6 7 HOST USERNAME TYPE METHOD FAILED OVER

------ ---------- ---------------------------- ---------- ---------- ---------- ---------1 mvdb1 mvrac1.viniciusdba.com.br SYSTEM SELECT BASIC NO

Funcionou! Agora, vamos fazer um teste de failover. Vamos executar como teste, um script que traga muitas linhas como resultado, o script o query.sql:
1 select a.*, b.*, c.* 2 from dba_objects a, dba_objects b, dba_objects c;

Como podem ver, faremos um produto cartesiano. Pois bem, a ideia a seguinte:

J estamos conectados na instncia mvdb1; Executaremos nessa instncia, o script query.sql; Enquanto a query executada, baixaremos a instncia mvdb1 com a opo abort; A sesso do usurio SYSTEM dever ser levada para o servidor mvdb2 e a query continuar o fetch do lugar onde parou, isso, sem o usurio perceber; Executaremos o script taf.sql para verificar se ocorreu o failover.

Vamos l? Vamos deixar o comando do shutdown abort pronto para ser processado (vai faltar s pressionar [ENTER]). Com o usurio oracle, em qualquer servidor (mvrac1 ou mvrac2):

1 srvctl stop instance -d mvdb -i mvdb1 -o abort

Assim que a query voltar a processar, cancele o processamento. Se estiver usando o SQL*Plus no Windows, clique em Arquivo / Cancelar, e em seguida, execute o script taf.sql. Caso esteja usando o SQL*Plus em ambiente Unix/Linux, pressione [CTRL] + [C] e, em seguida, execute o script taf.sql. Vejam o resultado:
1 SQL> @taf 2 3 INST# INST_NAME 4 5 HOST USERNAME TYPE METHOD FAILED OVER

------ ---------- ---------------------------- ---------- ---------- ---------- ---------2 mvdb2 mvrac2.viniciusdba.com.br SYSTEM SELECT BASIC YES

Observem que agora minha sesso est na instncia mvdb2 e a coluna FAILED OVER foi alterada para YES.

Instalao do Oracle RAC 10g Release 2 Parte 15: Configurao do Enterprise Manager
Chegamos ao ltimo artigo sobre a srie de Instalao do Oracle RAC 10g Release 2. claro que na semana que vem, teremos um novo artigo, mas desta vez, comearei a abordar a administrao do ambiente Oracle RAC. Portanto, essa srie de 15 artigos se encerra aqui, e iniciaremos uma nova srie de artigos. Para configurar o Enterprise Manager, precisamos ter alguns dados:

Nome global do banco de dados: mvdb; Porta do Listener: 1521; Nome do Cluster: crs_mv; Senha do usurio SYS; Senha do usurio DBSNMP; Senha do usurio SYSMAN; Endereo de e-mail para notificaes (opcional); Servidor SMTP para notificaes (opcional); Oracle Home do ASM; Porta do ASM: 1521; Role do ASM: SYSDBA; Usurio do ASM: SYS; Senha do usurio SYS do ASM.

Vamos fazer a configurao? Com o usurio oracle no servidor mvrac1:


01 [oracle@mvrac1 ~]$ emca -config dbcontrol db -repos recreate -cluster 02 03 STARTED EMCA at Feb 25, 2010 2:22:59 AM

04 EM Configuration Assistant, Version 10.2.0.1.0 Production 05 Copyright (c) 2003, 2005, Oracle. 06 07 Enter the following information: 08 Database unique name: mvdb 09 Listener port number: 1521 10 Cluster name: crs_mv 11 Password for SYS user: 12 Password for DBSNMP user: 13 Password for SYSMAN user: 14 Email address for notifications (optional): 15 Outgoing Mail (SMTP) server for notifications (optional): 16 ASM ORACLE_HOME [ /u01/app/oracle/product/10.2.0/db_1 ]: 17 ASM port [ 1521 ]: 18 ASM user role [ SYSDBA ]: 19 ASM username [ SYS ]: 20 ASM user password: 21 ----------------------------------------------------------------22 23 You have specified the following settings 24 25 Database ORACLE_HOME ................ /u01/app/oracle/product/10.2.0/db_1 26 27 Database instance hostname ................ mvrac1.viniciusdba.com.br 28 Listener port number ................ 1521 29 Cluster name ................ crs_mv 30 Database unique name ................ mvdb 31 Email address for notifications ............... 32 Outgoing Mail (SMTP) server for notifications ............... 33 ASM ORACLE_HOME ................ /u01/app/oracle/product/10.2.0/db_1 All rights reserved.

34 ASM port ................ 1521 35 ASM user role ................ SYSDBA 36 ASM username ................ SYS 37 38 ----------------------------------------------------------------39 Do you wish to continue? [yes(Y)/no(N)]: Y 40 Feb 25, 2010 2:23:45 AM oracle.sysman.emcp.EMConfig perform INFO: This operation is being logged at 41 /u01/app/oracle/product/10.2.0/db_1/cfgtoollogs/emca/mvdb/emca_2010-02-25_02-2259-AM.log. 42 Feb 25, 2010 2:23:50 AM oracle.sysman.emcp.EMReposConfig dropRepository 43 INFO: Dropping the EM repository (this may take a while) ... 44 Feb 25, 2010 2:28:10 AM oracle.sysman.emcp.EMReposConfig invoke 45 INFO: Repository successfully dropped 46 Feb 25, 2010 2:28:11 AM oracle.sysman.emcp.EMReposConfig createRepository 47 INFO: Creating the EM repository (this may take a while) ... 48 Feb 25, 2010 2:34:20 AM oracle.sysman.emcp.EMReposConfig invoke 49 INFO: Repository successfully created 50 Feb 25, 2010 2:34:43 AM oracle.sysman.emcp.EMDBCConfig instantiateOC4JConfigFiles INFO: Propagating 51 /u01/app/oracle/product/10.2.0/db_1/oc4j/j2ee/OC4J_DBConsole_mvrac1_mvdb1 to remote nodes ... 52 Feb 25, 2010 2:34:45 AM oracle.sysman.emcp.EMDBCConfig instantiateOC4JConfigFiles INFO: Propagating 53 /u01/app/oracle/product/10.2.0/db_1/oc4j/j2ee/OC4J_DBConsole_mvrac2_mvdb2 to remote nodes ... 54 Feb 25, 2010 2:34:46 AM oracle.sysman.emcp.EMDBCConfig copyAndPropagateOC4JDir INFO: Propagating 55 /u01/app/oracle/product/10.2.0/db_1/oc4j/j2ee/isqlplus_mvrac1.viniciusdba.com.br to remote nodes ... 56 Feb 25, 2010 2:34:48 AM oracle.sysman.emcp.EMDBCConfig copyAndPropagateOC4JDir INFO: Propagating 57 /u01/app/oracle/product/10.2.0/db_1/oc4j/j2ee/isqlplus_mvrac2.viniciusdba.com.br to remote nodes ... 58 Feb 25, 2010 2:34:59 AM oracle.sysman.emcp.EMAgentConfig deployStateDirs

59

INFO: Propagating /u01/app/oracle/product/10.2.0/db_1/mvrac1_mvdb1 to remote nodes ...

60 Feb 25, 2010 2:35:03 AM oracle.sysman.emcp.EMAgentConfig deployStateDirs 61 INFO: Propagating /u01/app/oracle/product/10.2.0/db_1/mvrac2_mvdb2 to remote nodes ...

62 Feb 25, 2010 2:35:04 AM oracle.sysman.emcp.util.DBControlUtil secureDBConsole 63 INFO: Securing Database Control (this may take a while) ... 64 Feb 25, 2010 2:36:34 AM oracle.sysman.emcp.util.DBControlUtil startOMS 65 INFO: Starting Database Control (this may take a while) ... 66 Feb 25, 2010 2:38:57 AM oracle.sysman.emcp.EMDBPostConfig performConfiguration 67 INFO: Database Control started successfully 68 Feb 25, 2010 2:39:50 AM oracle.sysman.emcp.EMDBPostConfig performConfiguration 69 INFO: >>>>>>>>>>> The Database Control URL is https://mvrac1.viniciusdba.com.br:1158/em <<<<<<<<<<< Feb 25, 2010 2:40:40 AM oracle.sysman.emcp.EMDBPostConfig showClusterDBCAgentMessage

70

71 INFO: 72 **************** 73 INSTANCE 74 ---------75 76 mvdb1 77 mvdb2 78 79 Enterprise Manager configuration completed successfully 80 FINISHED EMCA at Feb 25, 2010 2:40:43 AM mvrac1 mvrac2 mvrac1.viniciusdba.com.br mvrac1.viniciusdba.com.br Current Configuration NODE ---------****************

DBCONTROL_UPLOAD_HOST ---------------------

Tela inicial do EM:

Adio/Remoo de N Parte 1: Pr-requisitos de software


A partir desse artigo, veremos como adicionar ns (nodes) num Cluster Oracle. Apenas para relembrar, os pr-requisitos de software so os seguintes: Pr-requisitos de software: - Oracle Enterprise Linux 5 Update 3; - Oracle Clusterware 10g Release 2 para Linux x86; - Oracle Database 10g Release 2 para Linux x86; - Patchset 10.2.0.4 Patch Number 6810189; - VMWare Server (eu usei a verso 1.0.5). Pr-requisitos de hardware: - 45GB de disco. - Pelo menos 2GB de RAM. O prximo artigo, abordar a criao da mquina virtual que ser o terceiro n.

Adio/Remoo de N Parte 2: Criao da 3 Mquina Virtual


No exibirei aqui, a tela, mas, para a rede InterConnect, entre os ns do RAC, usarei a VMNet2, que tem as seguintes definies: VMNet2 Rede: 10.0.0.0 Subnet: 255.0.0.0 Para a rede pblica, que os usurios tero acesso, usarei a placa de rede do notebook como ponte (bridge), e com isso, qualquer estao de trabalho da minha rede conseguir acessar o ambiente. Vamos l! Vamos comear a criar a nossa terceira mquina virtual para que possamos adicion -la ao cluster onde est sendo executado o nosso Oracle RAC! Acessem a VMWare Server Console: Iniciar / Programas / VMWare Server / VMWare Server Console:

Clicar no boto New Virtual Machine:

Clicar em Avanar:

Clicar em Custom e, em seguida, em Avanar:

Escolher o Linux como Sistema Operacional e, em seguida, escolher a verso Other Linux 2.6.x kernel. Clicar em Avanar:

Seguindo o mesmo padro de nomes utilizados anteriormente, defina o nome da mquina (mvrac3) e escolha o caminho onde a mquina virtual ficar armazenada (G:\VMWARE\mvrac3). Clicar em Avanar:

Deixar a opo Make this virtual machine private selecionada. Clicar em Avanar:

Deixar a opo User that powers on the virtual machine selecionada e clique em Avanar:

Eu utilizei apenas um processador. E, portanto, deixei a opo One selecionada para o item Number of processors. Clicar em Avanar:

Na tela acima, necessrio especificar a quantidade de memria que ser usada pela mquina virtual. Para os testes em VMWare, 512MB bastam. Clicar em Avanar:

Para a primeira placa de rede do servidor, utilizarei a conexo em ponte bridged networking, onde a placa de rede da VMWare ter um IP da rede da minha residncia. Com isso, qualquer estao da rede conseguir acessar o banco de dados. Clicar em Avanar:

O tipo de adaptador de I/O dever ser escolhido. Para os discos SCSI do servidor virtual, sempre usaremos o tipo LSI Logic. Clicar em Avanar:

Ser criado um novo disco virtual. Esse disco ser o disco interno do servidor. Deixar a opo Create a new virtual disk e clicar em Avanar:

O disco ser do tipo SCSI. Deixar essa opo selecionada e clicar em Avanar:

O tamanho do disco dever ser especificado. Um bom nmero para mquina virtual, um disco com 12GB de capacidade. Eu sempre deixo a opo Allocate all disk space now. Alguns colegas no usam essa opo, pois j se perde esse espao imediatamente. No entanto, muito chato ter que aguardar pela alocao de mais espao durante a instalao dos produtos que instalaremos nessas mquinas, isso causa o aumento do tempo de espera. Tambm deixo a opo Split disk into 2GB files, pois, caso eu precise copiar essa VM para algum disco formatado em FAT32, o tamanho mximo de arquivo permitido por esse tipo de sistema de arquivos 2GB. Clicar em Avanar:

necessrio especificar o nome do arquivo que ser o disco virtual. Eu sempre uso o nome de localdisk.vmdk. Clicar em Concluir:

Uma tela como a exibida acima ser mostrada.

A janela acima ser exibida quando a criao da VM for concluda. Lembrando que a VM ainda no est pronta para instalarmos o sistema operacional, pois, para o RAC, ainda precisamos de mais uma placa de rede (para o InterConnect) e os discos que ficaro compartilhados entre as mquinas virtuais (LUNs virtuais do storage). Portanto, cliquem no item Edit virtual machine settings:

Clicar no boto Add para adicionar um novo item de hardware:

A janela acima ser exibida. Clicar em Avanar:

Escolher o item Ethernet Adapter para adicionar uma nova placa de rede. Clicar em Avanar:

Selecionar a rede Custom: VMNet2 (Host-only). Essa rede a que responde pela faixa de IPs 10.0.0.0 e subnet 255.0.0.0. Essa placa de rede ser a responsvel pela rede InterConnect. Clicar em Concluir:

A janela acima ser exibida. Nela, j possvel ver a nova placa de rede adicionada (Ethernet 2).

A tela acima mostrar qual ser a configurao da VMWare: State: Powered off Guest OS: Other Linux 2.6.x kernel Configuration file: G:\VMWARE\mvrac3\Other Linux 2.6.x kernel.vmx Version: Current virtual machine for VMware Server 1.0.5 E os seus dispositivos (devices): Memory: 512MB Hard Disk (SCSI 0:0) CD-ROM (IDE 1:0) Auto-detect Ethernet Bridged Ethernet 2 Custom Processors 1 O diretrio G:\VMWARE\mvrac3 dever ter os seguintes arquivos:

Bom pessoal, por enquanto isso! No prximo artigo voltaremos com a instalao do sistema operacional!

Oracle Clusterware Rotinas Administrativas Parte 1 Start e Stop


Esse primeiro artigo tratar sobre o start e stop do Clusterware. No explicarei em detalhes sobre os binrios que utilizaremos para parar os recursos do cluster, pois isso ser tratado nos artigos subsequentes. O objetivo deste artigo deixar voc preparado para inicializar e interromper os recursos individualmente ou globalmente. Vamos l? Comearemos com a interrupo de todos os recursos do cluster num n especfico. Para isso, necessrio utilizar o binrio crsctl que est em $ORA_CRS_HOME, a execuo deste binrio deve ser feita atravs do usurio root. O atual status dos componentes do cluster :
01 [oracle@mvrac1 ~]$ crsstat 02 HA Resource 03 ----------04 ora.mvdb.db 05 ora.mvdb.mvdb1.inst 06 ora.mvdb.mvdb2.inst 07 ora.mvdb.producao.cs 08 ora.mvdb.producao.mvdb1.srv 09 ora.mvdb.producao.mvdb2.srv 10 ora.mvrac1.ASM1.asm 11 ora.mvrac1.LISTENER_MVRAC1.lsnr 12 ora.mvrac1.gsd 13 ora.mvrac1.ons 14 ora.mvrac1.vip 15 ora.mvrac2.ASM2.asm 16 ora.mvrac2.LISTENER_MVRAC2.lsnr 17 ora.mvrac2.gsd 18 ora.mvrac2.ons 19 ora.mvrac2.vip Target -----ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE State ----ONLINE on mvrac1 ONLINE on mvrac1 ONLINE on mvrac2 ONLINE on mvrac1 ONLINE on mvrac1 ONLINE on mvrac2 ONLINE on mvrac1 ONLINE on mvrac1 ONLINE on mvrac1 ONLINE on mvrac1 ONLINE on mvrac1 ONLINE on mvrac2 ONLINE on mvrac2 ONLINE on mvrac2 ONLINE on mvrac2 ONLINE on mvrac2

Podemos observar que todos os recursos do cluster esto ONLINE. Tanto no n mvrac1 quanto no mvrac2.

Vamos supor que a equipe de infra-estrutura precisa realizar a atualizao de um firmware de uma placa do servidor. Ou trocar um processador, ou aumentar memria, enfim, qualquer atividade que exija a interrupo do servidor. Como utilizamos o Oracle RAC, o ambiente de Banco de Dados no ficar indisponvel pois temos dois servidores que executam o banco de dados, desta forma, podemos interromper tranquilamente o servidor que passar pela manuteno, com a garantia que o ambiente de banco de dados continuar disponvel aos usurios. O servidor que passar pela manuteno o mvrac1. Desta forma, com o usurio root, executaremos o binrio crsctl da seguinte forma:
1 [root@mvrac1 ~]# /u01/app/oracle/product/10.2.0/crs/bin/crsctl stop crs 2 Stopping resources. This could take several minutes. 3 Successfully stopped CRS resources. 4 Stopping CSSD. 5 Shutting down CSS daemon. 6 Shutdown request successfully issued.

Vejam que a sintaxe : crsctl stop crs. Eu estou solicitando atravs do crsctl interromper todo o crs (cluster), mas o binrio crsctl quando utilizado com as palavras-chave start ou stop, tratar apenas do n onde executado, ou seja, interromper todos os recursos no n onde o crsctl stop crs foi executado, neste caso, o n mvrac1. Vamos agora no servidor mvrac2 verificar o status dos recursos do cluster aps a interrupo dos recursos no n mvrac1.
01 [oracle@mvrac2 crsd]$ crsstat 02 HA Resource 03 ----------04 ora.mvdb.db 05 ora.mvdb.mvdb1.inst 06 ora.mvdb.mvdb2.inst 07 ora.mvdb.producao.cs 08 ora.mvdb.producao.mvdb1.srv 09 ora.mvdb.producao.mvdb2.srv 10 ora.mvrac1.ASM1.asm 11 ora.mvrac1.LISTENER_MVRAC1.lsnr 12 ora.mvrac1.gsd 13 ora.mvrac1.ons Target -----ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE State ----ONLINE on mvrac2 OFFLINE ONLINE on mvrac2 ONLINE on mvrac2 OFFLINE ONLINE on mvrac2 OFFLINE OFFLINE OFFLINE OFFLINE

14 ora.mvrac1.vip 15 ora.mvrac2.ASM2.asm 16 ora.mvrac2.LISTENER_MVRAC2.lsnr 17 ora.mvrac2.gsd 18 ora.mvrac2.ons 19 ora.mvrac2.vip

ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE

ONLINE on mvrac2 ONLINE on mvrac2 ONLINE on mvrac2 ONLINE on mvrac2 ONLINE on mvrac2 ONLINE on mvrac2

Observem que o recurso ora.mvrac1.vip que o recurso que controla o VIP (IP Virtual) do n mvrac1 est agora online no servidor mvrac2. Esse o comportamento padro do Clusterware. Quando os recursos so interrompidos atravs do crsctl, o IP virtual remanejado para outro servidor que estiver ativo no cluster. Os recursos so interrompidos na seguinte ordem: 1) Servios de BD; 2) BD; 3) ASM; 4) Nodeapps (Listener, GSD, ONS e VIP). Muito bem, para inicializar os recursos do cluster no n mvrac1, basta utilizar o crsctl com a palavrachave start, com o usurio root:
1 [root@mvrac1 ~]# /u01/app/oracle/product/10.2.0/crs/bin/crsctl start crs 2 Attempting to start CRS stack 3 The CRS stack will be started shortly

Aps isso, vamos verificar o status dos recursos do cluster:


01 [oracle@mvrac1 ~]$ crsstat 02 HA Resource 03 ----------04 ora.mvdb.db 05 ora.mvdb.mvdb1.inst 06 ora.mvdb.mvdb2.inst 07 ora.mvdb.producao.cs 08 ora.mvdb.producao.mvdb1.srv 09 ora.mvdb.producao.mvdb2.srv 10 ora.mvrac1.ASM1.asm Target -----ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE State ----ONLINE on mvrac2 ONLINE on mvrac1 ONLINE on mvrac2 ONLINE on mvrac2 ONLINE on mvrac1 ONLINE on mvrac2 ONLINE on mvrac1

11 ora.mvrac1.LISTENER_MVRAC1.lsnr 12 ora.mvrac1.gsd 13 ora.mvrac1.ons 14 ora.mvrac1.vip 15 ora.mvrac2.ASM2.asm 16 ora.mvrac2.LISTENER_MVRAC2.lsnr 17 ora.mvrac2.gsd 18 ora.mvrac2.ons 19 ora.mvrac2.vip

ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE

ONLINE on mvrac1 ONLINE on mvrac1 ONLINE on mvrac1 ONLINE on mvrac1 ONLINE on mvrac2 ONLINE on mvrac2 ONLINE on mvrac2 ONLINE on mvrac2 ONLINE on mvrac2

Os recursos so inicializados na seguinte ordem: 1) Nodeapps (Listener, GSD, ONS e VIP); 2) ASM; 3) BD; 4) Servios de BD. Agora que j sabemos inicializar/interromper todos os recursos do cluster num n, vamos ver como interrompemos servios especficos do cluster num n, ou ento em todo o cluster. Vamos supor que eu precise alterar um parmetro somente numa instncia, como por exemplo, a quantidade definida para a SGA. A instncia que ter o parmetro alterado a instncia mvdb1, que est em execuo no servidor mvrac1:
1 SQL> alter system set sga_max_size=175m scope=spfile sid='mvdb1'; 2 3 System altered. 4 5 SQL> alter system set sga_target=175m scope=spfile sid='mvdb1'; 6 7 System altered.

Aps alterar o parmetro, necessrio reiniciar a instncia. Agora utilizaremos o binrio srvctl, neste momento, verificaremos apenas as funes de start/stop deste binrio. Ele utilizado para interromper recursos especficos, em todo o cluster ou apenas em ns especficos.

Instncia de BD:

Para interromper a instncia mvdb1, basta executar o seguinte:


1 [oracle@mvrac1 ~]$ srvctl stop instance -d mvdb -i mvdb1

A sintaxe : srvctl stop instance -d <DBNAME> -i <INSTANCE_NAME> -o <OPTION_SHUTDOWN> Exemplos: srvctl stop instance -d mvdb -i mvdb1 -o abort srvctl stop instance -d mvdb -i mvdb1 -o transactional A opo default para o shutdown a IMMEDIATE. Para fazer o start o srvctl segue a mesma lgica:
1 [oracle@mvrac1 ~]$ srvctl start instance -d mvdb -i mvdb1

A sintaxe : srvctl start instance -d <DBNAME> -i <INSTANCE_NAME> -o <OPTION_STARTUP> Exemplos: srvctl start instance -d mvdb -i mvdb1 -o nomount srvctl start instance -d mvdb -i mvdb1 -o mount A opo default para o shutdown a OPEN.

Banco de Dados

Assim como baixamos apenas uma instncia, podemos tambm realizar o stop/start de todo o banco de dados, ou seja, todas as instncias associadas a este banco de dados:
1 [oracle@mvrac1 ~]$ srvctl stop database -d mvdb

Sua sintaxe : srvctl stop database -d <DBNAME> -o <OPTION_SHUTDOWN> Exemplos: srvctl stop database -d mvdb -o abort srvctl stop database -d mvdb -o transactional A opo default para o shutdown a IMMEDIATE. Para fazer o startup do banco de dados:
1 [oracle@mvrac1 ~]$ srvctl start database -d mvdb

Sua sintaxe : srvctl start database -d <DBNAME> -o <OPTION_STARTUP> Exemplos: srvctl start database -d mvdb -o nomount srvctl start database -d mvdb -o mount A opo default para o shutdown a OPEN.

ASM

Para interromper o ASM:


1 [oracle@mvrac1 ~]$ srvctl stop asm -n mvrac1

A sintaxe deste comando : srvctl stop asm -n <NODENAME>. Como s h APENAS uma instncia ASM por n, necessrio especificar o n quando a instncia ASM for interrompida. Para inicializar o ASM:
1 [oracle@mvrac1 ~]$ srvctl start asm -n mvrac1

A sintaxe deste comando : srvctl start asm -n <NODENAME>. Como s h APENAS uma instncia ASM por n, necessrio especificar o n quando a instncia ASM for inicializada.

Nodeapps

Para interromper os nodeapps:


1 [oracle@mvrac1 ~]$ srvctl stop nodeapps -n mvrac1

A sintaxe deste comando : srvctl stop nodeapps -n <NODENAME> . Para inicializar os nodeapps:
1 [oracle@mvrac1 ~]$ srvctl start nodeapps -n mvrac1

A sintaxe deste comando : srvctl start nodeapps -n <NODENAME>.

Listener

Mesmo o Listener fazendo parte dos nodeapps, tambm possvel par-lo individualmente com o srvctl. Para interromper o Listener:
1 [oracle@mvrac1 ~]$ srvctl stop listener -n mvrac1

A sintaxe deste comando : srvctl stop listener -n <NODENAME>. Para inicializar o Listener:
1 [oracle@mvrac1 ~]$ srvctl start listener -n mvrac1

A sintaxe deste comando : srvctl start listener -n <NODENAME>. Bom, por hoje s. No prximo artigo discutiremos com mais detalhes a utilizao do crsctl (pois este no serve somente para interromper e inicializar os recursos do cluster).

Oracle Clusterware Rotinas Administrativas Parte 2 crsctl


O crsctl, tambm conhecido como cluster control. Algumas caractersticas do crsctl:

Pode ser executado a partir de qualquer n; Deve sempre ser executado com o usurio root; Controla todos os ns (exceto o start/stop); a principal ferramenta de administrao do Clusterware; Utilizado para verificao e alterao de parmetros (indicado somente sob a solicitao do Suporte Oracle); Utilizado para debug do Clusterware; Rotinas administrativas do Clusterware.

Alguns exemplos de uso: Para verificar o status de TODOS os daemons do Clusterware:


1 /u01/app/oracle/product/10.2.0/crs/bin/crsctl check crs

Para verificar o status do CRSD:


1 /u01/app/oracle/product/10.2.0/crs/bin/crsctl check crsd

Para verificar o status do EVMD:


1 /u01/app/oracle/product/10.2.0/crs/bin/crsctl check evmd

Para verificar o status do CSSD:


1 /u01/app/oracle/product/10.2.0/crs/bin/crsctl check cssd

Para verificar as verses do Clusterware:


1 /u01/app/oracle/product/10.2.0/crs/bin/crsctl query crs activeversion 2 /u01/app/oracle/product/10.2.0/crs/bin/crsctl query crs softwareversion

Para verificar (e alterar) parmetros:


1 /u01/app/oracle/product/10.2.0/crs/bin/crsctl get css misscount 2 /u01/app/oracle/product/10.2.0/crs/bin/crsctl get css disktimeout 3 /u01/app/oracle/product/10.2.0/crs/bin/crsctl set css misscount 3600 4 /u01/app/oracle/product/10.2.0/crs/bin/crsctl set css disktimeout 3600

Para Listar mdulos do cluster


1 /u01/app/oracle/product/10.2.0/crs/bin/crsctl lsmodules crs 2 /u01/app/oracle/product/10.2.0/crs/bin/crsctl lsmodules css 3 /u01/app/oracle/product/10.2.0/crs/bin/crsctl lsmodules evm

Para habilitar o debug de um mdulo e um recurso:


1 /u01/app/oracle/product/10.2.0/crs/bin/crsctl debug log crs CRSCOMM:3 0 a 5 # Vai de

2 /u01/app/oracle/product/10.2.0/crs/bin/crsctl debug log res ora.rac1.vip:5

Para debugar todos os recursos: Editar o script $ORA_CRS_HOME/bin/racgwrap e definir a varivel _USR_ORA_DEBUG como 1 Para exibir os Voting Disks:
1 /u01/app/oracle/product/10.2.0/crs/bin/crsctl query css votedisk

Para migrar os Voting Disks de raw devices para block devices (essa atividade foi feita tambm em outro post) relembre aqui: Como root, nos ns rac1 e rac2:
1 /u01/app/oracle/product/10.2.0/crs/bin/crsctl stop crs

Como root, apenas em um n. Como exemplo, no n 1:


1 /u01/app/oracle/product/10.2.0/crs/bin/crsctl add css votedisk /dev/voting1 -force 2 /u01/app/oracle/product/10.2.0/crs/bin/crsctl add css votedisk /dev/voting2 -force 3 /u01/app/oracle/product/10.2.0/crs/bin/crsctl add css votedisk /dev/voting3 -force 4 /u01/app/oracle/product/10.2.0/crs/bin/crsctl query css votedisk 5 /u01/app/oracle/product/10.2.0/crs/bin/crsctl delete css votedisk /dev/raw/raw1 force /u01/app/oracle/product/10.2.0/crs/bin/crsctl delete css votedisk /dev/raw/raw3 force /u01/app/oracle/product/10.2.0/crs/bin/crsctl delete css votedisk /dev/ra w/raw5 force

8 /u01/app/oracle/product/10.2.0/crs/bin/crsctl query css votedisk

Como root nos ns rac1 e rac2:


1 /u01/app/oracle/product/10.2.0/crs/bin/crsctl start crs

Como puderam ver, o crsctl utilizado em muitos casos. Geralmente habilitamos o debug ou alteramos parmetros sob solicitao do Suporte Oracle mediante algum problema no ambiente. O objetivo deste post, assim como todos os outros que eu coloco neste blog, no preparar voc para uma prova de certificao, mas, sim para prepar-lo para trabalhar no mundo real.

Oracle Clusterware Rotinas Administrativas Parte 3 srvctl


O srvctl, tambm conhecido como service control. Algumas caractersticas do srvctl:

Pode ser executado a partir de qualquer n; Deve ser executado com o usurio oracle; Controla todos os ns; Comando preferencial para interromper e iniciar recursos do cluster; Administra nodeapps, listeners, ASM, instncias, bancos de dados e servios de banco de dados.

Alguns exemplos de uso: Interromper o servio producao do banco de dados mvdb:


1 srvctl stop service -d mvdb -s producao

Interromper a instncia MVDB1 do banco de dados mvdb:


1 srvctl stop instance -d mvdb -i mvdb1

Interromper o ASM do n mvrac1:


1 srvctl stop asm -n mvrac1

Interromper o listener do n mvrac1:


1 srvctl stop listener -n mvrac1

Interromper os nodeapps do n mvrac1:


1 srvctl stop nodeapps -n mvrac1

Interromper a instncia mvdb1 do banco de dados mvdb com shutdown abort:


1 srvctl stop instance -d mvdb -i mvdb1 -o abort

Iniciar os nodeapps do n mvdb1:


1 srvctl start nodeapps -n mvrac1

O Listener iniciado/interrompido junto com os nodeapps.

Iniciar o listener:
1 srvctl start listener -n mvrac1

Iniciar o ASM do n mvrac1:


1 srvctl start asm -n mvrac1

Iniciar a instncia mvdb1 do banco de dados mvdb:


1 srvctl start instance -d mvdb -i mvdb1

Iniciar o servio producao do banco de dados mvdb:


1 srvctl start service -d mvdb -s producao

Interromper o banco de dados mvdb:


1 srvctl stop database -d mvdb

Iniciar o banco de dados mvdb:


1 srvctl start database -d mvdb

Observem que muito prtico interromper o banco de dados mvdb a partir de um nico comando. Se o DBA quiser interromper o banco de dados atravs do SQL*Plus, o comando shutdown immediate ser realizado somente na instncia em que estiver conectado, ou seja, o banco de dados continuar em execuo nas outras instncias. Se o BD estivesse em execuo em 6 instncias/ns, e o DBA quisesse baixar o BD atravs do SQL*Plus, ele teria que emitir o comando shutdown immediate seis vezes. J com o srvctl, apenas um comando necessrio. Se o recurso a ser baixado uma instncia, o banco de dados tambm dever ser especificado. Se o recurso a ser baixado for listener/nodeapps/ASM, basta especificar o n onde a ao deve ser realizada. Vamos supor a seguinte situao: J temos nosso ambiente em Oracle RAC Standard Edition (mximo de 4 sockets de CPU por cluster), com 2 ns, na empresa onde trabalhamos. Este ambiente bem parecido com o ambiente que temos aqui no blog:

2 ns; 1 banco de dados; o 2 instncias de BD.

Este ambiente j existe h 5 anos. E, por conta disso, a empresa decide comprar servidores novos, para obter ganho de processamento e, alm disso, ter hardware novo nunca ruim, no mesmo? Como sero adquiridos servidores novos, desejamos realizar instalaes novas do Clusterware e Patchset, e trazer o banco de dados que roda nos servidores antigos para estes novos servidores.

Portanto, o primeiro passo instalar o Clusterware nos novos servidores, com IPs pblicos e VIPs diferentes do cluster atual, para no haver impacto para os usurios. Com o Clusterware instalado nos novos servidores, faremos a instalao do ASM e criao dos respectivos DGs (respeitando inclusive os nomes, de preferncia). O prximo passo migrar o banco de dados para o novo cluster. Desde que os IPs pblicos e VIPs do novo cluster no estejam registrados no OCR, podemos deixar os servidores com os mesmos hostnames do cluster antigo (mvrac1 e mvrac2, mvrac1 -vip, mvrac2-vip, e assim por diante). Podemos realizar estas tarefas com o ambiente antigo/atual de cluster em operao. Quando levarmos o backup do BD para o novo cluster, podemos deixar este BD montado e aplicando os archivelogs gerados no cluster antigo/atual, como se fosse um standby. No entanto, esse banco de dados no novo cluster ainda no est registrado no OCR. Com isso, no possvel realizar as operaes de load balance e failover. Alm disso, os IPs VIP que ainda rodam no cluster antigo, devem ir para o novo cluster. Neste momento, devemos baixar BD e ASM do cluster antigo, alm dos nodeapps. Em seguida, faremos o OPEN do banco de dados no cluster novo. Portanto, aps subir o banco de dados Oracle RAC nos servidores novos, o seguinte passo deve ser feito: Registrar o banco de dados no OCR:
1 srvctl add database -d mvdb -o /u01/app/oracle/product/10.2.0/db_1 -p +DG_DADOS/spfilemvdb.ora -s open -y automatic

Registrar as instncias mvdb1 e mvdb2 no OCR:


1 srvtl add instance -d mvdb -i mvdb1 -n mvrac1 2 srvtl add instance -d mvdb -i mvdb2 -n mvrac2

Se o registro foi feito incorretamente, basta excluir e refazer. Para remover o BD do OCR:
1 srvctl remove database -d mvdb

Para remover as instncias do OCR:


1 srvctl remove instance -d mvdb -i mvdb1 -n mvrac1 2 srvctl remove instance -d mvdb -i mvdb2 -n mvrac2

Para deixar o recurso de startup automtico do banco desabilitado:


1 srvctl modify database -d mvdb -y manual

Alterar os VIPs dos 2 ns no cluster novo:

1 srvctl modify nodeapps -n mvrac1 -A 172.23.10.21/255.255.255.0/eth0 2 srvctl modify nodeapps -n mvrac2 -A 172.23.10.22/255.255.255.0/eth0

Alterar o arquivo /etc/hosts dos servidores do cluster novo para refletir a mudana do VIP realizada acima. Subir os nodeapps no cluster novo. Pronto! Neste momento o cluster novo j responde pelos mesmos nomes e IPs do cluster antigo. Caso queira deixar o ambiente de cluster do cluster antigo operacional, basta alterar os VIPs atravs do srvctl, como realizado acima, s no esquea de alterar o arquivo /etc/hosts aps a mudana. Neste artigo vimos como iniciar e interromper recursos no cluster. Alm disso, vimos tambm como registrar, remover e modificar recursos no OCR.

Oracle Clusterware Rotinas Administrativas Parte 4 crs_stat


Hoje veremos mais detalhes a respeito do crs_stat. Essa ferramenta utilizada para visualizar o status dos componentes registrados no Clusterware. Caractersticas do crs_stat:

Pode ser executado a partir de qualquer n; Deve ser executado com o usurio oracle; Controla todos os ns; Visualiza o status dos componentes registrados no Clusterware.

Alguns exemplos de uso: Sintaxe mais utilizada:


1 [oracle@mvrac1 ~]$ crs_stat -t

A sada do comando ser:


01 Name Type Target State Host

02 -----------------------------------------------------------03 ora.mvdb.db application ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE mvrac1 mvrac1 mvrac2 mvrac1 mvrac1

04 ora....b1.inst application 05 ora....b2.inst application 06 ora....ucao.cs application 07 ora....db1.srv application

08 ora....db2.srv application 09 ora....SM1.asm application 10 ora....C1.lsnr application 11 ora.mvrac1.gsd application 12 ora.mvrac1.ons application 13 ora.mvrac1.vip application 14 ora....SM2.asm application 15 ora....C2.lsnr application 16 ora.mvrac2.gsd application 17 ora.mvrac2.ons application 18 ora.mvrac2.vip application

ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE

ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE

mvrac2 mvrac1 mvrac1 mvrac1 mvrac1 mvrac1 mvrac2 mvrac2 mvrac2 mvrac2 mvrac2

Observem que para alguns dos recursos registrados no Clusterware, o nome quebrado para facilitar a visualizao. No entanto, isso no facilita o gerenciamento dos recursos, j que fica mais complicado identificar os recursos. Para entender a sada do comando: A primeira coluna exibe o nome do recurso. A segunda coluna exibe o tipo de recurso no Clusterware. Todos os recursos exibidos so do tipo application. A coluna TARGET indica qual o status esperado do recurso. A coluna STATE indica o status atual do recurso. A coluna HOST indica em qual host o recurso est em execuo. Outra forma de utilizar o crs_stat da seguinte forma:
1 [oracle@mvrac1 ~]$ crs_stat

A sada do comando ser:


01 NAME=ora.mvdb.db 02 TYPE=application 03 TARGET=ONLINE 04 STATE=ONLINE on mvrac1 05 06 NAME=ora.mvdb.mvdb1.inst

07 TYPE=application 08 TARGET=ONLINE 09 STATE=ONLINE on mvrac1 10 11 NAME=ora.mvdb.mvdb2.inst 12 TYPE=application 13 TARGET=ONLINE 14 STATE=ONLINE on mvrac2 15 16 NAME=ora.mvdb.producao.cs 17 TYPE=application 18 TARGET=ONLINE 19 STATE=ONLINE on mvrac1 20 21 NAME=ora.mvdb.producao.mvdb1.srv 22 TYPE=application 23 TARGET=ONLINE 24 STATE=ONLINE on mvrac1 25 26 NAME=ora.mvdb.producao.mvdb2.srv 27 TYPE=application 28 TARGET=ONLINE 29 STATE=ONLINE on mvrac2 30 31 NAME=ora.mvrac1.ASM1.asm 32 TYPE=application 33 TARGET=ONLINE 34 STATE=ONLINE on mvrac1 35 36 NAME=ora.mvrac1.LISTENER_MVRAC1.lsnr

37 TYPE=application 38 TARGET=ONLINE 39 STATE=ONLINE on mvrac1 40 41 NAME=ora.mvrac1.gsd 42 TYPE=application 43 TARGET=ONLINE 44 STATE=ONLINE on mvrac1 45 46 NAME=ora.mvrac1.ons 47 TYPE=application 48 TARGET=ONLINE 49 STATE=ONLINE on mvrac1 50 51 NAME=ora.mvrac1.vip 52 TYPE=application 53 TARGET=ONLINE 54 STATE=ONLINE on mvrac1 55 56 NAME=ora.mvrac2.ASM2.asm 57 TYPE=application 58 TARGET=ONLINE 59 STATE=ONLINE on mvrac2 60 61 NAME=ora.mvrac2.LISTENER_MVRAC2.lsnr 62 TYPE=application 63 TARGET=ONLINE 64 STATE=ONLINE on mvrac2 65 66 NAME=ora.mvrac2.gsd

67 TYPE=application 68 TARGET=ONLINE 69 STATE=ONLINE on mvrac2 70 71 NAME=ora.mvrac2.ons 72 TYPE=application 73 TARGET=ONLINE 74 STATE=ONLINE on mvrac2 75 76 NAME=ora.mvrac2.vip 77 TYPE=application 78 TARGET=ONLINE 79 STATE=ONLINE on mvrac2

Observem que mesmo exibindo o status de todos os componentes sem quebras de texto, para um cluster com muitos recursos registrados se torna invivel utilizar o comando desta forma, pois tambm no fica fcil gerenciar os componentes desta forma. Para solucionar isso, um bom conhecimento em shell scripting resolve. Ou ento, podemos utilizar alguma soluo j criada por algum. Este o caso! Existe um guru em Oracle RAC chamado Jeffrey Hunter. Ele desenvolveu um script que facilita a leitura do status dos componentes do clusterware. O script pode ser baixado diretamente do site dele: http://www.idevelopment.info/data/Oracle/DBA_scripts/UNIX_Shell_Scripts/rac_crs_stat O script est reproduzido abaixo:
01 #!/bin/ksh 02 03 # +---------------------------------------------------------------------------- + 04 # | 05 # | 06 # | Jeffrey M. Hunter jhunter@idevelopment.info www.idevelopment.info | | |

07 # |---------------------------------------------------------------------------- | 08 # | Copyright (c) 1998-2009 Jeffrey M. Hunter. All rights reserved. |

09 # |---------------------------------------------------------------------------- | 10 # | DATABASE : Oracle 11 # | FILE 12 # | CLASS 13 # | PURPOSE 14 # | 15 # | 16 # | 17 # | 18 # | 19 # | 20 # | USAGE 21 # | NOTE 22 # | 23 # | NOTE 24 # | : rac_crs_stat : UNIX Shell Scripts | | |

: This KSH script will query all CRS resources using the crs_stat | script. The report will be a formatted version of the crs_stat -t command, but in tabular form with resource name and status. Filtering options are available by passing in a single string parameter to this script. This argument will be used to limit the output to HA resources whose names match that string. : rac_crs_stat.ksh [RESOURCE_KEY] | | | | | | |

: This script requires the environment $ORA_CRS_HOME to be set to | your CRS installation. : As with any code, ensure to test this script in a development environment before attempting to run it in production. | | |

25 # +---------------------------------------------------------------------------- + 26 27 # +---------------------------------------------------------------------------- + 28 # | GLOBAL VARIABLES |

29 # +---------------------------------------------------------------------------- + 30 31 RSC_KEY=$1 32 QSTAT=-u 33 AWK=/usr/bin/awk 34 35 # +---------------------------------------------------------------------------- + 36 # | TABLE HEADER |

37 # +---------------------------------------------------------------------------- + 38

39 $AWK \ 40 41 42 43 # +---------------------------------------------------------------------------- + 44 # | TABLE BODY | 'BEGIN {printf "%-50s %-10s %-18s\n", "HA Resource", "Target", "State"; printf "%-50s %-10s %-18s\n", "-----------", "------", "-----";}'

45 # +---------------------------------------------------------------------------- + 46 47 $ORA_CRS_HOME/bin/crs_stat $QSTAT | $AWK \ 48 'BEGIN { FS="="; state = 0; } 49 50 51 52 53 $1~/NAME/ && $2~/'$RSC_KEY'/ {appname = $2; state=1}; state == 0 {next;} $1~/TARGET/ && state == 1 {apptarget = $2; state=2;} $1~/STATE/ && state == 2 {appstate = $2; state=3;} state == 3 {printf "%-50s %-10s %-18s\n", appname, apptarget, appstate; state=0;}'

Eu gosto de alterar o script incluindo uma varivel de ambiente, que para o script, j deveria estar definida no sistema operacional. Alterar da seguinte forma: De:
1 # +---------------------------------------------------------------------------- + 2 # | TABLE BODY |

3 # +---------------------------------------------------------------------------- + 4 5 $ORA_CRS_HOME/bin/crs_stat $QSTAT | $AWK \

Para:
1 # +---------------------------------------------------------------------------- + 2 # | TABLE BODY |

3 # +---------------------------------------------------------------------------- + 4 5 ORA_CRS_HOME=/u01/app/oracle/product/10.2.0/crs

6 $ORA_CRS_HOME/bin/crs_stat $QSTAT | $AWK \

Observem que inclu a linha onde defino a localizao de ORA_CRS_HOME. Eu costumo colocar esse script, com permisso de escrita (chmod +x) em /usr/local/bin, pois assim qualquer usurio do sistema operacional conseguir visualizar o status dos componentes do clusterware.
01 HA Resource 02 ----------03 ora.mvdb.db 04 ora.mvdb.mvdb1.inst 05 ora.mvdb.mvdb2.inst 06 ora.mvdb.producao.cs 07 ora.mvdb.producao.mvdb1.srv 08 ora.mvdb.producao.mvdb2.srv 09 ora.mvrac1.ASM1.asm 10 ora.mvrac1.LISTENER_MVRAC1.lsnr 11 ora.mvrac1.gsd 12 ora.mvrac1.ons 13 ora.mvrac1.vip 14 ora.mvrac2.ASM2.asm 15 ora.mvrac2.LISTENER_MVRAC2.lsnr 16 ora.mvrac2.gsd 17 ora.mvrac2.ons 18 ora.mvrac2.vip Target -----ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE State ----ONLINE on mvrac1 ONLINE on mvrac1 ONLINE on mvrac2 ONLINE on mvrac1 ONLINE on mvrac1 ONLINE on mvrac2 ONLINE on mvrac1 ONLINE on mvrac1 ONLINE on mvrac1 ONLINE on mvrac1 ONLINE on mvrac1 ONLINE on mvrac2 ONLINE on mvrac2 ONLINE on mvrac2 ONLINE on mvrac2 ONLINE on mvrac2

Agora sim a sada est fcil de ser visualizada. Uma outra forma de utilizar o crs_stat da seguinte forma: Visualizando o perfil (profile) do Listener do n MVRAC1:
1 crs_stat -p

A sada do comando ser:


01 NAME=ora.mvrac1.LISTENER_MVRAC1.lsnr 02 TYPE=application

03 ACTION_SCRIPT=/u01/app/oracle/product/10.2.0/db_1/bin/racgwrap 04 ACTIVE_PLACEMENT=0 05 AUTO_START=1 06 CHECK_INTERVAL=600 07 DESCRIPTION=CRS application for listener on node 08 FAILOVER_DELAY=0 09 FAILURE_INTERVAL=0 10 FAILURE_THRESHOLD=0 11 HOSTING_MEMBERS=mvrac1 12 OPTIONAL_RESOURCES= 13 PLACEMENT=restricted 14 REQUIRED_RESOURCES=ora.mvrac1.vip 15 RESTART_ATTEMPTS=5 16 SCRIPT_TIMEOUT=600 17 START_TIMEOUT=0 18 STOP_TIMEOUT=0 19 UPTIME_THRESHOLD=7d 20 USR_ORA_ALERT_NAME= 21 USR_ORA_CHECK_TIMEOUT=0 22 USR_ORA_CONNECT_STR=/ as sysdba 23 USR_ORA_DEBUG=0 24 USR_ORA_DISCONNECT=false 25 USR_ORA_FLAGS= 26 USR_ORA_IF= 27 USR_ORA_INST_NOT_SHUTDOWN= 28 USR_ORA_LANG= 29 USR_ORA_NETMASK= 30 USR_ORA_OPEN_MODE= 31 USR_ORA_OPI=false 32 USR_ORA_PFILE=

33 USR_ORA_PRECONNECT=none 34 USR_ORA_SRV= 35 USR_ORA_START_TIMEOUT=0 36 USR_ORA_STOP_MODE=immediate 37 USR_ORA_STOP_TIMEOUT=0 38 USR_ORA_VIP=

Alguns campos importantes:


1 ACTION_SCRIPT=/u01/app/oracle/product/10.2.0/db_1/bin/racgwrap

Todo recurso do clusterware tem um action script. O action script o script que monitora o status e dispara o start/stop dos componentes do clusterware.
1 AUTO_START=1

AUTO_START indica se o recurso deve ser iniciado automaticamente pelo Clusterware. Valores de referncia:

AUTO_START=0: Se o recurso estava em execuo antes do stop do Clusterware, ele ser iniciado automaticamente. Se o recurso estava OFFLINE antes do stop do Clusterware, ele no ser iniciado automaticamente. Resumindo, ele conserva o status do componentes antes do Stop do Clusterware; AUTO_START=1: O Clusterware SEMPRE iniciar o recurso automaticamente; AUTO_START=2: O Clusterware NUNCA iniciar o recurso automaticamente;

1 PLACEMENT=restricted

PLACEMENT significa que esse recurso s pode ser executado no n mvrac1. Este recurso nunca poder ser executado em outro n. Apenas como exemplo, esse campo para um recurso VIP ser exibido da seguinte forma:
1 PLACEMENT=favored

Isso indica que o recurso preferencialmente ser executado no n especfico, mas que ele pode ser levado para outro n quando o n principal deste recurso estiver indisponvel.
1 REQUIRED_RESOURCES=ora.mvrac1.vip

REQUIRED_RESOURCE indica quais so os recursos exigidos/necessrios para que o recurso em questo possa ser executado. No caso do Listener num ambiente RAC, o VIP precisa estar online para que ele possa ser iniciado. Se o VIP estiver offline, o clusterware tentar inicializar o VIP antes do Listener.
1 RESTART_ATTEMPTS=5

Por default, quando um recurso estiver offline, o Clusterware tentar inicializar este recurso 5 vezes. Se as 5 tentativas falharem, o componente ficar no status OFFLINE e com a coluna TARGET em ONLINE.

Oracle Clusterware Rotinas Administrativas Parte 6 ocrcheck, ocrdump e ocrconfig


Hoje veremos sobre as ferramentas de gerenciamento do OCR. Caractersticas do ocrcheck:

Pode ser executado com o usurio root ou oracle; Exibe informaes a respeito do OCR (tamanho, verso, status, localizao; Um log gerado em $ORA_CRS_HOME/log/<hostname>/client/ocrcheck_<pid>.log

Exemplo de uso, ocrcheck:


01 [root@mvrac1 oracle]# ocrcheck 02 Status of Oracle Cluster Registry is as follows : 03 04 05 06 07 08 09 10 11 12 13 Cluster registry integrity check succeeded Device/File Name : Version Total space (kbytes) Used space (kbytes) : : : 2 256788 4624 252164 382969207 /dev/ocr1 Device/File integrity check succeeded /dev/ocr2 Device/File integrity check succeeded

Available space (kbytes) : ID Device/File Name : :

Como podem observar, o ocrcheck utilizado para verificar a integridade do OCR. Contedo do log gerado:
1 Oracle Database 10g CRS Release 10.2.0.4.0 Production Copyright 1996, 2008 Oracle. All rights reserved.

2 2010-08-16 10:36:03.160: [OCRCHECK][6617296]ocrcheck starts... 3 2010-08-16 10:36:21.884: [OCRCHECK][6617296]protchcheck: OCR status : total = [256788], used = [4624], avail = [252164]

O ocrcheck pode ser utilizado caso haja algum problema no Clusterware para verificar a integridade do OCR.

Caractersticas do ocrdump:

Faz o dump do OCR; Deve ser utilizado com o usurio root; Usado para consultar sobre os registros do OCR em caso de perda e necessidade de novo registro (este, manual); Suporte Oracle pode solicitar para tratar algum problema do Clusterware.

Exemplo de uso, ocrdump:


1 [root@mvrac1 oracle]# ocrdump /root/ocrdump.txt

Incio do arquivo texto gerado:


01 08/17/2010 20:40:15 02 /u01/app/oracle/product/10.2.0/crs/bin/ocrdump.bin /root/ocrdump.txt 03 04 [SYSTEM] 05 UNDEF : 06 SECURITY : {USER_PERMISSION : PROCR_ALL_ACCESS, GROUP_PERMISSION : PROCR_READ, OTHER_PERMISSION : PROCR_READ, USER_NAME : roo

07 t, GROUP_NAME : root} 08 09 [SYSTEM.css] 10 UNDEF : 11 SECURITY : {USER_PERMISSION : PROCR_ALL_ACCESS, GROUP_PERMISSION : PROCR_READ, OTHER_PERMISSION : PROCR_READ, USER_NAME : roo

12 t, GROUP_NAME : root} 13 14 [SYSTEM.css.interfaces] 15 UNDEF : 16 SECURITY : {USER_PERMISSION : PROCR_ALL_ACCESS, GROUP_PERMISSION : PROCR_CREATE_SUB_KEY, OTHER_PERMISSION : PROCR_READ, USER_

17 NAME : oracle, GROUP_NAME : oinstall} 18 19 [SYSTEM.css.interfaces.global] 20 UNDEF : 21 SECURITY : {USER_PERMISSION : PROCR_ALL_ACCESS, GROUP_PERMISSION :

PROCR_ALL_ACCESS, OTHER_PERMISSION : PROCR_READ, USER_NAME 22 : oracle, GROUP_NAME : oinstall}

Mais um trecho do arquivo gerado:


1 [DATABASE.DATABASES.mvdb.SPFILE] 2 ORATEXT : +DG_DADOS/mvdb/spfilemvdb.ora 3 SECURITY : {USER_PERMISSION : PROCR_ALL_ACCESS, GROUP_PERMISSION : PROCR_WRITE, OTHER_PERMISSION : PROCR_READ, USER_NAME : oracle, GROUP_NAME : dba}

Caractersticas do ocrconfig:

Ferramenta de configurao do OCR; Deve ser utilizado com o usurio root; Permite realizar backup lgico do OCR (-export -s online); Permite importar o backup lgico; Permite fazer upgrade/downgrade do OCR; Exibe qual o diretrio de backup automtico do OCR e os ltimos backups automticos (-showbackup); Altera o local de backup automtico (-backuploc ); Substitui o local do OCR (-replace ocr | ocrmirror ); Sobrescreve a configurao do OCR (-overwrite); Repara o OCR (-repair ocr | ocrmirror ); Um log gerado em $ORA_CRS_HOME/log/<hostname>/client/ocrconfig_<pid>.log

O Clusterware gera um backup automtico do OCR a cada 4 horas, conforme citado no post Oracle Clusterware Arquitetura Parte 2 Principais Arquivos: Voting Disk e OCR. Vamos exibir os backups automticos:
01 [root@mvrac1 ~]# ocrconfig -showbackup 02 03 04 05 06 07 08 09 10 mvrac2 2010/08/16 02:53:24 /u01/app/oracle/product/10.2.0/crs/cdata/crs_mv mvrac1 2010/08/11 23:11:57 /u01/app/oracle/product/10.2.0/crs/cdata/crs_mv mvrac2 2010/08/16 02:53:24 /u01/app/oracle/product/10.2.0/crs/cdata/crs_mv mvrac2 2010/08/16 08:16:47 /u01/app/oracle/product/10.2.0/crs/cdata/crs_mv

11

mvrac1 2010/08/08 02:24:35 /u01/app/oracle/product/10.2.0/crs/cdata/crs_mv

Como pudemos observar, os ltimos backups esto no n MVRAC2. Verificando os arquivos de backup existentes no diretrio:
1 [root@mvrac2 ~]# ls -ltr /u01/app/oracle/product/10.2.0/crs/cdata/crs_mv 2 total 28536 3 -rw-r--r-- 1 root root 4837376 Apr 26 00:19 week.ocr 4 -rw-r--r-- 1 root root 4861952 Jul 15 03:53 backup02.ocr 5 -rw-r--r-- 1 root root 4861952 Aug 16 02:53 backup01.ocr 6 -rw-r--r-- 1 root root 4861952 Aug 16 02:53 day.ocr 7 -rw-r--r-- 1 root root 4861952 Aug 16 08:16 week_.ocr 8 -rw-r--r-- 1 root root 4861952 Aug 16 08:16 backup00.ocr

Os backups esto ali. Vamos fazer uma brincadeira? Vamos corromper 1 OCR (como root):
1 [root@mvrac1 ~]# dd if=/dev/zero of=/dev/ocr1 2 dd: writing to `/dev/ocr1': No space left on device 3 514018+0 records in 4 514017+0 records out 5 263176704 bytes (263 MB) copied, 8.42927 seconds, 31.2 MB/s

Vamos agora verificar a integridade do OCR com o ocrcheck:


01 [root@mvrac1 ~]# ocrcheck 02 Status of Oracle Cluster Registry is as follows : 03 04 05 06 07 08 Version Total space (kbytes) Used space (kbytes) : : : 2 256788 4624 252164 382969207 /dev/ocr1

Available space (kbytes) : ID Device/File Name : :

09 10 11 12 13

Device/File needs to be synchronized with the other device Device/File Name : /dev/ocr2 Device/File integrity check succeeded

Cluster registry integrity check succeeded

O device /dev/ocr1 no est mais ntegro. Bom, vamos agora corromper o outro OCR:
1 [root@mvrac1 ~]# dd if=/dev/zero of=/dev/ocr2 2 dd: writing to `/dev/ocr1': No space left on device 3 514018+0 records in 4 514017+0 records out 5 263176704 bytes (263 MB) copied, 8.42927 seconds, 31.2 MB/s

Verificando novamente a integridade do OCR:


1 [root@mvrac1 ~]# ocrcheck 2 Segmentation fault

Verificando o status dos componentes do cluster:


1 [root@mvrac1 ~]# crsstat 2 HA Resource 3 ----------Target -----State -----

4 error connecting to CRSD at [(ADDRESS=(PROTOCOL=ipc)(KEY=ora_crsqs))] clsccon 184

Verificando o log $ORA_CRS_HOME/log/mvrac1/alertmvrac1.log:


1 2010-08-17 20:45:22.046 2 [client(9701)]CRS-1006:The OCR location /dev/ocr2 is inaccessible. Details in /u01/app/oracle/product/10.2.0/crs/log/mvrac1/client/ocrcheck_9701.log.

3 2010-08-17 20:45:22.037 4 [crsd(4403)]CRS-1006:The OCR location /dev/ocr2 is inaccessible. Details in /u01/app/oracle/product/10.2.0/crs/log/mvrac1/crsd/crsd.log.

Trecho do log $ORA_CRS_HOME/mvrac1/crsd/crsd.log:

2010-08-17 20:45:24.233: [ >metactx=[0x932bbc8] 2010-08-17 20:45:24.233: [ >prop_sctx=[0x9327600] 2010-08-17 20:45:24.233: [ >prop_sltsmx=[0x0] 2010-08-17 20:45:24.234: [ >prop_sclsctx=[0x9350004]

OCRRAW][3055160208]proprdc: backend_ctx-

OCRRAW][3055160208]proprdc: backend_ctx-

OCRRAW][3055160208]proprdc: backend_ctx-

OCRRAW][3055160208]proprdc: backend_ctx-

2010-08-17 20:45:24.234: [ OCRRAW][3055160208]proprdc: backend_ctx>prop_ctx_ocrctx=[0x9357f24] OCRAPI][3055160208]procr_ctx_set_invalid_no_abort: ctx set to invalid OCRAPI][3055160208]procr_ctx_set_invalid: aborting...

6[ 7[

Fazendo o restore do OCR:


1 [root@mvrac2 oracle]# ocrconfig -restore /u01/app/oracle/product/10.2.0/crs/cdata/crs_mv/backup00.ocr

Verificando a integridade do OCR:


01 [root@mvrac2 oracle]# ocrcheck 02 Status of Oracle Cluster Registry is as follows : 03 04 05 06 07 08 09 10 11 12 13 Cluster registry integrity check succeeded Device/File Name : Version Total space (kbytes) Used space (kbytes) : : : 2 256788 4624 252164 382969207 /dev/ocr1 Device/File integrity check succeeded /dev/ocr2 Device/File integrity check succeeded

Available space (kbytes) : ID Device/File Name : :

Verificando o status dos recursos do Clusterware:


01 [root@mvrac1 crsd]# crsstat

02 HA Resource 03 ----------04 ora.mvdb.db 05 ora.mvdb.mvdb1.inst 06 ora.mvdb.mvdb2.inst 07 ora.mvdb.producao.cs 08 ora.mvdb.producao.mvdb1.srv 09 ora.mvdb.producao.mvdb2.srv 10 ora.mvrac1.ASM1.asm 11 ora.mvrac1.LISTENER_MVRAC1.lsnr 12 ora.mvrac1.gsd 13 ora.mvrac1.ons 14 ora.mvrac1.vip 15 ora.mvrac2.ASM2.asm 16 ora.mvrac2.LISTENER_MVRAC2.lsnr 17 ora.mvrac2.gsd 18 ora.mvrac2.ons 19 ora.mvrac2.vip

Target -----ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE

State ----ONLINE on mvrac1 ONLINE on mvrac1 ONLINE on mvrac2 ONLINE on mvrac1 ONLINE on mvrac1 ONLINE on mvrac2 ONLINE on mvrac1 ONLINE on mvrac1 ONLINE on mvrac1 ONLINE on mvrac1 ONLINE on mvrac1 ONLINE on mvrac2 ONLINE on mvrac2 ONLINE on mvrac2 ONLINE on mvrac2 ONLINE on mvrac2

Como puderam ver, desde que tenhamos os arquivos de backup do OCR disponveis, fcil recuperar o ambiente de Clusterware aps um desastre.

Oracle Clusterware Rotinas Administrativas Parte 7 oifcfg


Hoje veremos mais detalhes sobre a ferramenta oifcfg. Ela utilizada para definir quais sero as interfaces de rede pblica e privada no Clusterware. Alm disso, ela utilizada quando necessrio alterar a faixa de endereo IP e subnet de uma rede especfica (necessrio quando h mudana na faixa de IPs utilizada pela corporao). Caractersticas do oifcfg:

Pode ser utilizado com o usurio oracle; A partir de qualquer n, controla todos; Ferramenta para administrao das interfaces de rede utilizadas no Clusterware: o Pblica (VIP); o Privada (InterConnect). Caso uma interface de rede queime, essa ferramenta ser utilizada para substituir a interface de rede no OCR; til para alterar a Subnet de uma interface de rede.

Como citado, as alteraes efetuadas atravs do oifcfg so armazenadas no OCR.

Para verificar quais so as interfaces de rede e seu devido uso no Clusterware:


1 [oracle@mvrac1 oracle]$ oifcfg getif 2 eth0 3 eth1 172.23.10.0 10.0.0.0 global public

global

cluster_interconnect

Para reconfigurar uma placa de rede para outra faixa de IP, primeiro, necessrio excluir as configuraes desta placa:
1 [oracle@mvrac1 oracle]$ oifcfg delif -global eth0

A opo -global significa que esta configurao dever ser vlida para todos os ns, ou seja, a placa eth0 dever ser excluda da configurao do Clusterware em todos os ns. Esta opo utilizada pois tambm pode ser feita a configurao de uma interface de rede em apenas um n, com a opo Vamos supor que ambas as interfaces sero excludas pois outras sero configuradas. Vamos agora excluir a configurao da placa eth1:
1 [oracle@mvrac1 oracle]$ oifcfg delif -global eth1

Agora devemos configurar as placas desejadas:


1 [oracle@mvrac1 oracle]$ oifcfg setif -global eth3/192.168.111.0:public 2 [oracle@mvrac1 oracle]$ oifcfg setif -global eth4/10.0.0.0:cluster_interconnect

Lembrando que para alterar o endereo de InterConnect tambm necessrio alterar a informao no arquivo /etc/hosts e no arquivo de configurao da placa de rede em /etc/sysconfig/network scripts/ifcfg-ethX. Para o VIP, alm disso, tambm necessrio alterar o endereo IP no OCR atravs do srvctl, conforme citado no post Oracle Clusterware Rotinas Administrativas Parte 3 srvctl.

Oracle Clusterware Rotinas Administrativas Parte 8 Anlise e Troubleshooting


Posted Sep.01, 2010 under Administrao, Clusterware

Hoje veremos como realizar corretamente a anlise para o troubleshooting do ambiente clusterizado. Na verdade, no passarei aqui como se fazer um troubleshooting, mas, sim, como conhecer a ordem de inicializao do Clusterware, e, com isso, identificar o lugar onde o problema ocorre. O Clusterware, iniciado no boot do sistema operacional, pois chamado atravs do /etc/inittab; Entradas no /etc/inittab referentes ao startup do Clusterware:
1 h1:35:respawn:/etc/init.d/init.evmd run >/dev/null 2>&1 </dev/null 2 h2:35:respawn:/etc/init.d/init.cssd fatal >/dev/null 2>&1 </dev/null

3 h3:35:respawn:/etc/init.d/init.crsd run >/dev/null 2>&1 </dev/null

Assim que o servidor iniciado, o primeiro processo que tentar ficar online o CSS, para isso, verificar se tem acesso de leitura/gravao nos Voting Disks; Para acompanhar a subida do CSS, verificar dois logs:

Arquivo: /var/log/messages

As mensagens esperadas so:


o o o

Cluster Ready Services completed waiting on dependencies; Running CRSD with TZ=; Oracle CSS Family monitor starting.

Arquivo: $ORA_CRS_HOME/log/<hostname>/alert.log

A mensagem esperada :
o

CSSD voting file is online: /dev/voting1

O arquivo /etc/oracle/ocr.loc define a localizao do OCR. Necessrio para que o processo CRSD seja iniciado. O CSS faz a leitura desse arquivo; O CSS solicita o incio do CRSD e EVMD ($ORA_CRS_HOME/log/hostname/alert.log. As mensagens esperadas para esta ao so:

The OCR service started on node mvrac1; EVMD started on node mvrac1; CRSD started on node mvrac1;

O CRSD inicializar os recursos do cluster ($ORA_CRS_HOME/log/<hostname>/crsd/crsd.log). As mensagens esperadas so:


Attempting to start ora.mvrac1.vip on member mvrac1; Start of ora.mvrac1.vip on member mvrac1 succeeded.

Diretrios onde so gerados os logs do Clusterware:

$ORA_CRS_HOME/log/<hostname>

Para o restante dos recursos, o caminho de log permanece o mesmo: Listener:

$ORACLE_HOME/network/log/listener.log

ASM:

Definido pelo parmetro BACKGROUND_DUMP_DEST da instncia ASM;

Banco de Dados:

Definido pelo parmetro BACKGROUND_DUMP_DEST da instncia de banco de dados.

Conhecendo todo o ciclo de inicializao do Clusterware, e onde procurar erros, fica fcil encontrar o problema, ou, ao menos, direcionar o problema para o Suporte Oracle. Finalizamos hoje a srie de artigos das rotinas administrativas do Clusterware. O prximo artigo iniciar a srie que tratar sobre a converso de um banco de dados single instance para RAC.