Cloning of ORACLE_HOME in Oracle 11g:
We have to clone ORACLE_HOME for few of the reasons like
1)Whenever a mount point disk space is insufficient.
2)Copy the software from one machine to other withour intstalling.
When we are doing Cloning of the ORACLE_HOME(i.e software) in Oracle11g we need to specify ORACLE_BASE by executing clone.pl perl script below is the experiment to do this ORACLE_HOME cloning for Oracle 10g ORACLE_HOME the steps remain the same only difference is ORACLE_BASE environment variable is not required.We have to request for the downtime of 30 minutes for performing this task because after cloning ORACLE_HOME
we need to verify and change the below things:
1).bash_profile(.profile on solaris,hp/ux,aix) file on linux.
2)/etc/oratab file(/var/opt/oracle/oratab on solaris) on linux.
3)listener.ora file in $TNS_ADMIN($ORACLE_HOME/network/admin) path.
4)expdp(export job script) and RMAN scripts or other scripts using ORACLE_HOME and ORACLE_BASE
Step 1:Collect the environment variable of your current ORACLE_HOME from the .bash_profile (.profile in any other unix environment):
Below are the current settings:
# .bash_profile
export ORACLE_BASE=/u01/oracle11g
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
Step 2:Set the Display environmet variable:
DISPLAY=":0.0" export DISPLAY
(or)
xclock -display machine_name:0.0
Step 3:Now,zipped and extract using tar in a mount point where you have sufficient diskspace:
$ export OLD_ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
$ cd $OLD_ORACLE_HOME/..
$ tar -cvf /u05/TAR_ORACLE_HOME1/OH.tar /u01/oracle11g/product/11.2.0/dbhome_1
Note:
tar -cvf destination_location source_location
Where:Destination_location=u05/TAR_ORACLE_HOME1/OH.tar
Source_location=/u01/oracle11g/product/11.2.0/dbhome_1
Step 4:Destination ORACLE_HOME Creation:
[oracle@testnode1 u03]$ cd /u05
[oracle@testnode1 u05]$ mkdir app
[oracle@testnode1 u05]$ cd app/
[oracle@testnode1 app]$ ls
[oracle@testnode1 app]$ mkdir db11g2
[oracle@testnode1 app]$ cd db11g2/
[oracle@testnode1 db11g2]$ mkdir product
[oracle@testnode1 db11g2]$ cd product/
[oracle@testnode1 product]$ pwd
/u05/app/db11g2/product
[oracle@testnode1 product]$ mkdir 11.2
[oracle@testnode1 product]$ cd 11.2/
[oracle@testnode1 11.2]$ pwd
/u05/app/db11g2/product/11.2
export ORACLE_BASE=/u05/app/db11g2
export ORACLE_HOME=/u05/app/db11g2/product/11.2
[oracle@testnode1 11.2]$ pwd
/u05/app/db11g2/product/11.2
$cd /u05/app/db11g2/product/11.2
$ tar -xvf /u05/TAR_ORACLE_HOME1/OH.tar
=>This will create the ORACLE_HOME as present is /u01 mount point in /u05 mount point
Next,
$export PATH=$ORACLE_HOME/bin:$PATH
$export ORACLE_HOME=/u05/app/db11g2/product/11.2/u01/oracle11g/product/11.2.0/dbhome_1
$echo $ORACLE_HOME
/u05/app/db11g2/product/11.2/u01/oracle11g/product/11.2.0/dbhome_1
$cd /u05/app/db11g2/product/11.2/u01/oracle11g/product/11.2.0/dbhome_1
$perl $ORACLE_HOME/clone/bin/clone.pl ORACLE_HOME=/u05/app/db11g2/product/11.2/u01/oracle11g/product/11.2.0/dbhome_1 ORACLE_BASE=/u05/app/db11g2/product/11.2/u01/oracle11g ORACLE_HOME_NAME=OraDb11g_home2
Result:
--------------------------------------
WARNING:
The following configuration scripts need to be executed as the "root" user.
/u05/app/db11g2/product/11.2/u01/oracle11g/product/11.2.0/dbhome_1/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_home_2 was successful.
Please check '/u01/oraInventory/logs/cloneActions2011-08-29_04-23-59PM.log' for more details.
[oracle@testnode1 dbhome_1]$
[oracle@testnode1 dbhome_1]$
[oracle@testnode1 dbhome_1]$
Step 5:Execute root.sh script:
Log in as "root"
[oracle@testnode1 dbhome_1]$ su
Password:
[root@testnode1 dbhome_1]# cd /u05/app/db11g2/product/11.2/u01/oracle11g/product/11.2.0/dbhome_1
[root@testnode1 dbhome_1]#pwd
/u05/app/db11g2/product/11.2/u01/oracle11g/product/11.2.0/dbhome_1
[root@testnode1 dbhome_1]# sh root.sh
Check /u05/app/db11g2/product/11.2/u01/oracle11g/product/11.2.0/dbhome_1/install/root_testnode1.in.bosch.com_2011-08-29_16-32-46.log
for the output of root script
Step 6:Copy the spfiles and password files:
Copy the spfiles and password files of Databases from previous $ORACLE_HOME/dbs( $ORACLE_HOME/database in windows)
to new $ORACLE_HOME/dbs path
Step 7:Post ORACLE_HOME clonning steps are as given below:
1)Modify .bash_profile file:
If we have created separate profile for each databases environment than we have update there and
check we are able to login the Database successfully
vi .bash_profile
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
export ORACLE_BASE=/u05/app/db11g2/product/11.2/u01/oracle11g
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export sq='sqlplus "/as sysdba"'
export ORACLE_SID=TESTDB1
:wq =>save and quit.
2)Modify /etc/oratab file.
Modify the /etc/oratab entry in linux with the neW ORACLE_HOME path
# Multiple entries with the same $ORACLE_SID are not allowed.
#
#
#TESTDB2:/u01/oracle11g/product/11.2.0/dbhome_1:Y
#TESTDB1:/u01/oracle11g/product/11.2.0/dbhome_1:Y
#New ORACLE_HOME
TESTDB2:/u05/app/db11g2/product/11.2/u01/oracle11g/product/11.2.0/dbhome_1:Y
TESTDB1:/u05/app/db11g2/product/11.2/u01/oracle11g/product/11.2.0/dbhome_1:Y
3)Modify listener.ora file
If we are not able to connect from other machine or client machine after ORACLE_HOME cloning don't get shocked as we have to update listener.ora with the new ORACLE_HOME path.Before modifying listener.ora file create a backup file
if it does not exists.Now you cand set the new ORACLE_HOME path here as given below.
[oracle@testnode1 oracle11g]$ cd $TNS_ADMIN
[oracle@testnode1 admin]$ pwd
/u05/app/db11g2/product/11.2/u01/oracle11g/product/11.2.0/dbhome_1/network/admin
[oracle@testnode1 admin]$ ls -altr
-rw-r--r-- 1 oracle dba 431 May 13 15:36 sqlnet.ora
-rw-r--r-- 1 oracle dba 959 Aug 29 17:15 tnsnames.ora
-rw-r--r-- 1 oracle dba 405 Aug 29 19:32 listener.ora_bkp29082011
-rw-r--r-- 1 oracle dba 461 Aug 29 19:34 listener.ora
drwxr-xr-x 3 oracle dba 4096 Aug 30 11:04 .
[oracle@testnode1 admin]$ vi listener.ora
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST =testnode1)(PORT = 1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = TESTDB1)
(ORACLE_HOME = /u05/app/db11g2/product/11.2/u01/oracle11g/product/11.2.0/dbhome_1)
)
(SID_DESC =
(SID_NAME = TESTDB2)
(ORACLE_HOME = /u05/app/db11g2/product/11.2/u01/oracle11g/product/11.2.0/dbhome_1)
)
)
:wq =>save and quit.
4)Modify expdp(export job script) and RMAN scripts or other scripts using ORACLE_HOME and ORACLE_BASE for their executions.
If we don't modify the Backup scripts or other scripts using ORACLE_HOME and ORACLE_BASE than next morning we might see backups or jobs getting failed so please make sure you modify the ORACLE_HOME and ORACLE_BASE.
Now,we can test ourself in our local system whether we are able to connect to the Databases with the new ORACLE_HOME and than request the end users to use the system.Thus our task can be successfully completed.
Hope it helps.
Enjoy DBA tasks.
Best regards,
Rafi.
Believe that anything you can imagine you can achieve it real. Having the devotion,passion and dedication to learn & Work in Oracle field mail me @ rafidba.alvi@gmail.com."Knowledge grows when it is shared". Best Career related guidance in Oracle DBA,Oracle Apps DBA,Oracle SOA Admin/Developers,ODI Developers,OBI Developers and Oracle Designers. "A Catalyst for Oracle DBA & Apps DBA Interviews,Jobs & Career."
Tuesday, August 30, 2011
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment