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.