Data

7 nov, 2012

Como realizar Clone de ORACLE HOME

Publicidade
Este procedimento tem como principal objetivo realizar um CLONE de um ORACLE HOME existente em um instalação do Oracle Database (10g ou 11g) em ambiente Linux/Unix. O Clone consiste em um cópia exata de arquivos binários e arquivos de configuração.
Algumas características relevantes:
  • Otimização de tempo para instalação de um novo ORACLE HOME;
  • Dispensa necessidade de mídia de instalação;
  • Não necessita indisponibilidade do ORACLE HOME existente;
  • Segurança (não necessita transferência de de arquivos).

Procedimento

Passo 1 (Pré-Requisito)

Instalação do Oracle Database (10g ou 11g).

Passo 2

Executar uma cópia do ORACLE HOME de origem:
* Executar os passos abaixo como usuário “root”
cp -Rpf <ORACLE_HOME_ORIGEM> <ORACLE_HOME_DESTINO>
** Observações **
Não é necessário realizar “shutdown” de nenhum Database em execução neste ORACLE HOME.
É recomendável a verificação de espaço em disco do File System de destino.
Exemplo:
cp -Rp /u01/app/oracle/product/11.2.0.3/dbhome_1 /u01/app/oracle/product/11.2.0.3/dbhome_

Passo 3

Ajustar links simbólicos.
* Executar os passos abaixo como usuário “root”
Neste passo, deve-se conferir todos os links simbólicos do ORACLE HOME de destino. Procurar por
possíveis links que ficaram com PATH do ORACLE HOME de origem. Caso existam, devem ser recriados.
Também é importante conferir todas as as permissões (devem ser iguais ao ORACLE HOME de Origem – a dica é utilizar  a opção “p” do comando “cp” ou “tar”).
Abaixo as permissões comuns:
<ORACLE_HOME_DESTINO>/lib
rm libclntsh.so.10.1
ln -s libclntsh.so libclntsh.so.10.1
<ORACLE_HOME_DESTINO>/bin
rm lbuilder
ln -s ../nls/lbuilder/lbuilder  lbuilder

Passo 4

Ajustar permissões.
* Executar os passos abaixo como usuário “root”
div>chown -R oracle:oinstall <ORACLE_HOME_DESTINO>

Passo 5

Realizar o clone.
Garantir que o arquivo “/etc/oraInst.loc” exista. Se não existir, crie-o e utilize a opção “inventory_loc=<path_to_oraInventory>” no comando abaixo, especificando o caminho.
* Executar os passos abaixo como usuário “root”
<ORACLE_HOME_DESTINO>/clone/bin
perl clone.pl ORACLE_HOME="<ORACLE_HOME_DESTINO>" ORACLE_HOME_NAME="<NOME_UNICO_NOVO_HOME>" ORACLE_BASE="<ORACLE_BASE>" OSDBA_GROUP=<OSDBA_privileged_group> OSOPER_GROUP=<OSOPER_privileged_group>
Exemplo:
cd /u01/app/oracle/product/11.2.0.3/dbhome_2/clone/bin
perl clone.pl ORACLE_HOME="/u01/app/oracle/product/11.2.0.3/dbhome_2" ORACLE_HOME_NAME="OraDb11g_dbhome_2" ORACLE_BASE="/u01/app/oracle" OSDBA_GROUP=dba OSOPER_GROUP=oinstall
** Observações **
Se o oraInst.loc existir em outro caminho, deve-se editar o arquivo  <ORACLE_HOME_DESTINO>/clone/config/cs.properties e colocar a opção com o caminho correto: “-invPtrLoc <path>/oraInst.loc“.
Caso não funcione, pode-se forçar com a utilização da opção:  “-ignoreSysPrereqs“.
Antes de continuar, confira se o nome de ORACLE HOME (UNIQUE_NAME) não é utilizado por nenhum outro ORACLE HOME (<ORACLE_BASE>/oraInventory/ContentsXML/inventory.xml).
Caso queria utilizar um ORACLE HOME existente (NOME e/ou PATH), primeiro remova este ORACLE HOME do Inventory:
./runInstaller -detachHome ORACLE_HOME=<target_home>
Exemplo:
[oracle@servidor1 bin]$ perl clone.pl ORACLE_HOME="/u01/app/oracle/product/11.2.0.3/dbhome_2" ORACLE_HOME_NAME="OraDb11g_ dbhome_2" ORACLE_BASE="/u01/app/oracle" OSDBA_GROUP=dba OSOPER_GROUP=oinstall
./runInstaller -clone -waitForCompletion  "ORACLE_HOME=/u01/app/oracle/product/11.2.0.3/dbhome_2" "ORACLE_HOME_NAME=OraDb11g_dbhome_2" "ORACLE_BASE=/u01/app/oracle" "oracle_install_OSDBA=dba" "oracle_install_OSOPER=oinstall" -silent -noConfig -nowait
Starting Oracle Universal Installer...Checking swap space: must be greater than 500 MB.   Actual 24575 MB    Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2012-08-14_04-40-13PM. Please wait ...Oracle Universal Installer, Version 11.2.0.3.0 Production
Copyright (C) 1999, 2011, Oracle. All rights reserved.You can find the log of this install session at:
/u01/app/oraInventory/logs/cloneActions2012-08-14_04-40-13PM.log
............................................................................... 100% Done.Installation in progress (Tuesday, August 14, 2012 4:40:21 PM AMT)
...............................................................................  79% Done.
Install successfulLinking in progress (Tuesday, August 14, 2012 4:40:25 PM AMT)
Link successfulSetup in progress (Tuesday, August 14, 2012 4:40:45 PM AMT)
Setup successfulEnd of install phases.(Tuesday, August 14, 2012 4:41:06 PM AMT)
WARNING:
The following configuration scripts need to be executed as the "root" user.
/u01/app/oracle/product/11.2.0.3/dbhome_2/root.sh
To execute the configuration scripts:
1. Open a terminal window
2. Log in as "root"
3. Run the scripts

The cloning of OraDb11g_dbhome_2 was successful.
Please check '/u01/app/oraInventory/logs/cloneActions2012-08-14_04-40-13PM.log' for more details.

Passo 6

Executar “root.sh”.
* Executar os passos abaixo como usuário “root”
<ORACLE_HOME_DESTINO>/root.sh
Exemplo:
[root@servidor1 dbhome_2]# ./root.sh
Check /u01/app/oracle/product/11.2.0.3/dbhome_2/install/root_servidor1_2012-08-14_16-43-24.log for the output of root script
[root@dm02db01 dbhome_2]#
[root@dm02db01 dbhome_2]# cat /u01/app/oracle/product/11.2.0.3/dbhome_2/install/root_servidor1_2012-08-14_16-43-24.logPerforming root user operation for Oracle 11gThe following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME=  /u01/app/oracle/product/11.2.0.3/dbhome_2Entries 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 script.
Now product-specific root actions will be performed.
Finished product-specific root actions.
[root@dm02db01 dbhome_2]#
** Observações **
Verificar o arquivo de Inventário do Oracle Universal Installer (OUI).
cat /u01/app/oraInventory/ContentsXML/inventory.xml
* Observar novo ORACLE HOME
(...)<HOME NAME="OraDb11g_dbhome_2" LOC="/u01/app/oracle/product/11.2.0.3/dbhome_2" TYPE="O" IDX="4">
<NODE_LIST>
<NODE NAME="servidor1"/>
<NODE NAME="servidor2"/>
<NODE NAME="servidor3"/>
<NODE NAME="servidor4"/>
</NODE_LIST>(...)
Referências
Cloning An Existing Oracle11g Release 2 (11.2.0.x) RDBMS Installation Using OUI [MOS ID 1221705.1]
Lembrando que este procedimento é homologado pela Oracle e tem o mesmo efeito de uma instalação comum via OUI.
Até a próxima.