当前位置:  数据库>oracle

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

    来源: 互联网  发布时间:2017-03-29

    本文导语:        近日通过复制Oracle Home($ORACLE_HOME)目录来安装Oracle的时候遇到了几个问题。       首先建好Oracle的相关OS用户、组还有调整好内核参数,当然还有设置Oracle用户的一些环境变量(~/.bash_profile),对于正规安装过Oracle的朋...

      近日通过复制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了。

if ($ != jQuery) { $ = jQuery.noConflict(); } var isLogined = false; var cb_blogId = 21523; var cb_entryId = 1941215; var cb_blogApp = "killkill"; var cb_blogUserGuid = "5560360b-63cf-dd11-9e4d-001cf0cd104b"; var cb_entryCreatedDate = '2011/1/21 15:51:00';

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ Strings(字符串) 成员 copy():将内容复制为一个字符数组
  • 请问linux复制文件到u盘是复制到硬盘缓存再复制去u盘的吗?
  • photoshop教程 快捷键命令大全表免费下载 快捷键如何设置 复制 放大等
  • 比较难的目录复制,如何原样复制链接符号文件和设备文件?
  • 在Linux中复制文件如何自动跳过那些损坏的无法被复制的文件。
  • 请问UNIX下如何复制目录结构而不复制其中的文件
  • 关于剪贴板(对象的复制、粘贴,而非String的复制、粘贴)
  • oracle复制表结构和复制表数据语句分享
  • pdf格式文件,复制内容时,英文部分可以正常复制,中文部分却不可以,谁能解决一下
  • cp复制文件时用-a怎么复制过来的文件属性跟原来的还不一样呢?
  • sqlserver 复制表 复制数据库存储过程的方法
  • sql数据库中复制表结构与复制表数据
  • 有关vi的鼠标复制功能
  • 文件复制软件 Copy Handler
  • VI搜索时怎样将复制的内容作为搜索的内容??
  • 链接文件的复制问题,重问
  • 数据库复制引擎 Tungsten Replicator
  • Unix 命令行数据复制程序 ddpt
  • vim打开的文件怎么复制里面的内容啊
  • 急。。。我下载了一个库。如何把头文件复制到系统目录中?
  • 数据同步和复制解决方案 SymmetricDS


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3