Como realizar Clone de ORACLE HOME
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 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_2
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”
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 mesmo e utilize a opção “inventory_loc=<path_to_oraInventory>” no comando abaixo, especificando o caminho.
* Executar os passos abaixo como usuário “root”
cd <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 -wait
ForCompletion "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. Y
ou 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 successful Linking in progress (Tuesday, August 14, 2012 4:40:25 PM AMT) Link successful
Setup in progress (Tuesday, August 14, 2012 4:40:45 PM AMT)
Setup successful End 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.log
Performing root user operation for Oracle 11g
The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /u01/app/oracle/product/11.2.0.3/dbhome_2
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 script. Now product-specific root actions will be performed.
Finished product-specific root actions.
[root@dm02db01 dbhome_2]#
** Observações **
Verificar o aquivo 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]
* Este post também pode ser encontrado em:
Lembrando que este procedimento é homologado pela Oracle e tem o mesmo efeito de uma instalação comum via OUI.
Até a próxima.