復(fù)制Oracle Home所需要注意的幾個(gè)問題 |
發(fā)布時(shí)間: 2012/9/18 17:31:06 |
近日通過復(fù)制Oracle Home($ORACLE_HOME)目錄來安裝Oracle的時(shí)候遇到了幾個(gè)問題。 首先建好Oracle的相關(guān)OS用戶、組還有調(diào)整好內(nèi)核參數(shù),當(dāng)然還有設(shè)置Oracle用戶的一些環(huán)境變量(~/.bash_profile),對(duì)于正規(guī)安裝過Oracle的朋友來說這都是浮云。-
如果源機(jī)和目標(biāo)機(jī)的Oracle Home目錄一樣,用戶、組不一樣(主要是用戶ID不一樣),復(fù)制過去后要重新設(shè)定一下文件所屬 chown -R 用戶:組 $ORACLE_HOME,然后 relink all(relink all可以參考這篇文章),再運(yùn)行一下root.sh就可以了,其實(shí)也沒什么大不了的。 如果用戶、組和Oracle Home目錄都不一樣,就比較麻煩了,也就是本文的重點(diǎn)內(nèi)容,一下模擬這個(gè)過程。 先介紹一下環(huán)境,源機(jī): 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) 目標(biāo)機(jī): 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) 首先在源機(jī)上對(duì)Oracle Home打包,要用root用戶執(zhí)行,并且保留相關(guān)的權(quán)限,復(fù)制到目標(biāo)機(jī)器上: 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/ 下文就和源機(jī)沒有什么關(guān)系了,在目標(biāo)機(jī)上解壓這個(gè)壓縮包,并替換新的Oracle Home目錄,當(dāng)然還要將文件歸屬搞好: 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 文件,其實(shí)就是填入正確 oraInventory 目錄,這個(gè)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 在最后加上參數(shù)-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 目錄執(zhí)行一下一個(gè)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" 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用戶執(zhí)行那個(gè) $Oracle_HOME 的 root.sh 就OK了。 本文出自:億恩科技【1tcdy.com】 服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |