Parte 1 - Introdução
Parte 2 - Criação e configuração da VM
Parte 3 - Criação do Oracle Linux
Parte 4 - Configuração do Oracle Linux I
Parte 5 - Configuração do Oracle Linux II
Parte 6 - Clonagem da VM e criação dos disk image
Parte 7 - Configuração dos discos ASM e OCFS2
Parte 8 - Instalação do Oracle Clusterware
Parte 9 - Aplicação do Patch 10.2.0.5 no Oracle Clusterware
Parte 10 - Instalação Oracle Database 10g
Parte 11 - Aplicação do Patch 10.2.0.5 no Oracle Database
Parte 12 - Criação do Listener e ASM em modo cluster
Parte 13 - Criação do banco de dados
…
Enfim a última parte da nossa serie de instalações do Oracle RAC 10g. Nesse último post estaremos vendo a criação do banco de dados dbtst em modo cluster.
Conectado na máquina rac1 do cluster, execute o comando dbca.
[oracle@rac2 ~]$ dbca
Irá abrir o Database Configuration Assistant (DBCA), veja que ele automaticamente identifica um cluster instalado na máquina e nos fornece a opção de criar um banco de dados em modo cluster. Como nosso objeto aqui é criar o banco de dados em modo cluster, estaremos selecionando a primeira opção. Veja abaixo:
Selecione Create a Database para iniciarmos a criação de um novo banco de dados.
Além de identificar que existe uma instalação em modo cluster, o DBCA ainda identifica as instâncias relacionadas a ela e nos pergunta qual das delas vamos estar criando o nosso banco de dados. Selecione as duas instâncias (rac1 e rac2).
Aqui é o momento de fornecer o nome do novo banco de dados que no nosso será o dbtst. Fique a vontade a questão da escolha de qualquer outro nome.
Por hora, não estaremos instalando com o Enterprise Manager.
Defina uma senha para o banco de dados, aqui defini a senha oracle.
É nos dado a opção de armazenamento do nosso banco de dados em que é possível utilizar até três tipos. O Cluster File System geralmente ocfs2 ou qualquer outro cluster file system vendor suportador pela Oracle, o ASM (nosso caso) e com a opção de Raw Devices.
Como no artigo anterior fizemos toda a instalação do ASM e temos nosso ambiente pronto para a instalação em ASM, estaremos utilizando essa opção. Após clique em Next e o DBUA pedi para informarmos a senha do usuário sys do ASM, que no nosso caso é oracle.
Veja abaixo os Diskgroups ORADATA1 e ORADATA2 criados no artigo anterior. Vamos estar utilizando os dois DG, por isso selecione os dois.
Aqui, selecione o DG +ORADATA1 para o OMF.
Agora é a hora da configuração da Flash Recovery Area e do Archived Log Mode. Siga os passos abaixos:
Clique em Browser
Selecione o DG ORADATA2.
Deverá ficar assim:
Habilite agora o Archived.
No final a sua tela do DBCA deverá estar como abaixo:
Aqui é fornecido a opção de criação de Services. Nesse momento não vamos estar criando nenhum serviço, apenas clique em Next.
Reveja os dados do banco de dados e caso tudo esteja correto clique em Next.
Após finalizada a instalação, execute o comando crs_stat -t e veja que agora o banco de dados dbtst aparece no cluster. Veja que as instâncias do dbtst estão em execução na máquina rac1 e rac2.
[oracle@rac1 ~]$ crs_stat -t Name Type Target State Host ------------------------------------------------------------ ora.dbtst.db application ONLINE ONLINE rac1 ora....t1.inst application ONLINE ONLINE rac1 ora....t2.inst application ONLINE ONLINE rac2 ora....SM1.asm application ONLINE ONLINE rac1 ora....C1.lsnr application ONLINE ONLINE rac1 ora.rac1.gsd application ONLINE ONLINE rac1 ora.rac1.ons application ONLINE ONLINE rac1 ora.rac1.vip application ONLINE ONLINE rac1 ora....SM2.asm application ONLINE ONLINE rac2 ora....C2.lsnr application ONLINE ONLINE rac2 ora.rac2.gsd application ONLINE ONLINE rac2 ora.rac2.ons application ONLINE ONLINE rac2 ora.rac2.vip application ONLINE ONLINE rac2
Veja abaixo as instâncias ASM1 e dbtst1 sendo executadas na máquina rac1.
[oracle@rac1 ~]$ ps -ef | grep pmon | grep -v grep | awk -F"_" '{print$3}'
+ASM1
dbtst1
Abaixo mostra que o banco dbtst está funcionando normalmente. Conecte na instâncias dbtst1:
[oracle@rac1 ~]$ echo $ORACLE_SID
dbtst1
[oracle@rac1 ~]$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.5.0 - Production on Wed Oct 12 17:31:49 2011
Copyright (c) 1982, 2010, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options
SQL> select count(*) from dba_tables;
COUNT(*)
----------
1523
Esse é o fim da nossa série, estarei preparando a mesma série só que agora em 11g R2.
Qualquer dúvida, sugestão que queira apresentar será muito bem vinda.
Um grande abraço a todos.
Parte 1 - Introdução
Parte 2 - Criação e configuração da VM
Parte 3 - Criação do Oracle Linux
Parte 4 - Configuração do Oracle Linux I
Parte 5 - Configuração do Oracle Linux II
Parte 6 - Clonagem da VM e criação dos disk image
Parte 7 - Configuração dos discos ASM e OCFS2
Parte 8 - Instalação do Oracle Clusterware
Parte 9 - Aplicação do Patch 10.2.0.5 no Oracle Clusterware
Parte 10 - Instalação Oracle Database 10g
Parte 11 - Aplicação do Patch 10.2.0.5 no Oracle Database
Parte 12 - Criação do Listener e ASM em modo cluster
Parte 13 - Criação do banco de dados
…
Muito bom começar mais um post da série com vocês! Após aprendermos como realizar a aplicação do patch 10.2.0.5 no Oracle Clusterware, hoje vamos realizar a instalação do Oracle Database 10g em modo “Clusterizado”. Siga os passos a baixos demonstrados e caso fique alguma dúvida, post um comentário que terei prazer em poder ajudar.
Instalação Oracle Database 10g
O binário de instalação do Oracle Database 10g é o mesmo para Single Instance e Oracle RAC.O Download pode ser feito na seguinte página: http://www.oracle.com/technetwork/database/10201linuxsoft-097986.html. Já baixado você deve descompactar o arquivo, assim como foi feito na Instalação do Oracle Clusterware na parte 8.
unzip 10201_database_linux32.zip
Com a descompactação feita, uma pasta database será criada, entre nela e execute o runInstaller, como imagem abaixo:
Nesse momento, o instalador irá questionar para qual versão será instalada o banco, Enterprise ou Standard Edition, fica a seu critério de escolha. O Oracle RAC funciona perfeitamente na versão Standard Edition, porém afim de testar todos os recursos do banco aqui nesse ambiente teste que estamos construindo, vamos instalar a versão Enterprise.
Define aqui, a localização do Oracle Home do banco de dados que será instalado:
O instalador já reconhece que existe um Oracle Clusterware instalado e inicia a instalação em modo Cluster Installation. Ele também detecta os nodes e pergunta quais deles será instalado o banco … no nosso caso os dois.
Como iniciamos a instalação através do runInstaller com a opção -ignoreSysPreReqs várias mensagens será mostrada aqui dizendo que não está de acordo, pode ignorar essas mensagens sem problema e continuar com a instalação. Essas mensagens de erro acontecem porque quando o instalador do Oracle 10g saiu, a versão Red Hat 5 (que estamos usando) ainda não estava liberada. De acordo com a própria Oracle esse comportamento é esperado.
Por hora, vamos somente realizar a instalação do banco, por isso selecione a opção Install database Software only.
Hora de executar o tão conhecido root.sh. Lembre-se de sempre executar o script como root e sempre um de cada vez. Abaixo a imagem eu mostro a execução desses arquivos:
RAC 1 – Executando os scripts no PRIMEIRO nó
[root@rac1 ~]# /u01/app/oracle/product/10.2.0/db_1/root.sh
Running Oracle10 root.sh script...
The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /u01/app/oracle/product/10.2.0/db_1
Enter the full pathname of the local bin directory: [/usr/local/bin]:
Copying dbhome to /usr/local/bin ...
Copying oraenv to /usr/local/bin ...
Copying coraenv to /usr/local/bin ...
Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root.sh script.
Now product-specific root actions will be performed.
RAC 2 – Executando os scripts no SEGUNDO nó
[root@rac2 ~]# /u01/app/oracle/product/10.2.0/db_1/root.sh
Running Oracle10 root.sh script...
The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /u01/app/oracle/product/10.2.0/db_1
Enter the full pathname of the local bin directory: [/usr/local/bin]:
Copying dbhome to /usr/local/bin ...
Copying oraenv to /usr/local/bin ...
Copying coraenv to /usr/local/bin ...
Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root.sh script.
Now product-specific root actions will be performed.
Banco instalado!
Para o próximo parte, vamos realizar a aplicação do patch 10.2.0.5 para o database. Até lá …
Parte 1 - Introdução
Parte 2 - Criação e configuração da VM
Parte 3 - Criação do Oracle Linux
Parte 4 - Configuração do Oracle Linux I
Parte 5 - Configuração do Oracle Linux II
Parte 6 - Clonagem da VM e criação dos disk image
Parte 7 – Configuração dos discos ASM e OCFS2
Parte 8 – Instalação do Oracle Clusterware
Parte 9 - Aplicação do Patch 10.2.0.5 no Oracle Clusterware
Parte 10 - Instalação Oracle Database 10g
Parte 11 - Aplicação do Patch 10.2.0.5 no Oracle Database
Parte 12 - Criação do Listener e ASM em modo cluster
Parte 13 - Criação do banco de dados
…
Relação de confiança
Essa é a última configuração e uma das mais importantes, é a relação de confiança das máquinas. A relação de confiança permite que um usuário se conecte via ssh em outro servidor sem precisar digitar senha alguma.
O primeiro passo é criar a chave de segurança ssh da sua máquina. O procedimento é bem simples, ele é feito com o comando ssh-keygen -t rsa, e deve ser executado com o usuário oracle. Execute o comando e pressione a tecla ENTER até o final. Veja abaixo:
[oracle@rac1 ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/oracle/.ssh/id_rsa):
Created directory '/home/oracle/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/oracle/.ssh/id_rsa.
Your public key has been saved in /home/oracle/.ssh/id_rsa.pub.
The key fingerprint is:
ef:e2:d9:ae:db:be:19:10:47:4a:96:ea:64:49:75:59 oracle@rac1.localdomain
Feito na máquina rac1, agora é hora de fazer o mesmo procedimento na máquina rac2:
[oracle@rac2 ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/oracle/.ssh/id_rsa):
Created directory '/home/oracle/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/oracle/.ssh/id_rsa.
Your public key has been saved in /home/oracle/.ssh/id_rsa.pub.
The key fingerprint is:
64:fa:ae:eb:85:41:71:d4:04:dd:48:0e:15:5f:e4:18 oracle@rac2.localdomain
Pronto, nossas máquinas estão com suas chaves de segurança ssh feito, agora é hora de criar a relação de confiança. Primeiro vou realizar na máquina rac1 e depois na máquina rac2, observe:
[oracle@rac1 ~]$ cat /home/oracle/.ssh/id_rsa.pub | ssh oracle@rac2 'cat >> /home/oracle/.ssh/authorized_keys' The authenticity of host 'rac1 (10.0.0.10)' can't be established. RSA key fingerprint is 86:5a:97:20:00:13:34:97:16:95:f1:4d:b5:ec:49:a4. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'rac1,10.0.0.20' (RSA) to the list of known hosts. oracle@rac2's password: [oracle@rac1 ~]$ cat /home/oracle/.ssh/id_rsa.pub | ssh oracle@rac1 'cat >> /home/oracle/.ssh/authorized_keys' The authenticity of host 'rac1 (10.0.0.10)' can't be established. RSA key fingerprint is 86:5a:97:20:00:13:34:97:16:95:f1:4d:b5:ec:49:a4. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'rac1,10.0.0.10' (RSA) to the list of known hosts. oracle@rac1's password: [oracle@rac1 ~]$
Agora na máquina 2:
[oracle@rac2 ~]$ cat /home/oracle/.ssh/id_rsa.pub | ssh oracle@rac1 'cat >> /home/oracle/.ssh/authorized_keys' The authenticity of host 'rac1 (10.0.0.10)' can't be established. RSA key fingerprint is 86:5a:97:20:00:13:34:97:16:95:f1:4d:b5:ec:49:a4. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'rac1,10.0.0.10' (RSA) to the list of known hosts. oracle@rac1's password: [oracle@rac2 ~]$ cat /home/oracle/.ssh/id_rsa.pub | ssh oracle@rac2 'cat >> /home/oracle/.ssh/authorized_keys' The authenticity of host 'rac2 (10.0.0.20)' can't be established. RSA key fingerprint is 86:5a:97:20:00:13:34:97:16:95:f1:4d:b5:ec:49:a4. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'rac2,10.0.0.20' (RSA) to the list of known hosts. oracle@rac2's password: [oracle@rac2 ~]$
Testando … observe que conectado na máquina rac1 não vai mais pedir qualquer senha para conectar na máquina rac2, ou vice-versa.
[oracle@rac1 ~]$ ssh rac2 date Mon Oct 3 21:28:48 BRT 2011
É necessário agora executar essa sequencia de comandos abaixos na máquina rac1:
ssh rac1 date ssh rac2 date ssh rac1-priv date ssh rac2-priv date ssh rac1.localdomain date ssh rac2.localdomain date ssh rac1-priv.localdomain date ssh rac2-priv.localdomain date
E onde aparecer Are you sure you want to continue connecting (yes/no)?, confirme com um yes. Como mostrado abaixo:
[oracle@rac1 ~]$ ssh rac1-priv date The authenticity of host 'rac1-priv (192.168.1.10)' can't be established. RSA key fingerprint is 86:5a:97:20:00:13:34:97:16:95:f1:4d:b5:ec:49:a4. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'rac1-priv,192.168.1.10' (RSA) to the list of known hosts. Mon Oct 3 21:32:55 BRT 2011
Quando todos os comandos acima forem executados na máquina rac1 transfira o arquivo known_hosts dentro da pasta /home/oracle/.ssh para máquina rac2 assim não será necessário executar a sequencia acima para a máquina rac2.
[oracle@rac1 .ssh]$ pwd
/home/oracle/.ssh
[oracle@rac1 .ssh]$ scp known_hosts rac2:`pwd`
known_hosts 100% 1196 1.2KB/s 00:00
[oracle@rac1 .ssh]$
Instalação do Oracle Clusterware 10g
O download do Oracle RAC Clusterware 10g Release 2, assim como a do banco Oracle Database 10g Release 2 para Linux x86 pode ser feito no endereço do link abaixo:
http://www.oracle.com/technetwork/database/10201linuxsoft-097986.html
Após realizado o download, vamos definir inicialmente a variável de ambiente ORACLE_BASE do banco e logo após a descompactação do instalador clusterware 10201_clusterware_linux32.zip. Observe já que vou definir a variável de ambiente ORACLE_BASE dentro do arquivo .bash_profile que se encontra na pasta HOME do usuário, no nosso caso o /home/oracle. Sempre quando algum logon do usuário oracle ocorrer esse arquivo vai ser executado, com isso todas as variáveis de ambiente dentro dele será exportada. Veja as imagens abaixo:
Para ativar as configurações de dentro do arquivo .bash_profile execute o comando . .bash_profile.
Como deixei meu arquivo de instalação do clusterware (10201_clusterware_linux32.zip) dentro da pasta /u01/app/oracle vou até o diretório (cd $ORACLE_BASE) e depois realizo a descompactação através do comando unzip.
Com o binário do clusterware descompactado, entre na pasta clusterware e execute o comando ./runInstaller -ignoreSysPreReqs, como mostro abaixo. Estamos instalando o Oracle Linux 5 (quase cópia do RedHat 5) e quando saiu a versão do Oracle RAC 10g a versão 5 do RedHat não tinha sido lançado, com isso o runInstaller não reconhece como uma versão Linux válida para instalação, por isso é necessário utilizar a opção -ignoreSysPreReqs.
Iniciando a instalação do Oracle Clusterware.
Escolha a localização do oraInventory.
Defina a localização do HOME do Oracle Clusterware.
Alguns erros serão disparados mais não se preocupe, é normal. Isso porque, como explicado anteriormente estamos utilizando a opção ignoreSysPreReqs para executar o runInstaller.
Aqui é momento de definir o nome do cluster e os nós presentes a eles. Aqui nesse artigo estarei colocando o nome de crs_vm, fique a vontade para colocar o que deseja. Com a alteração feita vamos clicar no botão Add para adicionar o nó rac2 já que o nó rac1 o instalador já reconheceu.
Agora sim, os dois nós presentes.
Aqui o instalador identifica que existem duas placas de redes nos dois nós do cluster e também pedi para que informemos a ele qual dessas interfaces será a interface PUBLICA e a PRIVADA. Clique em cima da interface eth0 e clique no botão Edit e defina como PUBLIC.
Deverá ficar dessa maneira.
Agora é hora de definirmos a localização do OCR e do VOTING. Vamos utilizar a partição /ocr e /voting montada na parte 7 dessa série de artigo para definirmos a localização do ocr e do voting do cluster.
Tudo pronto, que inicie a instalação:
Nesse momento é hora de rodar os scripts solicitado pelo instalador. Esses scripts devem ser executado como root um de cada vez.
Vamos primeiro executar o script /u01/app/oracle/oraInventory/orainstRoot.sh primeiro na máquina 1 e depois na máquina 2.
[root@rac1 ~]# /u01/app/oracle/oraInventory/orainstRoot.sh Changing permissions of /u01/app/oracle/oraInventory to 770. Changing groupname of /u01/app/oracle/oraInventory to oinstall. The execution of the script is complete
[root@rac2 ~]# /u01/app/oracle/oraInventory/orainstRoot.sh Changing permissions of /u01/app/oracle/oraInventory to 770. Changing groupname of /u01/app/oracle/oraInventory to oinstall. The execution of the script is complete
Chegou a vez do /u01/app/oracle/product/10.2.0/crs/root.sh, primeiro na máquina 1
[root@rac1 ~]# /u01/app/oracle/product/10.2.0/crs/root.sh WARNING: directory '/u01/app/oracle/product/10.2.0' is not owned by root WARNING: directory '/u01/app/oracle/product' is not owned by root WARNING: directory '/u01/app/oracle' is not owned by root WARNING: directory '/u01/app' is not owned by root WARNING: directory '/u01' is not owned by root Checking to see if Oracle CRS stack is already configured /etc/oracle does not exist. Creating it now. Setting the permissions on OCR backup directory Setting up NS directories Oracle Cluster Registry configuration upgraded successfully WARNING: directory '/u01/app/oracle/product/10.2.0' is not owned by root WARNING: directory '/u01/app/oracle/product' is not owned by root WARNING: directory '/u01/app/oracle' is not owned by root WARNING: directory '/u01/app' is not owned by root WARNING: directory '/u01' is not owned by root assigning default hostname rac1 for node 1. assigning default hostname rac2 for node 2. Successfully accumulated necessary OCR keys. Using ports: CSS=49895 CRS=49896 EVMC=49898 and EVMR=49897. node : node 1: rac1 rac1-priv rac1 node 2: rac2 rac2-priv rac2 Creating OCR keys for user 'root', privgrp 'root'.. Operation successful. Now formatting voting device: /voting/vot1.dat Now formatting voting device: /voting/vot2.dat Now formatting voting device: /voting/vot3.dat Format of 3 voting devices complete. Startup will be queued to init within 90 seconds. Adding daemons to inittab Expecting the CRS daemons to be up within 600 seconds. CSS is active on these nodes. rac1 CSS is inactive on these nodes. rac2 Local node checking complete. Run root.sh on remaining nodes to start CRS daemons. [root@rac1 ~]#
Agora sim na máquina 2.
[root@rac2 ~]# /u01/app/oracle/product/10.2.0/crs/root.sh WARNING: directory '/u01/app/oracle/product/10.2.0' is not owned by root WARNING: directory '/u01/app/oracle/product' is not owned by root WARNING: directory '/u01/app/oracle' is not owned by root WARNING: directory '/u01/app' is not owned by root WARNING: directory '/u01' is not owned by root Checking to see if Oracle CRS stack is already configured /etc/oracle does not exist. Creating it now. Setting the permissions on OCR backup directory Setting up NS directories Oracle Cluster Registry configuration upgraded successfully WARNING: directory '/u01/app/oracle/product/10.2.0' is not owned by root WARNING: directory '/u01/app/oracle/product' is not owned by root WARNING: directory '/u01/app/oracle' is not owned by root WARNING: directory '/u01/app' is not owned by root WARNING: directory '/u01' is not owned by root clscfg: EXISTING configuration version 3 detected. clscfg: version 3 is 10G Release 2. assigning default hostname rac1 for node 1. assigning default hostname rac2 for node 2. Successfully accumulated necessary OCR keys. Using ports: CSS=49895 CRS=49896 EVMC=49898 and EVMR=49897. node : node 1: rac1 rac1-priv rac1 node 2: rac2 rac2-priv rac2 clscfg: Arguments check out successfully. NO KEYS WERE WRITTEN. Supply -force parameter to override. -force is destructive and will destroy any previous cluster configuration. Oracle Cluster Registry for cluster has already been initialized Startup will be queued to init within 90 seconds. Adding daemons to inittab Expecting the CRS daemons to be up within 600 seconds. CSS is active on these nodes. rac1 rac2 CSS is active on all nodes. Waiting for the Oracle CRSD and EVMD to start Waiting for the Oracle CRSD and EVMD to start Oracle CRS stack installed and running under init(1M) 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
Observem o erro acima, por incrível que pareça esse é um erro esperado quando utilizado Red Hat Linux 5 (ou versões derivadas, que é o nosso caso) é descrito pelo note 414163.1 do support Oracle. De acordo com o documento para corrigir o problema é necessário editar dois arquivos presentes na pasta bin do home do Oracle Clusterware que no nosso caso é o diretório /u01/app/oracle/product/10.2.0/crs.
Vá até o diretório /u01/app/oracle/product/10.2.0/crs/bin e edite o arquivo vipca. Perto da linha 121 terá um código parecido com esse:
#Remove this workaround when the bug 3937317 is fixed
arch=`uname -m`
if [ "$arch" = "i686" -o "$arch" = "ia64" ]
then
LD_ASSUME_KERNEL=2.4.19
export LD_ASSUME_KERNEL
fi
#End workaround
Apenas adicione o código unset LD_ASSUME_KERNEL abaixo da linha em que mostra o export LD_ASSUME_KERNEL ficando dessa maneira
[oracle@rac1 bin]$ pwd
/u01/app/oracle/product/10.2.0/crs/bin
[oracle@rac1 bin]$ vi vipca
#Remove this workaround when the bug 3937317 is fixed
arch=`uname -m`
if [ "$arch" = "i686" -o "$arch" = "ia64" ]
then
LD_ASSUME_KERNEL=2.4.19
export LD_ASSUME_KERNEL
unset LD_ASSUME_KERNEL
fi
#End workaround
Agora é hora de editar o arquivo srvctl da mesma maneira. O código devesse se parecer com esse perto da linha 166
[oracle@rac1 bin]$ vi srvctl
#Remove this workaround when the bug 3937317 is fixed
LD_ASSUME_KERNEL=2.4.19
export LD_ASSUME_KERNEL
Apenas adicione o código unset LD_ASSUME_KERNEL abaixo da linha em que mostra o export LD_ASSUME_KERNEL ficando dessa maneira
[oracle@rac1 bin]$ vi srvctl
#Remove this workaround when the bug 3937317 is fixed
LD_ASSUME_KERNEL=2.4.19
export LD_ASSUME_KERNEL
unset LD_ASSUME_KERNEL
Como realizamos o procedimento na máquina 1 (rac1) é necessário que seja feito a mesma coisa só que na máquina 2. Para facilitar o trabalho somente transfira os arquivos vipca e srvctl para a máquina 2.
[oracle@rac1 bin]$ scp -rp vipca rac2:`pwd` vipca 100% 5038 4.9KB/s 00:00 [oracle@rac1 bin]$ scp -rp srvctl rac2:`pwd` srvctl 100% 5577 5.5KB/s 00:00
Feito todos esses procedimentos clique no botão OK na tela de execução dos scripts:
Ao clicar em OK uma verificação do cluster instalado vai ser feita, devido o erro aparecido no momento da execução do root.sh na máquina 2 os IP´s virtuais não foram criados corretamente por isso é exibida a mensagem abaixo:
Será necessário então criar os IPs virtuais do cluster manualmente para que a verificação do cluster não seja afetada, vamos cria-los através do utilitário vipca que deve ser executada como root.
Ao executar uma tela como essa será aberta:
Selecione a interface de rede e clique em Next
Aqui será exibida uma tabela com os IP´s virtuais que deverão ser criados, apenas adicione o nome rac1-vip e rac2-vip na coluna IP Alias Name e veja se os IPs que mostram no IP address combinam com o que definimos no arquivo /etc/hosts. Veja abaixo como fica:
Feito isso é somente instalar:
Com os IP´s virtuais criado voltamos a tela de instalação do Oracle Clusterware 10g e clicamos em Retry para que a verificação do cluster faça novamente. Veja que agora a mensagem de alerta não é exibida e a instalação é feita sem qualquer problema.
Pronto instalação do Oracle Clusterware realizada. Quer conferir se os processos do cluster estão ativos, execute o comando abaixo, ele deverá mostrar todos os processos ONLINE.
[oracle@rac1 ~]$ /u01/app/oracle/product/10.2.0/crs/bin/crs_stat -t Name Type Target State Host ------------------------------------------------------------ ora.rac1.gsd application ONLINE ONLINE rac1 ora.rac1.ons application ONLINE ONLINE rac1 ora.rac1.vip application ONLINE ONLINE rac1 ora.rac2.gsd application ONLINE ONLINE rac2 ora.rac2.ons application ONLINE ONLINE rac2 ora.rac2.vip application ONLINE ONLINE rac2
Parte 1 - Introdução
Parte 2 - Criação e configuração da VM
Parte 3 - Criação do Oracle Linux
Parte 4 - Configuração do Oracle Linux I
Parte 5 - Configuração do Oracle Linux II
Parte 6 - Clonagem da VM e criação dos disk image
Parte 7 – Configuração dos discos ASM e OCFS2
Parte 8 - Instalação do Oracle Clusterware
Parte 9 - Aplicação do Patch 10.2.0.5 no Oracle Clusterware
Parte 10 - Instalação Oracle Database 10g
Parte 11 - Aplicação do Patch 10.2.0.5 no Oracle Database
Parte 12 - Criação do Listener e ASM em modo cluster
Parte 13 - Criação do banco de dados
…
Na parte 7 do nosso artigo, vamos aprender como configurar os discos apresentados para as VM 1 e 2 no post anterior.
Criando as partições
Ao todo foram 5 discos criados, sendo 4 de 5G que será para o ASM e 1 disco de 1G para o OCFS2. Através do comando fdisk -l podemos ver os discos apresentados em cada uma das máquinas. Lembre-se que esse comando deve ser executado como root, observe que a verificação é feita na máquina 1 (rac1) e depois na máquina 2 (rac2).
[root@rac1 ~]# fdisk -l Disk /dev/sda: 16.1 GB, 16106127360 bytes 255 heads, 63 sectors/track, 1958 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 1827 14675346 83 Linux /dev/sda2 1828 1958 1052257+ 82 Linux swap / Solaris Disk /dev/sdb: 5368 MB, 5368709120 bytes 255 heads, 63 sectors/track, 652 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk /dev/sdb doesn't contain a valid partition table Disk /dev/sdc: 5368 MB, 5368709120 bytes 255 heads, 63 sectors/track, 652 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk /dev/sdc doesn't contain a valid partition table Disk /dev/sdd: 5368 MB, 5368709120 bytes 255 heads, 63 sectors/track, 652 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk /dev/sdd doesn't contain a valid partition table Disk /dev/sde: 5368 MB, 5368709120 bytes 255 heads, 63 sectors/track, 652 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk /dev/sde doesn't contain a valid partition table Disk /dev/sdf: 1073 MB, 1073741824 bytes 255 heads, 63 sectors/track, 130 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk /dev/sdf doesn't contain a valid partition table [root@rac1 ~]# ssh rac2 The authenticity of host 'rac2 (10.0.0.20)' can't be established. RSA key fingerprint is 86:5a:97:20:00:13:34:97:16:95:f1:4d:b5:ec:49:a4. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'rac2,10.0.0.20' (RSA) to the list of known hosts. root@rac2's password: Last login: Tue Sep 27 20:42:23 2011 from shadowy.lan [root@rac2 ~]# fdisk -l Disk /dev/sda: 16.1 GB, 16106127360 bytes 255 heads, 63 sectors/track, 1958 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 1827 14675346 83 Linux /dev/sda2 1828 1958 1052257+ 82 Linux swap / Solaris Disk /dev/sdb: 5368 MB, 5368709120 bytes 255 heads, 63 sectors/track, 652 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk /dev/sdb doesn't contain a valid partition table Disk /dev/sdc: 5368 MB, 5368709120 bytes 255 heads, 63 sectors/track, 652 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk /dev/sdc doesn't contain a valid partition table Disk /dev/sdd: 5368 MB, 5368709120 bytes 255 heads, 63 sectors/track, 652 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk /dev/sdd doesn't contain a valid partition table Disk /dev/sde: 5368 MB, 5368709120 bytes 255 heads, 63 sectors/track, 652 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk /dev/sde doesn't contain a valid partition table Disk /dev/sdf: 1073 MB, 1073741824 bytes 255 heads, 63 sectors/track, 130 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk /dev/sdf doesn't contain a valid partition table
Caso esteja tudo igual de uma máquina como na outra, vamos a criação das partições de cada um dos discos. O procedimento é muito simples e também é realizado com o comando fdisk executado como root. Vamos primeiro fazer na máquina 1:
Disco “/dev/sdb”
[root@rac1 ~]# fdisk /dev/sdb Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-652, default 1): Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-652, default 652): Using default value 652 Command (m for help): p Disk /dev/sdb: 5368 MB, 5368709120 bytes 255 heads, 63 sectors/track, 652 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdb1 1 652 5237158+ 83 Linux Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. [root@rac1 ~]#
Disco “/dev/sdc”
[root@rac1 ~]# fdisk /dev/sdc Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-652, default 1): Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-652, default 652): Using default value 652 Command (m for help): p Disk /dev/sdc: 5368 MB, 5368709120 bytes 255 heads, 63 sectors/track, 652 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdc1 1 652 5237158+ 83 Linux Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. [root@rac1 ~]#
Disco “/dev/sdd”
[root@rac1 ~]# fdisk /dev/sdd Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-652, default 1): Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-652, default 652): Using default value 652 Command (m for help): p Disk /dev/sdd: 5368 MB, 5368709120 bytes 255 heads, 63 sectors/track, 652 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdd1 1 652 5237158+ 83 Linux Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. [root@rac1 ~]#
Disco “/dev/sde”
[root@rac1 ~]# fdisk /dev/sde Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-652, default 1): Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-652, default 652): Using default value 652 Command (m for help): p Disk /dev/sde: 5368 MB, 5368709120 bytes 255 heads, 63 sectors/track, 652 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sde1 1 652 5237158+ 83 Linux Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. [root@rac1 ~]#
Feito o disco /dev/sde, temos os 4 discos do ASM criado a partição, agora é hora do disco do OCFS2 de 1G. O procedimento é o mesmo, só que agora vamos criar 2 partições, não 1 como estava sendo feito:
Disco “/dev/sdf”
[root@rac1 ~]# fdisk /dev/sdf Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-130, default 1): Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-130, default 130): +512M Command (m for help): p Disk /dev/sdf: 1073 MB, 1073741824 bytes 255 heads, 63 sectors/track, 130 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdf1 1 63 506016 83 Linux Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 2 First cylinder (64-130, default 64): Using default value 64 Last cylinder or +size or +sizeM or +sizeK (64-130, default 130): Using default value 130 Command (m for help): p Disk /dev/sdf: 1073 MB, 1073741824 bytes 255 heads, 63 sectors/track, 130 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdf1 1 63 506016 83 Linux /dev/sdf2 64 130 538177+ 83 Linux Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
Vamos conferir o resultado:
[root@rac1 ~]# fdisk -l Disk /dev/sda: 16.1 GB, 16106127360 bytes 255 heads, 63 sectors/track, 1958 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 1827 14675346 83 Linux /dev/sda2 1828 1958 1052257+ 82 Linux swap / Solaris Disk /dev/sdb: 5368 MB, 5368709120 bytes 255 heads, 63 sectors/track, 652 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdb1 1 652 5237158+ 83 Linux Disk /dev/sdc: 5368 MB, 5368709120 bytes 255 heads, 63 sectors/track, 652 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdc1 1 652 5237158+ 83 Linux Disk /dev/sdd: 5368 MB, 5368709120 bytes 255 heads, 63 sectors/track, 652 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdd1 1 652 5237158+ 83 Linux Disk /dev/sde: 5368 MB, 5368709120 bytes 255 heads, 63 sectors/track, 652 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sde1 1 652 5237158+ 83 Linux Disk /dev/sdf: 1073 MB, 1073741824 bytes 255 heads, 63 sectors/track, 130 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdf1 1 63 506016 83 Linux /dev/sdf2 64 130 538177+ 83 Linux
[root@rac1 ~]# ll /dev/sd* brw-r----- 1 root disk 8, 0 Sep 27 20:37 /dev/sda brw-r----- 1 root disk 8, 1 Sep 27 20:37 /dev/sda1 brw-r----- 1 root disk 8, 2 Sep 27 20:37 /dev/sda2 brw-r----- 1 root disk 8, 16 Sep 27 21:00 /dev/sdb brw-r----- 1 root disk 8, 17 Sep 27 21:00 /dev/sdb1 brw-r----- 1 root disk 8, 32 Sep 27 21:01 /dev/sdc brw-r----- 1 root disk 8, 33 Sep 27 21:01 /dev/sdc1 brw-r----- 1 root disk 8, 48 Sep 27 21:01 /dev/sdd brw-r----- 1 root disk 8, 49 Sep 27 21:01 /dev/sdd1 brw-r----- 1 root disk 8, 64 Sep 27 21:01 /dev/sde brw-r----- 1 root disk 8, 65 Sep 27 21:01 /dev/sde1 brw-r----- 1 root disk 8, 80 Sep 27 21:02 /dev/sdf brw-r----- 1 root disk 8, 81 Sep 27 21:02 /dev/sdf1 brw-r----- 1 root disk 8, 82 Sep 27 21:02 /dev/sdf2
Com as partições criadas dos discos na VM 1, vamos fazer o procedimento parecido só que agora na máquina 2:
Disco “/dev/sdb”
[root@rac2 ~]# hostname rac2.localdomain [root@rac2 ~]# [root@rac2 ~]# fdisk /dev/sdb Command (m for help): p Disk /dev/sdb: 5368 MB, 5368709120 bytes 255 heads, 63 sectors/track, 652 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdb1 1 652 5237158+ 83 Linux Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. [root@rac2 ~]#
Disco “/dev/sdc”
[root@rac2 ~]# fdisk /dev/sdc Command (m for help): p Disk /dev/sdc: 5368 MB, 5368709120 bytes 255 heads, 63 sectors/track, 652 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdc1 1 652 5237158+ 83 Linux Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
Disco “/dev/sdd”
[root@rac2 ~]# fdisk /dev/sdd Command (m for help): p Disk /dev/sdd: 5368 MB, 5368709120 bytes 255 heads, 63 sectors/track, 652 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdd1 1 652 5237158+ 83 Linux Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
Disco “/dev/sde”
[root@rac2 ~]# fdisk /dev/sde Command (m for help): p Disk /dev/sde: 5368 MB, 5368709120 bytes 255 heads, 63 sectors/track, 652 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sde1 1 652 5237158+ 83 Linux Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
Disco “/dev/sdf”
[root@rac2 ~]# fdisk /dev/sdf Command (m for help): p Disk /dev/sdf: 1073 MB, 1073741824 bytes 255 heads, 63 sectors/track, 130 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdf1 1 63 506016 83 Linux /dev/sdf2 64 130 538177+ 83 Linux Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
Conferindo na máquina 2:
[root@rac2 ~]# fdisk -l Disk /dev/sda: 16.1 GB, 16106127360 bytes 255 heads, 63 sectors/track, 1958 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 1827 14675346 83 Linux /dev/sda2 1828 1958 1052257+ 82 Linux swap / Solaris Disk /dev/sdb: 5368 MB, 5368709120 bytes 255 heads, 63 sectors/track, 652 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdb1 1 652 5237158+ 83 Linux Disk /dev/sdc: 5368 MB, 5368709120 bytes 255 heads, 63 sectors/track, 652 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdc1 1 652 5237158+ 83 Linux Disk /dev/sdd: 5368 MB, 5368709120 bytes 255 heads, 63 sectors/track, 652 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdd1 1 652 5237158+ 83 Linux Disk /dev/sde: 5368 MB, 5368709120 bytes 255 heads, 63 sectors/track, 652 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sde1 1 652 5237158+ 83 Linux Disk /dev/sdf: 1073 MB, 1073741824 bytes 255 heads, 63 sectors/track, 130 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdf1 1 63 506016 83 Linux /dev/sdf2 64 130 538177+ 83 Linux [root@rac2 ~]# ll /dev/sd* brw-r----- 1 root disk 8, 0 Sep 27 20:37 /dev/sda brw-r----- 1 root disk 8, 1 Sep 27 20:37 /dev/sda1 brw-r----- 1 root disk 8, 2 Sep 27 20:37 /dev/sda2 brw-r----- 1 root disk 8, 16 Sep 27 20:37 /dev/sdb brw-r----- 1 root disk 8, 17 Sep 27 21:13 /dev/sdb1 brw-r----- 1 root disk 8, 32 Sep 27 20:37 /dev/sdc brw-r----- 1 root disk 8, 33 Sep 27 21:13 /dev/sdc1 brw-r----- 1 root disk 8, 48 Sep 27 20:37 /dev/sdd brw-r----- 1 root disk 8, 49 Sep 27 21:13 /dev/sdd1 brw-r----- 1 root disk 8, 64 Sep 27 20:37 /dev/sde brw-r----- 1 root disk 8, 65 Sep 27 21:14 /dev/sde1 brw-r----- 1 root disk 8, 80 Sep 27 20:37 /dev/sdf brw-r----- 1 root disk 8, 81 Sep 27 21:14 /dev/sdf1 brw-r----- 1 root disk 8, 82 Sep 27 21:14 /dev/sdf2
Discos ASM
As partições:
/dev/sdb1
/dev/sdc1
/dev/sdd1
/dev/sde1
Serão as partições que serão apresentadas ao ASM. Na parte 5 dessa séria de artigos foi instalado e configurado o ASMLib, agora é hora de aprender como utilizamos. O ASMLib nada mais é do que uma biblioteca que é capaz de pegar as partições brutas disponíveis no Linux a apresentar ao ASM. Vamos agora ver, como isso é feito:
[root@rac1 ~]# /etc/init.d/oracleasm createdisk DISK1 /dev/sdb1 Marking disk "DISK1" as an ASM disk: [ OK ] [root@rac1 ~]# /etc/init.d/oracleasm createdisk DISK2 /dev/sdc1 Marking disk "DISK2" as an ASM disk: [ OK ] [root@rac1 ~]# /etc/init.d/oracleasm createdisk DISK3 /dev/sdd1 Marking disk "DISK3" as an ASM disk: [ OK ] [root@rac1 ~]# /etc/init.d/oracleasm createdisk DISK4 /dev/sde1 Marking disk "DISK4" as an ASM disk: [ OK ]
Vamos agora conferir, vamos listar os discos presentes no ASMLib:
[root@rac1 ~]# /etc/init.d/oracleasm listdisks
DISK1
DISK2
DISK3
DISK4
Na máquina 2 não é necessário criar os discos como foi feito na máquina 1. Veja como é feito na máquina 2:
[root@rac2 ~]# /etc/init.d/oracleasm scandisks Scanning the system for Oracle ASMLib disks: [ OK ] [root@rac2 ~]# /etc/init.d/oracleasm listdisks DISK1 DISK2 DISK3 DISK4
Discos OCFS2
O primeiro passo aqui, é formatarmos as partições /dev/sdf1 e /dev/sdf2 para OCFS2. Vamos realizar essa operação na máquina 1.
[root@rac1 ~]# mkfs.ocfs2 -L ocr_disk /dev/sdf1 mkfs.ocfs2 1.4.3 Cluster stack: classic o2cb Filesystem label=ocr_disk Block size=1024 (bits=10) Cluster size=4096 (bits=12) Volume size=518160384 (126504 clusters) (506016 blocks) 17 cluster groups (tail covers 3624 clusters, rest cover 7680 clusters) Journal size=16777216 Initial number of node slots: 2 Creating bitmaps: done Initializing superblock: done Writing system files: done Writing superblock: done Writing backup superblock: 0 block(s) Formatting Journals: done Formatting slot map: done Writing lost+found: done mkfs.ocfs2 successful [root@rac1 ~]# mkfs.ocfs2 -L vote_disk /dev/sdf2 mkfs.ocfs2 1.4.3 Cluster stack: classic o2cb Filesystem label=vote_disk Block size=2048 (bits=11) Cluster size=4096 (bits=12) Volume size=551092224 (134544 clusters) (269088 blocks) 9 cluster groups (tail covers 7568 clusters, rest cover 15872 clusters) Journal size=33554432 Initial number of node slots: 2 Creating bitmaps: done Initializing superblock: done Writing system files: done Writing superblock: done Writing backup superblock: 0 block(s) Formatting Journals: done Formatting slot map: done Writing lost+found: done mkfs.ocfs2 successful
Como esse será um ambiente OCFS2 clusterizado, em que a máquina 1 e a máquina 2 estará escrevendo e lendo o mesmo disco OCFS montado, será necessário configurarmos o OCFS2 para poder operar em modo cluster. Para isso crie o arquivo /etc/ocfs2/cluster.conf e adicione as seguintes linhas abaixos, como demonstro na máquina 1. O procedimento deve ser feito também na máquina 2.
[root@rac1 ~]# mkdir /etc/ocfs2
[root@rac1 ~]# vi /etc/ocfs2/cluster.conf
cluster:
node_count = 2
name = ocfs2
node:
ip_port = 7777
ip_address = 10.0.0.10
number = 1
name = rac1
cluster = ocfs2
node:
ip_port = 7777
ip_address = 10.0.0.20
number = 2
name = rac2
cluster = ocfs2
Feitos os passos acimas vamos as configurações finais do OCFS2. Aqui vou demonstrar somente da máquina rac1 porém deve ser feito também na máquina rac2.
[root@rac1 ~]# /etc/init.d/o2cb configure
Configuring the O2CB driver.
This will configure the on-boot properties of the O2CB driver.
The following questions will determine whether the driver is loaded on
boot. The current values will be shown in brackets ('[]'). Hitting
without typing an answer will keep that current value. Ctrl-C
will abort.
Load O2CB driver on boot (y/n) [y]: y
Cluster stack backing O2CB [o2cb]:
Cluster to start on boot (Enter "none" to clear) [ocfs2]:
Specify heartbeat dead threshold (>=7) [31]:
Specify network idle timeout in ms (>=5000) [30000]:
Specify network keepalive delay in ms (>=1000) [2000]:
Specify network reconnect delay in ms (>=2000) [2000]:
Writing O2CB configuration: OK
Starting O2CB cluster ocfs2: OK
[root@rac1 ~]# /etc/init.d/o2cb load
[root@rac1 ~]# /etc/init.d/o2cb online
Para que as partições OCR e VOTING sejam montadas automaticamente quando a máquina iniciar, coloque as duas linhas abaixo no final do arquivo /etc/fstab, isso nas máquinas 1 e 2.
LABEL=ocr_disk /ocr ocfs2 _netdev,datavolume,nointr 0 0 LABEL=vote_disk /voting ocfs2 _netdev,datavolume,nointr 0 0
Também crie os arquivos /ocr e /voting como mostrado a abaixo, lembrando que o procedimento deve ser feito também na máquina 2.
[root@rac1 ~]# mkdir /ocr [root@rac1 ~]# mkdir /voting
Após feitos os passos acima sem qualquer problema podemos montar as nossas duas partições de OCFS2 onde irá comportar o OCR e o VOTING.
[root@rac1 ~]# mount -a
Repita na máquina 2
[root@rac2 ~]# mount -a
Agora sim nossa partição está montada:
[root@rac1 ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 14G 2.1G 11G 16% / tmpfs 252M 0 252M 0% /dev/shm /dev/sdf1 495M 35M 460M 7% /ocr /dev/sdf2 526M 73M 453M 14% /voting [root@rac1 ~]# mount |grep ocfs2 ocfs2_dlmfs on /dlm type ocfs2_dlmfs (rw) /dev/sdf1 on /ocr type ocfs2 (rw,_netdev,datavolume,nointr,heartbeat=local) /dev/sdf2 on /voting type ocfs2 (rw,_netdev,datavolume,nointr,heartbeat=local) [root@rac2 ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 14G 2.1G 11G 16% / tmpfs 252M 0 252M 0% /dev/shm /dev/sdf1 495M 35M 460M 7% /ocr /dev/sdf2 526M 73M 453M 14% /voting [root@rac2 ~]# mount |grep ocfs2 ocfs2_dlmfs on /dlm type ocfs2_dlmfs (rw) /dev/sdf1 on /ocr type ocfs2 (rw,_netdev,datavolume,nointr,heartbeat=local) /dev/sdf2 on /voting type ocfs2 (rw,_netdev,datavolume,nointr,heartbeat=local)
Para finalizar vamos já definir as permissões necessárias para o OCR e o VOTING, aqui demonstro somente da máquina 1 porém deve ser executado também na máquina 2.
[root@rac1 ~]# chown oracle:oinstall /ocr [root@rac1 ~]# chown oracle:oinstall /voting [root@rac1 ~]# chmod 775 /ocr [root@rac1 ~]# chmod 775 /voting
Parte 1 - Introdução
Parte 2 - Criação e configuração da VM
Parte 3 - Criação do Oracle Linux
Parte 4 - Configuração do Oracle Linux I
Parte 5 - Configuração do Oracle Linux II
Parte 6 – Clonagem da VM e criação dos disk image
Parte 7 - Configuração dos discos ASM e OCFS2
Parte 8 - Instalação do Oracle Clusterware
Parte 9 - Aplicação do Patch 10.2.0.5 no Oracle Clusterware
Parte 10 - Instalação Oracle Database 10g
Parte 11 - Aplicação do Patch 10.2.0.5 no Oracle Database
Parte 12 - Criação do Listener e ASM em modo cluster
Parte 13 - Criação do banco de dados
…
Clonagem da VM
Caso o seu ambiente não seja virtualizado, você tem que realizar todas as configurações anteriores feitas nos outros nós do cluster, em um ambiente virtualizado as coisas ficam mais fáceis, basta realizar uma clone da sua primeira máquina configurada.
No VirtualBox é extremamente fácil realizar a operação de clone que é feita através do comando VBoxManage, alias, a maioria das configurações do VirtualBox é realizada através desse utilitário.
No Windows o VBoxMange é um .exe que fica dentro da pasta do VirtualBox instalada, geralmente em “C:\Program Files\Oracle\Virtual Box\VBoxManage.exe” no Linux ele está em “/usr/bin/VBoxManage”, que já fica adicionado no PATH quando é instalado. Caso esteja utilizando o Windows será necessário manusear através do prompt de comando.
flavio@note:~$ whereis VBoxManage VBoxManage: /usr/bin/VBoxManage flavio@note:~$ cd /home/flavio/VMs/Oracle/10g_RAC/ flavio@note:$ VBoxManage clonehd Oracle\ RAC\ 10g\ -\ 1.vdi Oracle\ RAC\ 10g\ -\ 2.vdi 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% Clone hard disk created in format 'VDI'. UUID: a481013b-0876-4779-ae25-fb40724f2539
No Windows será algo como:
C:\Users\Administrator> C:\Program Files\Oracle\Virtual Box\VBoxManage.exe clonehd C:\Minhas VMs\RAC\Oracle RAC 10g - 1.vdi C:\Minhas VMs\RAC\Oracle RAC 10g - 2.vdi
Criando o segundo nó
Realizado os passos acima com sucesso, vamos apresentar o disk image clonado para o VirtualBox na forma de uma nova máquina virtual. Segue os passos:
Clique em NEW
Nesse momento é necessário selecionar o disco Oracle RAC 10g – 2.vdi que acabamos de clonar.
Com o nó 2 do cluster criado, vamos a suas configurações:
Como fizemos na máquina 1, é necessário atribuir duas placas de rede para a VM:
Criação dos DISK IMAGE
Assim como a clonagem de um disco, a criação de um disk image é feito através do utilitário VBoxManage. Os comandos abaixos foram executados dentro da pasta onde as VM’s Oracle RAC 10g 1 e Oracle RAC 10g 2 estão.
Iremos criar 4 disk image para o ASM e 1 disk image para o OCR e VOTING do cluster, para o ASM vou criar dois diskgroup com redundância normal, em que cada diskgroup terá dois discos ASM.
Caso você não tenha familiaridade com esses conceitos de ASM, OCR ou VOTING … não se preocupe, siga o tutorial que no decorrer estarei explicando melhor cada um deles, o importante agora é saber que 4 discos de 5G serão para armazenar os dados do ASM (datafile, redo, archives, etc …) e um disco de 1G para armazenar os dados do OCR e VOTING do cluster.
Vamos primeiramente a criação dos 4 discos de 5G para o ASM:
flavio@note:$ VBoxManage createhd --filename asm1.vdi --size 5120 --format VDI --variant Fixed 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% Disk image created. UUID: cd55a81b-7061-4aaf-9d8a-ae47a4b7c9e5 flavio@note:$ VBoxManage createhd --filename asm2.vdi --size 5120 --format VDI --variant Fixed 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% Disk image created. UUID: deab5193-cae7-4205-8014-9be51b6a864d flavio@note:$ VBoxManage createhd --filename asm3.vdi --size 5120 --format VDI --variant Fixed 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% Disk image created. UUID: 77b09219-ffe8-4145-a131-78c6630a1b0e flavio@note:$ VBoxManage createhd --filename asm4.vdi --size 5120 --format VDI --variant Fixed 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% Disk image created. UUID: 3a2b29fa-a702-492b-ba04-89876c78a0cf
Agora de 1G para o OCR e o VOTING do cluster:
flavio@note:$ VBoxManage createhd --filename ocr_vote.vdi --size 1024 --format VDI --variant Fixed
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Disk image created. UUID: c7529a10-a8e4-4149-b287-e250a996ad71
Agora sim, todos os disk image criados. Nesse ponto devemos ter 7 discos na nossa pasta do VirtualBox:
- 2 – Para cada uma das VMs.
- 4 – Para os discos ASM
- 1 – Para o OCR e VOTING do cluster
flavio@note:$ ll total 27621612 drwx------ 1 flavio flavio 408 2011-09-21 21:41 ./ drwx------ 1 flavio flavio 4096 2011-07-30 18:10 ../ -rw------- 1 flavio flavio 5368733696 2011-09-21 21:17 asm1.vdi -rw------- 1 flavio flavio 5368733696 2011-09-21 21:21 asm2.vdi -rw------- 1 flavio flavio 5368733696 2011-09-21 21:35 asm3.vdi -rw------- 1 flavio flavio 5368733696 2011-09-21 21:38 asm4.vdi -rw------- 1 flavio flavio 1073750016 2011-09-21 21:41 ocr_vote.vdi -rw------- 1 flavio flavio 2867920896 2011-09-15 01:44 Oracle RAC 10g - 1.vdi -rw------- 1 flavio flavio 2867920896 2011-09-21 20:29 Oracle RAC 10g - 2.vdi
Apresentando os disk image para as VM
Com os 5 disk image criados vamos apresentar-los para as nossas VMs.
Siga os passos:
Na aba Storage selecione a opção SATA Controler e clique no primeiro ícone, como mostra abaixo:
Irá abrir uma janela, selecione a opção Choose existing disk e busque o disk image criado anteriormente asm1.vdi
Após selecionar o disk image asm1.vdi ele deverá aparecer como abaixo:
Execute os passos da mesma maneira, agora para os discos asm2.vdi, asm3.vdi, asm4.vdi e para o ocr_vote.vdi. Deverá ficar como abaixo:
Pronto, apresentamos os disk image do ASM e do OCR/VOTE para a máquina virtual 1, agora iremos realizar o mesmo procedimento na máquina virtual 2, antes temos que ativar a opção de compartilhamento dos discos (shareable) ou seja, o disk image pode ser capaz de ser utilizado por 2 ou mais VMs ao mesmo tempo.
Para que o ambiente Oracle Cluster funcione é necessário que os discos do ASM do OCR e também do VOTING sejam compartilhados entre os nós, ou seja tudo os nós devem obrigatoriamente ver esses discos. No VirtualBox conseguimos isso da seguinte maneira:
flavio@shadowy:$ VBoxManage modifyhd asm1.vdi --type shareable flavio@shadowy:$ VBoxManage modifyhd asm2.vdi --type shareable flavio@shadowy:$ VBoxManage modifyhd asm3.vdi --type shareable flavio@shadowy:$ VBoxManage modifyhd asm4.vdi --type shareable flavio@shadowy:$ VBoxManage modifyhd ocr_vote.vdi --type shareable
Agora sim, com os disk image em modo compartilhado, vamos realizar o mesmo procedimento de apresentação dos discos nas VM 2.
Definindo os IP/Hostname para o nó 2 recém-criado
A máquina 2 foi criada, mais ainda não configuramos os IP’s publico e privado e nem o hostname para ela. Para isso inicie a VM e siga os passos:
Conecte como root na VM:
Remova os adaptadores com o final .bak para isso eles devem estar desativados.
Dê um duplo clique no dispositivo eth0 e defina os seguintes IP’s para ele:
Agora para o adaptador eth1:
Após definirmos os IP para o nó 2, obedecendo como está no /etc/hosts que configuramos na parte 5 vamos agora alterar o hostname da máquina, por isso vá até a aba DNS ainda dentro do utilitário Network Configuration e altere de rac1.localdomain para rac2.localdomain:
Volte a aba Devices e ative o disposito eth0 e depois o eth1
Conferindo a alteração feita:
Por hoje é isso, no próximo estaremos criando as partições desses discos e apresentando eles ao ASM. Vamos também configurar o OCFS2 para já deixarmos configurado a partição do OCR e do VOTING e a equivalência de usuários oracle.
Qualquer dúvida entrem em contato.
Até mais
Quando deparamos com um ambiente novo que nunca tivemos contato antes, sempre vem a pergunta … Quantos nodes tem o cluster? Quais são eles?.
Com o utilitário olsnodes é fácil checar todos os nodes pertencentes ao clusterware. Veja a syntax abaixo:
olsnodes
-n Informa o membro número do node name.
-l Informa o local node name
[oracle@rac1 ~]$ olsnodes rac1 rac2 [oracle@rac1 ~]$ olsnodes -n rac1 1 rac2 2 [oracle@rac1 ~]$ olsnodes -l rac1
Está atrás de descobrir o nome do clusterware instalado?
Com o utilitário cemutlo fácil descobrir nome e versão do clusterware. Lembrando que esse deve ser executado como root.
$ORA_CRS_HOME/bin/cemutlo [-n] [-w]
-n Informa o nome do cluster
-w Informa a versão do clusterware.
[root@rac1 ~]# $ORA_CRS_HOME/bin/cemutlo -n crs_vm [root@rac1 ~]# $ORA_CRS_HOME/bin/cemutlo -w 2:1:
O voting disk junto com o OCR são um dos os arquivos mais importantes em ambiente cluster, saber gerenciar e administrar esses arquivos é fundamental para o DBA.
O Oracle CRS usa esses pequenos arquivos de voting (cerca de 20MB) para tomada de decisões. Considere um cenário em que seis nodes do cluster passam pela experiência de pane total na comunicação, três nodes não podem comunicar com outros três, agora pense que alterações acontecem simultaneamente nesses seis nodes, o risco de integridade de dados é imensa. Questões como estas são resolvidas com o voting disk, ele ajuda o Oracle CRS a decidir qual coleção de nodes deve ser baixadas e qual deve sobreviver.
Um ponto importante que muitos administradores esquecem é que para que o cluster sobreviva a uma falha de x números de voting disk, você precisa configurar (2x+1) de voting disk.
Abaixo alguns exemplos de administração de Voting Disk.
--Informa os voting disk do clusterware [root@rac1 ~]# crsctl query css votedisk 0. 0 /dev/voting1 1. 0 /dev/voting2 2. 0 /dev/voting3 --Remove um novo voting disk [root@rac1 ~]# crsctl delete css votedisk /dev/voting1 -force successful deletion of votedisk /dev/voting1. [root@rac1 ~]# crsctl query css votedisk 0. 0 /dev/voting2 1. 0 /dev/voting3 located 2 votedisk(s). --Adiciona um novo voting [root@rac2 ~]# crsctl add css votedisk /dev/voting1 -force Now formatting voting disk: /dev/voting1 successful addition of votedisk /dev/voting1. --Backup [root@rac1 votedisk]# dd if=/dev/voting1 of=/oracle/backup/votedisk/vdisk.bak bs=4k 514017+0 records in 514017+0 records out 263176704 bytes (263 MB) copied, 46.02 seconds, 5.7 MB/s [root@rac1 votedisk]# cd /oracle/backup/votedisk/ [root@rac1 votedisk]# ll total 257268 -rw-r--r-- 1 root root 263176704 Apr 17 11:19 vdisk.bak [root@rac1 votedisk]# du -chs 252M 252M total --Restore [root@rac1 votedisk]# dd if=/oracle/backup/votedisk/vdisk.bak of=/dev/voting1 514017+0 records in 514017+0 records out 263176704 bytes (263 MB) copied, 24.3504 seconds, 10.8 MB/s






































































































