Oracle9i的安裝
花費了周一和周二兩天的時間終於裝上了oracle,下面是安轉步驟,以備以後參考。
在rh9(2.4.20-8)上安裝oracle9i(oracle9201)。
1在rh的安裝過程中要注意四點
一是硬碟空間要大一些,rh9全部安裝大約需要4.5G的空間,oracle9i資料庫大約需要2-2.5G的空間,所以檔案分區至少7G吧,太小了容易出問題,越大越好哈。
二是為了執行Oracle9i標準安裝和建立原型(simple prototype)資料庫,Oracle建議Oracle9i(9.0.1)伺服器至少需要 512M 記憶體,兩倍記憶體或不少於 400M 的交換 (swap) 空間,我強烈建議設在1G左右,如果swap較小,例如512M,在資料庫建立階段會提示“out of memory”的錯誤。當然也可以通過建立臨時分頁檔臨時增加交換空間,代替使用原始裝置(raw device),方法如下:
su -
dd if=/dev/zero of=tmpswap bs=1k count=900000 註:約1G左右
chmod 600 tmpswap
mkswap tmpswap
swapon tmpswap
取消臨時交換空間,可以執行以下命令:
su -
swapoff tmpswap
rm -rf tmpswap
三是rh9要安裝英文的,在安裝時有兩次選擇機會,最好是兩次都安裝英文的。我在安裝時第一次選擇中文,第二次選擇英文,oracle還是有亂碼,登出後以英文環境登陸都不行。所以建議第一次選英文,第二次選英文和中文兩種,但是安裝oracle時必須是英文環境。
四是要多安裝一些開發包,因為後續安裝時可能需要,只要你有空間完全可以全部安裝。
2建立oracle使用者和組
su -
groupadd oinstall # group owner of oracle files
groupadd dba #group of users to be granted with SYSDBA system privilege
groupadd -g oinstall -G dba oracle
passwd oracle
3準備oracle檔案目錄
su -
mkdir -p /opt/ora9/product/9.2
mkdir /var/opt/oracle
chown oracle.dba /var/opt/oracle
chown -R oracle.dba /opt/ora9
註:我第一次安裝出現問題,就把or9/刪除了,又重新mkdir,但是忘了chown,結果再以oracle使用者安裝時提示沒有目錄操作許可權。
4安裝支援軟體包
su -
運行以下命令,檢查開發包是否安裝
rpm –q gcc cpp compat-libstdc++ glibc-devel glibc-kernheaders binutils
如果其中任何一個沒有安裝,例如package cpp is not installed,則插入rh9的安裝盤,cdrom的掛載命令是
mount -t iso9660 /dev/cdrom /mnt
在RPMS檔案夾中找的cpp時則運行以下命令安裝
rpm –ivh cpp-3.2.2-5.i386.rpm
註:不同的rh版本中cpp的版本也是不一樣的
5設定核心參數,調節號誌及共用記憶體
開啟/etc/sysctl.conf檔案,將以下資料寫到末尾並儲存
kernel.shmmax = 。
註:為了安裝 oracle9i(9.2.0),需要增加所有rh版本的linux伺服器的最大共用記憶體(maximum shared memeory)。否則oracle資料庫配置助手(the Oracle Database Configuration Assistant)會顯示如下錯誤資訊:
ORA-27123: unable to attach to shared memory segment unable to attach to share memory segment
kernel.shmmni = 4096
kernel.shmall = 2097152
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
建議關於net.ipv4.ip_local_port_range不要改動,可以用cat /proc/sys/net/ipv4/ip_local_port_range看到rh9對這個所定義的範圍已經符合,而且連接埠範圍比這個小。
其中kernel.shmmax是共用記憶體段的最大尺寸,kernel.shmmin是共用記憶體段的最小尺寸,進入/proc/sys/kernel可以用以下命令查看其數值。
cat shmmax
cat shmmni
cat shmall
而kernel.shmmax的計算方法一般是RAM(K)*1024*2,RAM的數值可以用以下命令查看。
grep MemTotal /proc/meminfo
MemTotal: XXXX KB
關於kernel.sem的數值,其中250是參數SEMMSL的值,32000是參數SEMMNS的值,100是參數SEMOPM的值,128則是參數SEMMNI的值。
接下來,開啟/etc/security/limits.conf檔案,將以下資料寫入末尾並儲存,這是設定oracle對檔案的要求。
oracle soft nofile 65536
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384
6設定oracle的系統內容
su - oracle
編輯/home/oracle/.bashrc檔案,加入以下資料
#oracle9i
export ORACLE_BASE=/opt/ora9 註:等號前後不要有空格
export ORACLE_HOME=/opt/ora9/product/9.2
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin:$PATH
export ORACLE_OWNER=oracle
export ORACLE_SID=ora9i 註:這個值唯一標示一個資料庫,可以更改,建議用大寫字母(小寫也可)
export ORACLE_TERM=vt100
export LD_ASSUME_KERNEL=2.4.1
注:rh9預設使用本地POSIX線程庫(the Native POSIX Thread Library - NPTL),POSIX線程的linux改進實現。但是,由於使用了NPTL,oracle應用程式會引起一些問題,rh9沒有通過oracle9i認證。為了修正這些問題,你可以設定環境變數LD_ASSUME_KERNEL=2.4.1,通知系統使用原來的浮點堆棧linux線程(Linuxthreads with floating stacks)。否則會導致oracle安裝器runInstaller掛起、資料庫配置助手(the Database Configuration Assistant)dbca不能啟動等問題。
export THREADS_FLAG=native
export LD_LIBRARY_PATH=/opt/ora9/product/9.2/lib:$LD_LIBRARY_PATH
export PATH=/opt/ora9/product/9.2/bin:$PATH
環境變數的配置非常關鍵,一定要留神。
7解壓安裝檔案
將下載的或者光碟片上的oracle9i安裝檔案拷貝到某個目錄,例如(光碟片)
su -
mkdir /mnt/oracle
mount -t iso9660 /dev/cdrom /mnt
waiting
cp /mnt/cdrom/lux_920_disk* /mnt/oracle
注意一般有三個安裝檔案lux_920_disk1.cpio.gz,lux_920_disk2.cpio.gz,lux_920_disk3.cpio.gz,還有每次換光碟片之前記得
umount /dev/cdrom
註:我之所以寫得這麼詳細是因為我是菜鳥哈,經常犯一些弱弱的錯誤:(
現在開始解壓/mnt/oracle下的檔案,linux支援多線程的,開啟三個terminal,輸入以下指令
terminal1#zcat lux_920_disk1.cpio.gz | cpio -idmv
terminal2#zcat lun_920_disk2.cpio.gz | cpio -idmv
terminal3#zcat lun_920_disk3.cpio.gz | cpio -idmv
解壓過程中,自動在/mnt/oracle下建立了三個包含安裝檔案的目錄
Disk1
Disk2
Disk3
記住,熱身工作到此完畢,reset,一定要重啟嗎。不太清楚,可能上面設定的某些參數需要重啟才會生效。
8安裝及錯誤處理
su -
export DISPLAY=localhost.localdomain:0.0
xhost +localhost.localdomain
其中的localhost.localdomain其實就是hostname,可以用命令hostname查看。
註:上述兩項不設定的話會出錯,runinstaller無法運行,提示如下錯誤:
Xlib:connection to “:0.0” refused by server
Xlib:Client is not authorized to connect to Server
上面這個問題好像比較複雜,我沒有仔細看。大概是oracle不再支援字元安裝模式,為了在遠端桌面上顯示runinstaller的介面,即X資訊,需要做相應的設定。注意,如果不使用Exceed,X顯示重連結機制不能工作在NT案頭機器之上。因為我是本地安裝,問題就簡單了哈:)
然後切換到oracle使用者,開始安裝
su - oracle
cd /mnt/oracle/Disk1
./runinstaller
你看激動人心的oracle安裝介面了嗎。嘻嘻
oh baby,come on!
剛開始安裝時需要輸入一些資訊,可參考下面幾項:
---what would you like as the base directory(Inventory Location)
/opt/ora9/oraInventory
---unix group name(permission for updating oracle software)
oinstall 註:也可以使用dba,但出於安全考慮不推薦使用dba
---full path name for oracle home
/opt/ora9/product/9.2
等等
在接下來的安裝過程中一般會碰到四個問題。
第一個問題是安裝介面字元亂碼,肯定是中文的原因,解決方案
su - oracle
export LANG=en_US:LANG
註:我也碰到了這個問題,但是利用該解決方案沒有成功,最後我不得不重裝了一遍rh9,全英。如果有更好的辦法,請告訴我w_fenghui@sina.com.cn,但我還是建議裝英文系統。
第二個問題是提示關於這個檔案ins_oemagent.mk的,解決方案,忽略,我們將在下面的步驟中修複它。
第三個問題是提示"Error in invoking target install of makefile $ORACLE_HOME/ctx/lib/ins_ctx.mk",解決方案,編輯檔案$ORACLE_HOME/ctx/lib/env_ctx.mk,在"INSO_LINK ="行(第1365行)加入"$(LDLIBFLAG)dl",修改後如下:
INSO_LINK = -L$(CTXLIB) $(LDLIBFLAG)m $(LDLIBFLAG)dl $(LDLIBFLAG)sc_ca $(LDLIBFLAG)sc_fa $(LDLIBFLAG)sc_ex $(LDLIBFLAG)sc_da $(LDLIBFLAG)sc_ut $(LDLIBFLAG)sc_ch $(LDLIBFLAG)sc_fi $(LLIBCTXHX) $(LDLIBFLAG)c -Wl,rpath,
$(CTXHOME)lib $(CORELIBS) $(COMPEOBJS)
按"retry"鍵即可繼續。
第四個問題是oracle agent configuration assistant啟動失敗,提示以下錯誤:
parameter "nodeinfo"=NO_VALUE
agent service failed
該問題的解決方案是---我不知道:(
因為我沒有用到agentctl服務,所以就沒有解決該問題,一般用不到吧。解決該問題需要補丁包的。
最後,還需要根據提示,用root使用者執行一次 $ORACLE_HOME/root.sh,Oracle軟體就初步安裝完了。
我們回頭來解決上邊的那個ins_oemagent.mk問題。以oracle使用者執行:
cd $ORACLE_HOME/network/lib
make -f ins_net_client.mk install
編輯$ORACLE_HOME/ctx/lib/ins_ctx.mk檔案的第13-14行,由:
ctxhx: $(CTXHXOBJ)
$(LINK) $(CTXHXOBJ) $(INSO_LINK)
改為
ctxhx: $(CTXHXOBJ)
$(LINK) -ldl $(CTXHXOBJ) $(INSO_LINK)
然後執行
make -f $ORACLE_HOME/ctx/lib/ins_ctx.mk install
現在,Oracle 軟體已經完整安裝成功,你可以用dbca命令來建立資料庫,或者執行其他DBA命令啦。
9經驗總結
一:動不動就重裝不是解決問題的辦法,碰到問題去網上查一下,你碰到的問題估計其他人早就碰到了
二:如果因為其他原因安裝未成功,請在再次運行之前,清除以下檔案:
/etc/oraInst.loc /etc/oratab /tmp/<OtherOracleOwnerFile> $ORACLE_BASE/*