This post gives the steps for changing the location of ORACLE_BASE, ORACLE_HOME, oracle Inventory and Grid Infrastructure in a Oracle restart setup. The current and new paths for these items are given in the table below.
As could be seen from the locations the GI home is a 12.1 while the DB runs out of a 11.2 (11.2.0.4) home.
1. It is assumed the mount point /u01 exists. Create the two base directories first, that is the Oracle base and oracle inventory directories and set the necessary permissions.
12. Next step is to move the Oracle home to new location. As this is a role separated setup, write permission must be granted to oracle user for admin and diag directories inside Oracle base.
Item | Current Location | Future Location |
---|---|---|
ORACLE_BASE | /opt/app/oracle | /u01/app/oracle |
ORACLE_HOME | /opt/app/oracle/product/11.2.0/dbhome_1 | /u01/app/oracle/product/11.2.0/dbhome_1 |
GI_HOME | /opt/app/oracle/product/12.1.0/grid | /u01/app/oracle/product/12.1.0/grid |
Oracle Inventory | /opt/app/oraInventory | /u01/app/oraInventory |
As could be seen from the locations the GI home is a 12.1 while the DB runs out of a 11.2 (11.2.0.4) home.
1. It is assumed the mount point /u01 exists. Create the two base directories first, that is the Oracle base and oracle inventory directories and set the necessary permissions.
# cd /u01/2. Stop the database and the HA service.
# mkdir -p app/oracle
# mkdir -p app/oraInventory
# chmod 775 oracle
# chmod 770 oraInventory
# chown oracle:oinstall oracle
# chown grid:oinstall oraInventory
srvctl stop database -d westdb3. Detach the current GI home from the inventory.
crsctl stop has
[grid@west bin]$ ./runInstaller -silent -waitforcompletion -detachHome ORACLE_HOME='/opt/app/oracle/product/12.1.0/grid'Check the GI home was removed from the inventory by checking in the inventory.xml
Starting Oracle Universal Installer...
Checking swap space: must be greater than 500 MB. Actual 4097 MB Passed
The inventory pointer is located at /etc/oraInst.loc
'DetachHome' was successful.
<HOME NAME="OraGI12Home1" LOC="/opt/app/oracle/product/12.1.0/grid" TYPE="O" IDX="1"REMOVED="T"/>4. Create the future GI Home location.
mkdir -p /u01/app/oracle/product/12.1.0/Copy the current grid folder to the future location.
cd /opt/app/oracle/product/12.1.05. Clone the GI Home in the new location. Pass the new Oracle base, GI home and oracle inventory locations to the clone script.
cp -pR grid /u01/app/oracle/product/12.1.0/
cd /u01/app/oracle/product/12.1.0/grid/clone/bin6. After running the orainstRoot.sh the inventory location gets updated in the /etc/oraInst.loc
$ perl clone.pl -silent ORACLE_BASE=/u01/app/oracle ORACLE_HOME=/u01/app/oracle/product/12.1.0/grid
ORACLE_HOME_NAME=OraGI12Home1 INVENTORY_LOCATION=/u01/app/oraInventory CRS=true
./runInstaller -clone -waitForCompletion "ORACLE_BASE=/u01/app/oracle""ORACLE_HOME=/u01/app/oracle/product/12.1.0/grid""ORACLE_HOME_NAME=OraGI12Home1""INVENTORY_LOCATION=/u01/app/oraInventory" -silent -paramFile /u01/app/oracle/product/12.1.0/grid/clone/clone_oraparam.ini
Starting Oracle Universal Installer...
Checking Temp space: must be greater than 500 MB. Actual 17853 MB Passed
Checking swap space: must be greater than 500 MB. Actual 4097 MB Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2019-03-07_06-42-57PM. Please wait ...You can find the log of this install session at:
/u01/app/oraInventory/logs/cloneActions2019-03-07_06-42-57PM.log
.................................................. 5% Done.
.................................................. 10% Done.
.................................................. 15% Done.
.................................................. 20% Done.
.................................................. 25% Done.
.................................................. 30% Done.
.................................................. 35% Done.
.................................................. 40% Done.
.................................................. 45% Done.
.................................................. 50% Done.
.................................................. 55% Done.
.................................................. 60% Done.
.................................................. 65% Done.
.................................................. 70% Done.
.................................................. 75% Done.
.................................................. 80% Done.
.................................................. 85% Done.
..........Could not backup file /u01/app/oracle/product/12.1.0/grid/root.sh to /u01/app/oracle/product/12.1.0/grid/root.sh.ouibak
Could not backup file /u01/app/oracle/product/12.1.0/grid/rootupgrade.sh to /u01/app/oracle/product/12.1.0/grid/rootupgrade.sh.ouibak
Copy files in progress.
Copy files successful.
Link binaries in progress.
Link binaries successful.
Setup files in progress.
Setup files successful.
Setup Inventory in progress.
Setup Inventory successful.
Finish Setup successful.
The cloning of OraGI12Home1 was successful.
Please check '/u01/app/oraInventory/logs/cloneActions2019-03-07_06-42-57PM.log' for more details.
Setup Oracle Base in progress.
Setup Oracle Base successful.
.................................................. 95% Done.
As a root user, execute the following script(s):
1. /u01/app/oraInventory/orainstRoot.sh
2. /u01/app/oracle/product/12.1.0/grid/root.sh
.................................................. 100% Done.
You have new mail in /var/spool/mail/grid
/u01/app/oraInventory/orainstRoot.sh7. Running the root.sh will generate a log file which will have commands to run to create a Oracle restart setup or a cluster setup.
cat /etc/oraInst.loc
inventory_loc=/u01/app/oraInventory
inst_group=oinstall
Check /u01/app/oracle/product/12.1.0/grid/install/root_west.domain.net_2019-03-07_18-45-23.log for the output of root script8. Before running the command mentioned in the log file, the existing Oracle restart configuration need to be de-configured. If not following error will occur.
# tail -f /u01/app/oracle/product/12.1.0/grid/install/root_west.domain.net_2019-03-07_18-45-23.log
Now product-specific root actions will be performed.
To configure Grid Infrastructure for a Stand-Alone Server run the following command as the root user:
/u01/app/oracle/product/12.1.0/grid/perl/bin/perl -I/u01/app/oracle/product/12.1.0/grid/perl/lib -I/u01/app/oracle/product/12.1.0/grid/crs/install /u01/app/oracle/product/12.1.0/grid/crs/install/roothas.pl
Using configuration parameter file: /u01/app/oracle/product/12.1.0/grid/crs/install/crsconfig_paramsTo de-configure run the following command.
2019/03/07 18:46:12 CLSRSC-350: Cannot configure two CRS instances on the same cluster
2019/03/07 18:46:14 CLSRSC-352: CRS is already configured on this node for the CRS home location /opt/app/oracle/product/12.1.0/grid
# /u01/app/oracle/product/12.1.0/grid/perl/bin/perl roothas.pl -deconfig -force9. Run the command to create the Oracle restart setup.
Using configuration parameter file: ./crsconfig_params
2019/03/07 18:47:50 CLSRSC-337: Successfully deconfigured Oracle Restart stack
# /u01/app/oracle/product/12.1.0/grid/perl/bin/perl -I/u01/app/oracle/product/12.1.0/grid/perl/lib -I/u01/app/oracle/product/12.1.0/grid/crs/install /u01/app/oracle/product/12.1.0/grid/crs/install/roothas.pl10. Check the GI home added to inventory in new inventory location.
Using configuration parameter file: /u01/app/oracle/product/12.1.0/grid/crs/install/crsconfig_params
LOCAL ADD MODE
Creating OCR keys for user 'grid', privgrp 'oinstall'..
Operation successful.
LOCAL ONLY MODE
Successfully accumulated necessary OCR keys.
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
CRS-4664: Node west successfully pinned.
2019/03/07 18:48:26 CLSRSC-330: Adding Clusterware entries to file 'oracle-ohasd.service'
west 2019/03/07 13:18:58 /u01/app/oracle/product/12.1.0/grid/cdata/west/backup_20190307_131858.olr 459864538
CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'west'
CRS-2673: Attempting to stop 'ora.evmd' on 'west'
CRS-2677: Stop of 'ora.evmd' on 'west' succeeded
CRS-2793: Shutdown of Oracle High Availability Services-managed resources on 'west' has completed
CRS-4133: Oracle High Availability Services has been stopped.
CRS-4123: Oracle High Availability Services has been started.
2019/03/07 18:50:11 CLSRSC-327: Successfully configured Oracle Restart for a standalone server
<HOME NAME="OraGI12Home1" LOC="/u01/app/oracle/product/12.1.0/grid" TYPE="O" IDX="1" CRS="true"/>11. Add listener and ASM to the Oracle restart config.
srvctl add listener -l listener -o /u01/app/oracle/product/12.1.0/grid -p 1521
srvctl start listener -l listener
srvctl add asm -l listener -p +data/asm/ASMPARAMETERFILE/REGISTRY.253.881942589 -d "/dev/sd*"
srvctl start asm
crsctl stat res -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.DATA.dg
ONLINE ONLINE west STABLE
ora.FLASH.dg
ONLINE ONLINE west STABLE
ora.LISTENER.lsnr
ONLINE ONLINE west STABLE
ora.asm
ONLINE ONLINE west Started,STABLE
ora.ons
OFFLINE OFFLINE west STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.cssd
1 ONLINE ONLINE west STABLE
ora.diskmon
1 OFFLINE OFFLINE STABLE
ora.evmd
1 ONLINE ONLINE west STABLE
--------------------------------------------------------------------------------
12. Next step is to move the Oracle home to new location. As this is a role separated setup, write permission must be granted to oracle user for admin and diag directories inside Oracle base.
cd $ORACLE_BASECreate the new Oracle home location and copy the current Oracle home (dbhome_1) to new location.
chmod 775 admin diag
# cd /u01/app/oracle/product13. Clone the DB Home
# mkdir -p 11.2.0
# cd /opt/app/oracle/product/11.2.0
# cp -pR dbhome_1 /u01/app/oracle/product/11.2.0/
$ cd /u01/app/oracle/product/11.2.0/dbhome_1/clone/Check the inventory is updated with new DB home location.
/u01/app/oracle/product/11.2.0/dbhome_1/perl/bin/perl clone.pl ORACLE_BASE="/u01/app/oracle/" ORACLE_HOME="/u01/app/oracle/product/11.2.0/dbhome_1" OSDBA_GROUP=dba OSOPER_GROUP=oper -defaultHomeName
./runInstaller -clone -waitForCompletion "ORACLE_BASE=/u01/app/oracle/""ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1""oracle_install_OSDBA=dba""oracle_install_OSOPER=oper" -defaultHomeName -defaultHomeName "CRS=true" -silent -noConfig -nowait
Starting Oracle Universal Installer...
Checking swap space: must be greater than 500 MB. Actual 4097 MB Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2019-03-07_07-21-14PM. Please wait ...Oracle Universal Installer, Version 11.2.0.4.0 Production
Copyright (C) 1999, 2013, Oracle. All rights reserved.
You can find the log of this install session at:
/u01/app/oraInventory/logs/cloneActions2019-03-07_07-21-14PM.log
.................................................................................................... 100% Done.
Installation in progress (Thursday, 7 March 2019 19:21:31 o'clock IST)
........................................................................... 75% Done.
Install successful
Linking in progress (Thursday, 7 March 2019 19:21:43 o'clock IST)
Link successful
Setup in progress (Thursday, 7 March 2019 19:22:43 o'clock IST)
Setup successful
End of install phases.(Thursday, 7 March 2019 19:23:08 o'clock IST)
WARNING:
The following configuration scripts need to be executed as the "root" user.
/u01/app/oracle/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 OraHome1 was successful.
Please check '/u01/app/oraInventory/logs/cloneActions2019-03-07_07-21-14PM.log' for more details.
<HOME NAME="OraDb11g_home1" LOC="/u01/app/oracle/product/11.2.0/dbhome_1" TYPE="O" IDX="2"/>14. Update the /etc/oratab with the new Oracle home location. Add the database to the Oracle restart configuration.
srvctl add database -d westdb -o /u01/app/oracle/product/11.2.0/dbhome_1 -p +DATA/westdb/spfilewestdb.ora -a "data,flash"Certain init parameters will refer to paths under previous Oracle base. Change them to reflect the current Oracle base.
srvctl start database -d westdb
show parameter diagnostic_dest15. Stop the database and the Oracle restart stack. Rename the old base location (/opt/app/) to something temporary (/opt/appx/) and start the database. If all steps are followed there shouldn't be any references to previous location. Current oracle base directory could also be found out with orabase.
diagnostic_dest string /opt/app/oracle
alter system set diagnostic_dest='/u01/app/oracle' scope=both;
alter system set audit_file_dest='/u01/app/oracle/admin/westdb/adump' scope=spfile;
mkdir -p u01/app/oracle/admin/westdb/adump
$ orabaseOnce certain no references to old locations remain those could be removed.
/u01/app/oracle