怎样重命名或者修改 Oracle_Home
How to move or rename Oracle Home
转载自:https://pierreforstmanndotcom.wordpress.com/2014/09/30/how-to-move-or-rename-oracle-home/
也可参考oracle的官方文档:http://docs.oracle.com/cd/B14117_01/em.101/b12140/2_oui_using.htm#i1007152
If you want to rename Oracle Home you usually need to:
1. uninstall existing Oracle Home
2. reinstall Oracle software to the right directory that will be the new Oracle Home.
You cannot just move Oracle Home because installing Oracle Home is not just copying executable files. However uninstalling and installing again Oracle software takes some time.
If you want to do it quickly there is another way to do it using Oracle software cloning:
1. Move Oracle Home using OS command
2. Clone the new Oracle Home using Oracle Universal Installer (OUI)
3. Remove the old Oracle Home from Oracle inventory with OUI.
Here is a full example with Oracle Database 12.1.0.1 Entreprise Edition on Oracle Linux 6.4 64bit. All steps have been with run oracle account unless otherwise stated.
Step 1: move Oracle Home
First connect as Oracle software owner:
$ id oracle uid=54231(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54323(oper)
Check that no executable is currently running from this Oracle Home (you should stop any Oracle database instance, listener, RMAN or SQL*Plus sessions):
$ ps -fu oracle UID PID PPID C STIME TTY TIME CMD oracle 2692 2691 0 18:01 pts/0 00:00:00 -bash oracle 3277 2692 0 18:09 pts/0 00:00:00 ps -fu oracle
Current Oracle Home is /u01/app/oracle/product/12.1.0/db_1 and I will rename it to /u01/app/oracle/product/12.1.0.1/db_1 so that directory name has the full 4 digit version number:
$ $ORACLE_HOME/OPatch/opatch lsinv -all
Oracle Interim Patch Installer version 12.1.0.1.0
Copyright (c) 2012, Oracle Corporation. All rights reserved.
Oracle Home : /u01/app/oracle/product/12.1.0/db_1
Central Inventory : /u01/app/oraInventory
from : /u01/app/oracle/product/12.1.0/db_1/oraInst.loc
OPatch version : 12.1.0.1.0
OUI version : 12.1.0.1.0
Log file location : /u01/app/oracle/product/12.1.0/db_1/cfgtoollogs/opatch/opatch2014-09-30_18-08-14PM_1.log
Lsinventory Output file location : /u01/app/oracle/product/12.1.0/db_1/cfgtoollogs/opatch/lsinv/lsinventory2014-09-30_18-08-14PM.txt
--------------------------------------------------------------------------------
List of Oracle Homes:
Name Location
OraDB12Home1 /u01/app/oracle/product/12.1.0/db_1
Installed Top-level Products (1):
Oracle Database 12c 12.1.0.1.0
There are 1 products installed in this Oracle Home.
There are no Interim patches installed in this Oracle Home.
--------------------------------------------------------------------------------
OPatch succeeded.
$
Move the directory with the mv command:
$ pwd /u01/app/oracle/product $ mv 12.1.0 12.1.0.1
Step 2: clone the Oracle Home
Of course you must use new Oracle Home path for runInstaller and you must also specify new Oracle Home directory as ORACLE_HOME parameter and set ORACLE_BASE parameter (I have also added silent mode (-silent) because graphical mode is not needed and -waitForCompletion so that OUI command is not started in the background):
$ /u01/app/oracle/product/12.1.0.1/db_1/oui/bin/runInstaller \
-clone \
-silent \
-defaultHomeName
ORACLE_HOME=/u01/app/oracle/product/12.1.0.1/db_1 \
ORACLE_BASE=/u01/app/oracle \
-waitForCompletion
Starting Oracle Universal Installer...
Checking swap space: must be greater than 500 MB. Actual 4031 MB Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2014-09-30_06-35-53PM. Please wait ...Oracle Universal Installer, Version 12.1.0.1.0 Production
Copyright (C) 1999, 2013, Oracle. All rights reserved.
You can find the log of this install session at:
/u01/app/oraInventory/logs/cloneActions2014-09-30_06-35-53PM.log
.................................................................................................... 100% Done.
Installation in progress (Tuesday, September 30, 2014 6:36:03 PM CEST)
................................................................................. 81% Done.
Install successful
Linking in progress (Tuesday, September 30, 2014 6:36:08 PM CEST)
. 82% Done.
Link successful
Setup in progress (Tuesday, September 30, 2014 6:36:47 PM CEST)
.......... 100% Done.
Setup successful
Saving inventory (Tuesday, September 30, 2014 6:36:48 PM CEST)
Saving inventory complete
Configuration in progress (Tuesday, September 30, 2014 6:37:08 PM CEST)
Configuration complete
End of install phases.(Tuesday, September 30, 2014 6:37:09 PM CEST)
WARNING:
The following configuration scripts need to be executed as the "root" user.
/u01/app/oracle/product/12.1.0.1/db_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/cloneActions2014-09-30_06-35-53PM.log' for more details.
You can see that OUI has linked again the binaries and executables and run some configuration steps.
You need to run root.sh:
# id
uid=0(root) gid=0(root) groups=0(root)
# /u01/app/oracle/product/12.1.0.1/db_1/root.sh
Check /u01/app/oracle/product/12.1.0.1/db_1/install/root_ol6twsf_2014-09-30_18-38-46.log for the output of root script
# cat /u01/app/oracle/product/12.1.0.1/db_1/install/root_ol6twsf_2014-09-30_18-38-46.log
Performing root user operation for Oracle 12c
The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /u01/app/oracle/product/12.1.0.1/db_1
Copying dbhome to /usr/local/bin ...
Copying oraenv to /usr/local/bin ...
Copying coraenv to /usr/local/bin ...
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.
Modify /etc/oratab for existing database that is using the Oracle Home that has been moved (because this has not been done by OUI):
$ tail -1 /etc/oratab CDB12C:/u01/app/oracle/product/12.1.0.1/db_1:N $
Reset current environment:
$ . oraenv ORACLE_SID = [CDB12C] ? The Oracle base remains unchanged with value /u01/app/oracle $
Check Oracle inventory:
$ $ORACLE_HOME/OPatch/opatch lsinv -all
Oracle Interim Patch Installer version 12.1.0.1.0
Copyright (c) 2012, Oracle Corporation. All rights reserved.
Oracle Home : /u01/app/oracle/product/12.1.0.1/db_1
Central Inventory : /u01/app/oraInventory
from : /u01/app/oracle/product/12.1.0.1/db_1/oraInst.loc
OPatch version : 12.1.0.1.0
OUI version : 12.1.0.1.0
Log file location : /u01/app/oracle/product/12.1.0.1/db_1/cfgtoollogs/opatch/opatch2014-09-30_18-40-48PM_1.log
Lsinventory Output file location : /u01/app/oracle/product/12.1.0.1/db_1/cfgtoollogs/opatch/lsinv/lsinventory2014-09-30_18-40-48PM.txt
--------------------------------------------------------------------------------
List of Oracle Homes:
Name Location
OraDB12Home1 /u01/app/oracle/product/12.1.0/db_1
OraHome1 /u01/app/oracle/product/12.1.0.1/db_1
Installed Top-level Products (1):
Oracle Database 12c 12.1.0.1.0
There are 1 products installed in this Oracle Home.
There are no Interim patches installed in this Oracle Home.
--------------------------------------------------------------------------------
OPatch succeeded.
$
Noe that the old Oracle Home is still registered and that the new Oracle Home has been added by the cloning step.
Step 3: remove the old Oracle Home from Oracle Inventory
You need to use OUI and give old Oracle Home name as ORACLE_HOME parameter with -detachHome option:
$ $ORACLE_HOME/oui/bin/runInstaller \
-silent \
-detachHome \
ORACLE_HOME=/u01/app/oracle/product/12.1.0/db_1 \
-waitForCompletion
Starting Oracle Universal Installer...
Checking swap space: must be greater than 500 MB. Actual 4027 MB Passed
The inventory pointer is located at /etc/oraInst.loc
'DetachHome' was successful.
$
Check that old Oracle Home has been removed from Oracle Inventory:
$ $ORACLE_HOME/OPatch/opatch lsinv -all
Oracle Interim Patch Installer version 12.1.0.1.0
Copyright (c) 2012, Oracle Corporation. All rights reserved.
Oracle Home : /u01/app/oracle/product/12.1.0.1/db_1
Central Inventory : /u01/app/oraInventory
from : /u01/app/oracle/product/12.1.0.1/db_1/oraInst.loc
OPatch version : 12.1.0.1.0
OUI version : 12.1.0.1.0
Log file location : /u01/app/oracle/product/12.1.0.1/db_1/cfgtoollogs/opatch/opatch2014-09-30_18-44-19PM_1.log
Lsinventory Output file location : /u01/app/oracle/product/12.1.0.1/db_1/cfgtoollogs/opatch/lsinv/lsinventory2014-09-30_18-44-19PM.txt
--------------------------------------------------------------------------------
List of Oracle Homes:
Name Location
OraHome1 /u01/app/oracle/product/12.1.0.1/db_1
Installed Top-level Products (1):
Oracle Database 12c 12.1.0.1.0
There are 1 products installed in this Oracle Home.
There are no Interim patches installed in this Oracle Home.
--------------------------------------------------------------------------------
OPatch succeeded.
$
At this step the Oracle Home renaming has been completed and you need to restart database instance(s) and Oracle Net listener(s) and to check that everything is OK:
$ sqlplus / as sysdba SQL*Plus: Release 12.1.0.1.0 Production on Tue Sep 30 18:44:40 2014 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to an idle instance. SYS@CDB12C>startup ORACLE instance started. Total System Global Area 1035534336 bytes Fixed Size 2296184 bytes Variable Size 402654856 bytes Database Buffers 624951296 bytes Redo Buffers 5632000 bytes Database mounted. Database opened. SYS@CDB12C>show parameter spfile NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ spfile string /u01/app/oracle/product/12.1.0 .1/db_1/dbs/spfileCDB12C.ora
You also need to check the scripts run at boot time to start automatically database instance(s) and Oracle Net listener(s) and to modify them if they are using hard-coded Oracle Home directory name.
About OUI documentation: I have not been able to find Oracle Universal Installer and OPatch User’s Guide in 12.1 database documentation but you can find OUI User’s Guide there.