2007年10月10日 星期三

在CentOS 4.5上安裝Oracle 10g

這個月原本有個重大的目標,
就是要去考LPIC 102!!

可是因為部門裡頭,有位同事要離職,
工作部分交到我手頭上,導致在時間分配上,
根本沒有多餘時間來準備考試。

現在我要趕緊把交接給我的那部份工作,這半個月以來的過程,
好好把筆記留下來,至於考試...唉!再說吧!

對了!補充說明一下,我交接給我的新工作是oracle 10g 的DBA。
這兩三個星期,我相關的書看了不少,
但實戰經驗實在少得可憐,很是惶恐!!

先有個測試環境,實機操作再說。
我有個目標,先找個機器,因為要跑得順暢,等級不能太差,
裝好OS後,再裝ORACLE 10g。
再把我們公司正式的資料 import 進來。
最後,請軟體系統維護的同事協助測試看看,資料的可用性如何?
還有呢?再想吧!!



在CentOS 4.5上安裝Oracle 10g
出處:http://forum.hongtalk.net/thread-6119-1-1.html

首先要說明一下Oracle 10g官方只能安裝在Red Hat、Suse、UnitedLinux及asianux上。
CentOS是Red Hat的免費版,除了付款服務外,基本上沒有太大分別,
所以CentOS絕對可以安裝Oracle 10g。

在教學裡,我在Linux上建立了一個mount point「/u01」在20G的硬碟上。

請確保你已安裝以下Package:

* binutils
* compat-db
* compat-libstdc++
* control-center
* gcc
* gcc-c++
* glibc
* glibc-common
* gnome-libs
* libaio
* libstdc++-devel
* make
* pdksh
* setarch
* sysstat
* xscreensaver

可輸入以下Command檢查:

Step ##1
CODE:
# rpm -qa binutils compat-* control-center gcc* glibc* gnome-libs libstdc* make pdksh sysstat xscreensaver setarch libaio

如沒有安裝sysstat,可使用yum command從網路上下載並安裝

Step ##2
CODE:
# yum install sysstat

設定Kernel Parameter:

Step ##3
CODE:
# vi /etc/sysctl.conf
#Add the following code
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
# semaphores: semmsl, semmns, semopm, semmni
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 262144
net.core.rmem_max = 262144
net.core.wmem_default = 262144
net.core.wmem_max = 262144

儲存後執行

Step ##4
CODE:
/sbin/sysctl -p



Step ##5
CODE:
# vi /etc/security/limits.conf
* soft nproc 2047
* hard nproc 16384
* soft nofile 1024
* hard nofile 65536



Step ##6
CODE:
# vi /etc/pam.d/login
session required /lib/security/pam_limits.so



Step ##7
CODE:
# vi /etc/pam.d/su
session required pam_limits.so

建立Group、User及Directory

Step ##8
CODE:
# groupadd oinstall
# groupadd dba
# groupadd oper
# useradd -g oinstall -G dba oracle
# passwd oracle
# mkdir -p /u01/app/oracle/product/10.2.0/db_1
# chown -R oracle.oinstall /u01



Step ##9
CODE:
# vi /etc/profile
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi



Step ##10
CODE:
# vi /home/oracle/.bash_profile
umask 022
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1; export ORACLE_HOME
ORACLE_SID=INVEST1; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH

現在登入oracle戶口

由於我不是安裝在Red Hat上,所以要執行以下Command騙過Oracle Install Script

Step ##11
CODE:
# echo redhat-4 > /etc/redhat-release

如果你有使用X Windows的話,請設定以下Global Variable

Step ##12
CODE:
# DISPLAY=:0.0; export DISPLAY

執行安裝程式

Step ##13
CODE:
# ./runInstaller

選擇Advanced Installation及Enterprise Edition

你可在Product Languages上選取更多語言,例如Traditional Chinese

最後一直依指示安裝

安裝後,我們需要iSQLPlus及Enterprise Manager開機自動執行,需要更改以下幾個檔案

在「/u01/app/oracle/product/10.2.0/db_1/bin/dbstart」上尋找

Step ##14
CODE:
ORACLE_HOME_LISTNER=/ade/vikrkuma_new/oracle

改成

Step ##15
CODE:
ORACLE_HOME_LISTNER=/u01/app/oracle

把N轉成Y

Step ##16
CODE:
# vi /etc/oratab
INVEST1:/u01/app/oracle/product/10.2.0/db_1:Y

建立檔案「/etc/init.d/oracle」

Step ##17
CODE:
# vi /etc/init.d/oracle
#!/bin/bash
#
# Run-level Startup script for the Oracle Instance and Listener
#
# chkconfig: 345 91 19
# description: Startup/Shutdown Oracle listener and instance
ORA_HOME="/u01/app/oracle/product/10.2.0/db_1"
ORA_OWNR="oracle"
# if the executables do not exist -- display error
if [ ! -f $ORA_HOME/bin/dbstart -o ! -d $ORA_HOME ]
then
echo "Oracle startup: cannot start"
exit 1
fi
# depending on parameter -- startup, shutdown, restart
# of the instance and listener or usage display
case "$1" in
start)
# Oracle listener and instance startup
echo -n "Starting Oracle: "
su - $ORA_OWNR -c $ORA_HOME/bin/dbstart
su - $ORA_OWNR -c "$ORA_HOME/bin/lsnrctl start"
#Optional : for isqlplus only
su - $ORA_OWNR -c "$ORA_HOME/bin/isqlplusctl start"
#Optional : for Enterprise Manager software only
su - $ORA_OWNR -c "$ORA_HOME/bin/emctl start dbconsole"
touch /var/lock/subsys/oracle
echo "OK"
;;
stop)
# Oracle listener and instance shutdown
echo -n "Shutdown Oracle: "
#Optional : for isqlplus only
su - $ORA_OWNR -c "$ORA_HOME/bin/isqlplusctl stop"
#Optional : for Enterprise Manager software only
su - $ORA_OWNR -c "$ORA_HOME/bin/emctl stop dbconsole"
su - $ORA_OWNR -c "$ORA_HOME/bin/lsnrctl stop"
su - $ORA_OWNR -c $ORA_HOME/bin/dbshut
rm -f /var/lock/subsys/oracle
echo "OK"
;;
reload|restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0 start|stop|restart|reload"
exit 1
esac
exit 0

更改權限

Step ##18
CODE:
# chgrp dba oracle
# chmod 750 oracle

自動啟動

Step ##19
CODE:
# chkconfig --level 345 oracle on

最後改回CentOS

Step ##20
CODE:
# echo 'CentOS release 4.5 (Final)' > /etc/redhat-release

4 則留言:

Unknown 提到...

吳大您好:
小弟對於在centos4.5安裝Oracle10g很感興趣,看到您的文章感到很驚喜
因為小弟之前大略接觸過centos4.5 & Oracle10g
但一直因為個人事務所困,所以目前對於linux & Oracle一直處於啟蒙階段
今天重新拾起書本就搜尋到您的文章,不知道吳大是否願意分享一下學習歷程以拉拔一下資質駑鈍的小弟^^

Unknown 提到...

當然歡迎啊!
不過,我的DBA資歷也尚淺。
linux倒是功力還算可以,有問題來討教的話,我一定盡力答覆。

Unknown 提到...

哈哈...沒想到這麼快就有回應了
因為看你的網誌標題是centos4.5安裝oracle 10g,再加上網誌的時間剛好是我去年剛接觸的時候(某種原因下接觸的)
不同的兩人在不同的地方,卻在相近的時間有了相同的solution
小弟自私的想~或許您可以填補我這將近一年的空白與懶惰...哈哈

目前小弟的學習狀況是--Oracle忘光了,重新學習Unix-Like作業系統中

anyway...不管您是否願意幫小弟的忙,還是很高興您有回應....共勉囉:)

Unknown 提到...

哈哈!
在不斷使用LINUX的同時,你會發現到。
像我這樣用開放,教學相長的態度。
去面對同為LINUX的學習者的人,比比皆是。
這也是LINUX能不斷茁壯,足於和MS,MAC,Solaris等OS相媲美的最大因素。
歡迎加入LINUX的世界囉。

搜尋此網誌

本站大事記

這個部落格(網站)內容以分享LINUX和延伸出的技術文章為主!
特別是為了工作和進修需要,搜集了不少網站連結。
希望對來這裡觀文的朋友們,有提供一些有用的資訊或文章。
但這裡的文章中,也包含個人的心情扎記和隨興言談……
若是當中沒有對上你的口味,請多包涵!

原「琳娜絲與希斯寇的邂逅」,改名為「愛上琳娜絲」!

原「琳娜絲與希斯寇的邂逅」,改名為「愛上琳娜絲」!
--原序文--
就是當LINUX遇上CISCO啦!他們的結合還能作什麼事…不就是讓這個世界的網路,串…串起來啊…不然你們那能上這網站看部落格!