在生产系统运行一段时间后,由于数据库打了很多opatch补丁,如果想部署同样的版本环境(如:dataguard),全新安装需要打很多opatch补丁,非常麻烦。可以通过oracle_home克隆的方式快速部署oracle软件。
将生产数据库oracle二进制代码tar包(oracle10g 、11g R1)
cd /u01/app/oracle/product/11.1.0
tar -cvf /tmp/source.tar .
复制tar包至目标主机(目标主机按照全新安装方式配置环境信息及信息内核参数)
scp /tmp/source.tar 192.168.1.1:/u01/app/oracle/product
cd /u01/app/oracle/product/
tar -xvf ./source.tar
如果希望目标平台保持和原生产平台的oracle_home路径一致,可以修改inventory.xml中记录的HOME路径
cd $ORACLE_BASE/oraInventory/ContentsXML
vi inventory.xml
HOME NAME=”Ora11g_gridinfrahome1”
LOC=”/oracle/app/oracle/product/11.1.0.old” TYPE=”O” IDX=”1” CRS=”true”/
在执行oralce_home克隆
cd $ORACLE_HOME/clone/bin perl clone.pl ORACLE_HOME=”/oracle/app/oracle/product/11.1.0”
ORACLE_HOME_NAME=”clone_home_test”
ORACLE_BASE=”/oracle/app/oracle”
11.2之后需要增加参数:
The $ORACLE_HOME/rdbms/lib/config.c contains the following lines:
define SS_DBA_GRP “”
define SS_OPER_GRP “”
define SS_ASM_GRP “”
In 11.2, the syntax for cloning an ORACLE_HOME has changed.
The clone.pl script has to be called using the following new variables:
OSDBA_GROUP=OSDBA_privileged_group
OSOPER_GROUP=OSOPER_privileged_group$ORACLE_HOME/perl/bin/perl clone.pl ORACLE_BASE=”/u01/app/oracle”
ORACLE_HOME=”/u01/app/oracle/product/11.2.0.4/dbhome_1”
OSDBA_GROUP=OSDBA_privileged_group
OSOPER_GROUP=OSOPER_privileged_group -defaultHomeName
After cloning has completed, connecting to a database as SYSDBA gives the following error:
ORA-01031: insufficient privileges
Edit $ORACLE_HOME/rdbms/lib/config.c and set the correct groups:
define SS_DBA_GRP “dba”
define SS_OPER_GRP “dba”
define SS_ASM_GRP “dba”
Generate a new config.o and relink the oracle executable
cd $ORACLE_HOME/rdbms/lib
mv config.o config.bck
make -f ins_rdbms.mk ioracle