始创于2000年 股票代码:831685
咨询热线:0371-60135900 注册有礼 登录
  • 挂牌上市企业
  • 60秒人工响应
  • 99.99%连通率
  • 7*24h人工
  • 故障100倍补偿
您的位置: 网站首页 > 帮助中心>文章内容

复制Oracle Home所需要注意的几个问题

发布时间:  2012/9/17 17:27:20

  近日通过复制Oracle Home($ORACLE_HOME)目录来安装Oracle的时候遇到了几个问题。

      首先建好Oracle的相关OS用户、组还有调整好内核参数,当然还有设置Oracle用户的一些环境变量(~/.bash_profile),对于正规安装过Oracle的朋友来说这都是浮云。-
 


      如果源机和目标机的Oracle Home目录一样,用户、组也一样,那直接复制过去后重新用root用户运行一下root.sh就可以了,非常简单。

      如果源机和目标机的Oracle Home目录一样,用户、组不一样(主要是用户ID不一样),复制过去后要重新设定一下文件所属 chown -R 用户:组 $ORACLE_HOME,然后 relink all(relink all可以参考这篇文章),再运行一下root.sh就可以了,其实也没什么大不了的。

      如果用户、组和Oracle Home目录都不一样,就比较麻烦了,也就是本文的重点内容,一下模拟这个过程。

      先介绍一下环境,源机:

1 [Oracle@test01 oracle]$ echo $ORACLE_BASE  

2 /u01/app/oracle 

3 [oracle@test01 oracle]$ echo $ORACLE_HOME  

4 /u01/app/oracle/11.2.0.2 

5 [oracle@test01 oracle]$ id 

6 uid=1003(oracle) gid=501(oracle) groups=501(oracle)

      目标机:

1 [ora11g@test06 ora11g]$ echo $Oracle_BASE  

2 /u01/app/ora11g 

3 [ora11g@test06 ora11g]$ echo $ORACLE_BASE  

4 /u01/app/ora11g/product/11.2.0.2/db_1 

5 [ora11g@test06 ora11g]$ id 

6 uid=731(ora11g) gid=700(oradba) groups=700(oradba)

      首先在源机上对Oracle Home打包,要用root用户执行,并且保留相关的权限,复制到目标机器上:

1 [Oracle@test01 oracle]$ echo $ORACLE_HOME 

2 /u01/app/oracle/11.2.0.2 

3 [oracle@test01 oracle]$ exit 

4 [oracle@test01 ~]$ cd /u01/app/oracle/ 

5 [root@test01 oracle]# tar zcvfp 11.2.0.2.tar.gz ./11.2.0.2/ 

6 [root@test01 oracle]# scp ./11.2.0.2.tar.gz 10.168.0.206:/u01/app/ora11g/product/11.2.0.2/

      下文就和源机没有什么关系了,在目标机上解压这个压缩包,并替换新的Oracle Home目录,当然还要将文件归属搞好:

01 [root@test06 ~]# cd /u01/app/ora11g/product/11.2.0.2/ 

02 [root@test06 11.2.0.2]# tar zxvf 11.2.0.2.tar.gz  

03 [root@test06 11.2.0.2]# ll 

04 total 2129880 

05 drwxr-xr-x 75   1003 oradba       4096 Nov 20 22:19 11.2.0.2 

06 -rw-r--r--  1 root   root   2178854174 Jan 21 09:35 11.2.0.2.tar.gz 

07 drwxr-xr-x  2 ora11g oradba       4096 Jan 21 09:47 db_1 

08 [root@test06 11.2.0.2]# rm -rf db_1/ 

09 [root@test06 11.2.0.2]# mv 11.2.0.2 db_1 

10 [root@test06 11.2.0.2]# chown -R ora11g:oradba ./db_1/

      修改 $Oracle_HOME/rdbms/lib/config.c 将Oracle用户的组名改过来,relink all一下就可以了:

01 [root@test06 ~]# su - ora11g 

02 [ora11g@test06 ~]$ cat $Oracle_HOME/rdbms/lib/config.c 

03   

04 /*  SS_DBA_GRP defines the UNIX group ID for sqldba adminstrative access.  */ 

05 /*  Refer to the Installation and User's Guide for further information.  */ 

06   

07 /* IMPORTANT: this file needs to be in sync with 

08               rdbms/src/server/osds/config.c, specifically regarding the 

09               number of elements in the ss_dba_grp array. 

10  */ 

11   

12 #define SS_DBA_GRP "oradba" 

13 #define SS_OPER_GRP "oradba" 

14 #define SS_ASM_GRP "oradba" 

15   

16 char *ss_dba_grp[] = {SS_DBA_GRP, SS_OPER_GRP, SS_ASM_GRP};    

17 [ora11g@test06 ~]$ relink all

      修改 $Oracle_HOME 中的 oraInst.loc 文件,其实就是填入正确 oraInventory 目录,这个oraInventory 可以不建,但是父目录必须存在,并且Oracle用户可以写入(建目录):

01 [ora11g@test06 ~]$ cd $Oracle_HOME 

02 [ora11g@test06 db_1]$ cp oraInst.loc{,.bak} 

03 [ora11g@test06 db_1]$ vim oraInst.loc 

04 [ora11g@test06 db_1]$ more oraInst.loc*    

05 :::::::::::::: 

06 oraInst.loc 

07 :::::::::::::: 

08 inventory_loc=/u01/app/ora11g/oraInventory 

09 inst_group=oradba 

10 :::::::::::::: 

11 oraInst.loc.bak 

12 :::::::::::::: 

13 inventory_loc=/u01/app/oracle/oraInventory 

14 inst_group=oradba

      修改 $Oracle_HOME/clone/config/cs.properties  在最后加上参数-invPtrLoc 指明 oraInst.loc 所在的路径:

1 [ora11g@test06 db_1]$ cd $Oracle_HOME/clone/config 

2 [ora11g@test06 config]$ cat cs.properties  

3 # Copyright (c) 2005, Oracle. All rights reserved.   

4   

5 # clone command line 

6 clone_command_line= -silent -noConfig -nowait -invPtrLoc "/u01/app/ora11g/product/11.2.0.2/db_1/oraInst.loc"

      再去到 $Oracle_HOME/clone/bin 目录执行一下一个perl脚本:

1 ./clone.pl \ 

2 Oracle_HOME="/u01/app/ora11g/product/11.2.0.2/db_1" \ 

3 ORACLE_BASE="/u01/app/ora11g" \ 

4 OSDBA_GROUP="oradba" \ 

5 OSOPER_GROUP="oradba" \ 

6 OSASM_GROUP="oradba" \ 

7 ORACLE_HOME_NAME="OracleHome1"

 
01 [ora11g@test06 config]$ cd $ORACLE_HOME/clone/bin 

02 [ora11g@test06 bin]$ ls 

03 clone.pl  prepare_clone.pl 

04 [ora11g@test06 bin]$ ./clone.pl \ 

05 [ora11g@test06 bin]> ORACLE_HOME="/u01/app/ora11g/product/11.2.0.2/db_1" \ 

06 [ora11g@test06 bin]> ORACLE_BASE="/u01/app/ora11g" \ 

07 [ora11g@test06 bin]> OSDBA_GROUP="oradba" \ 

08 [ora11g@test06 bin]> OSOPER_GROUP="oradba" \ 

09 [ora11g@test06 bin]> OSASM_GROUP="oradba" \ 

10 [ora11g@test06 bin]> ORACLE_HOME_NAME="OracleHome1"

      最后按照提示用root用户执行那个 $Oracle_HOME 的 root.sh 就OK了。


 


本文出自:亿恩科技【www.enkj.com】

服务器租用/服务器托管中国五强!虚拟主机域名注册顶级提供商!15年品质保障!--亿恩科技[ENKJ.COM]

  • 您可能在找
  • 亿恩北京公司:
  • 经营性ICP/ISP证:京B2-20150015
  • 亿恩郑州公司:
  • 经营性ICP/ISP/IDC证:豫B1.B2-20060070
  • 亿恩南昌公司:
  • 经营性ICP/ISP证:赣B2-20080012
  • 服务器/云主机 24小时售后服务电话:0371-60135900
  • 虚拟主机/智能建站 24小时售后服务电话:0371-60135900
  • 专注服务器托管17年
    扫扫关注-微信公众号
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 亿恩科技 版权所有  地址:郑州市高新区翠竹街1号总部企业基地亿恩大厦  法律顾问:河南亚太人律师事务所郝建锋、杜慧月律师   京公网安备41019702002023号
      0
     
     
     
     

    0371-60135900
    7*24小时客服服务热线