在Redhat 9上安裝 Oracle 817心得
來源:互聯網
上載者:User
oracle|心得 在 Linux 上安裝 Oracle 8i
(註:引用http://vip.6to23.com/hanson/htdocs/oracle.htm,在安裝過程中作一些更正)
關於 Oracle 安裝的討論已經有很多了,可是在實踐中你還是總會遇到某些麻煩,因此我就留下我的兩分錢吧。本文討論的環境基於 Redhat Linux 9.0.93,
Oracle 的版本號碼為 8.1.7.0.1。
下載軟體
假設你已經有了一台跑著 Redhat 的機器,並且它滿足 Oracle 8i 對硬體的相關要求,並且具有網路連接,下面就下載其他所需的軟體。首先在 OTN 下載 linux
81701.tar 和 glibc-2.1.3-stubs.tar.gz,另外還需要:
i386-glibc-2.1-linux.tar.gz(下載位置:http://ftp.valinux.com/pub/suppo ... c-2.1-linux.tar.gz)
binutils-2.10.91.0.2-3.i386.rpm(下載位置:http://mirrors.usc.edu/pub/linux ... s/i386/RedHat/RPMS/
binutils-2.10.91.0.2-3.i386.rpm)
(Redhat 內建的是 binutils-2.13.90.0.18-9.i386.rpm,用於恢複,下載位置:http://mirrors.usc.edu/pub/linux ... t/redhat/linux/9/en
/os/i386/RedHat/RPMS/compat-gcc-7.3-2.96.118.i386.rpm)
jdk118_v3-glibc-2.1.3.tar.bz2(下載位置:http://ftp.dk.xemacs.org/pub/lan ... libc-2.1.3.tar.bz2)
因為 Oracle 內建了 JRE 1.1.8,所以不用單獨安裝,假設以上所述軟體都放在 /tmp 目錄。
(註:還需要從Java官方網站下載JDK 1.4.2用以恢複,我安裝的Redhat9沒有發現JDK 1.4.2,下載位置:http://java.sun
.com/j2se/1.4.2/download.html)
安裝glibc、JDK、和 binutils
su
cd /
tar zxvf /tmp/i386-glibc-2.1-linux.tar.gz
cd /usr/bin
mkdir saved
mv gcc cc ld saved
ln -s /usr/i386-glibc-2.1-linux/bin/i386-glibc21-linux-gcc gcc
ln -s gcc cc
ln -s /usr/i386-glibc-2.1-linux/bin/i386-glibc21-linux-ld ld
(註:安裝oracle過程中發現/usr/bin/ld變為非連結,需要重新設定,否則會出現串連出錯!)
cd /usr/lib
mkdir saved
mv libc.so libdl.so libm.so libpthread.so saved
mv libc.a libdl.a libm.a libpthread.a saved
(註:沒有安裝過java的話就沒有這個目錄,需要先mkdir /usr/java)
cd /usr/java
tar jxvf /tmp/jdk118_v3-glibc-2.1.3.tar.bz2
ln -s /usr/java/jdk118_v3 /usr/local/java
(註:原來是ln -s jdk118_v3 /usr/local/java,後來發現連結不正確)
(註:安裝前先轉到軟體放置目錄cd /tmp)
rpm -Uvh --force --nodeps binutils-2.10.91.0.2-3.i386.rpm
(註:執行這一命令後/usr/bin/ld變為非連結,需要重新設定,否則會出現串連出錯!)
建立使用者和組
groupadd oinstall
groupadd dba
groupadd oper(註:此組還象沒有用到,可以去掉,下面的useradd也要相應的去掉)
useradd -d /oracle -g oinstall -G dba,oper oracle(註:此處為給oracle使用者設定/oracle目錄,預設是/home/oracle)
passwd oracle
chown -R oracle.dba /oracle
chmod 750 /oracle
準備安裝
vi /oracle/.bash_profile(註:由於前面給oracle設定/oracle目錄,預設是/home/oracle/.bash_profile)
修改為如下內容:
(註:內容開始,可以在非Linux環境修改這個檔案,不過該檔案中換行只能是0A,要去掉所有的0D)
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
unset USERNAME
umask 022
export EDITOR=vi
export TERM=xterm
export TMPDIR=/tmp
# Setup installation environment
export ORACLE_SID=orcl
export ORACLE_BASE=/oracle
export ORACLE_HOME=$ORACLE_BASE/product/8.1.7
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/i386-glibc-2.1-linux/i386-glibc-linux/lib:/lib:/usr/lib:/lib:/usr/local/lib(註:恢複時這一行要刪i
386-glibc-2.1的路徑)
export SHLIB_PATH=$ORACLE_HOME/lib:/usr/lib:/lib:/usr/local/lib
export LIBPATH=$ORACLE_HOME/lib:/usr/lib:/lib:/usr/local/lib
export TNS_ADMIN=$ORACLE_HOME/network/admin
export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export ORACLE_OWNER=oracle
export ORACLE_TERM=xterm
export GCC_EXEC_PREFIX=/usr/i386-glibc21-linux/lib/gcc-lib/
export LD_ASSUME_KERNEL=2.4
export JAVA_HOME=/usr/local/java
export CLASSPATH=$ORACLE_HOME/jdbc/lib/classes111.zip:$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/network/jlib:.
(註:內容結束,注意export的內容在同一行上,CLASSPATH後面的classesxxx.zip建議自己去查一下,我這裡xxx是111,路徑用冒號分隔而不是分號)
su oracle
. .bash_profile
export LANG=en
cd /tmp
tar xvf linux81701.tar
其中 export LANG=en 是為了防止介面黑做一團。
(註:此時最好去檢查一下/usr/bin/ld的連結是否正確:ls -l /usr/bin/ld,應該連結到/usr/i386-glibc-2.1-linux/bin/i386-glibc21-linux-ld才對,否則重
複前面的做法,先rm /usr/bin/ld,再ln。另外建議對前面設定的各個連結都檢查一下:/usr/bin/gcc,/usr/bin/cc,/usr/local/java,深紅色的表示連結不正確)
開始安裝
./Disk1/runInstaller
點擊 Next;在 UNIX Group Name 裡輸入 oinstall;出現一個提示框要求執行 orainstRoot.sh,這時另外開啟一個終端:
su
cd $ORACLE_HOME
./orainstRoot.sh
回到 GUI,按 Retry;選擇安裝 Enterprise Edition;選擇典型安裝;選擇使用一個已經存在的 repository;選擇 JDK 的位置(註:應是/usr/local/java);問
是否要建立一個資料庫,不用;繼續,等待一段時間;出現一個提示框要求執行 root.sh;回到終端:
(註:建議選擇自訂安裝,這樣可以添加支援的語言,比如簡體中文等,串連過程如果出錯的話請按後面的“處理錯誤”執行,我沒有碰到錯誤)
vi root.sh
按下列要求修改:第98行,把 SED=/usr/local/bin/sed 改為 SED=/bin/sed;第102行,把 RMF=/bin/rm –f 改為 RMF="/bin/rm -f";第156行,把 RUID=`/usr
/bin/id|$AWK -F\( '{print $2}'|$AWK -F\) '{print $1}` 改為 RUID=`/usr/bin/id|$AWK -F\( '{print $2}'|$AWK -F\) '{print $1}'`。
./root.sh
回一次車;回到 GUI,按 OK。
處理錯誤
(註:出錯的可能性是/usr/bin/ld的連結被更改,記住在安裝binutils-2.10.91.0.2-3.i386.rpm之後要去更改)
出現一個提示框,說 Error in invoking target relink of makefile /oracle/product/8.1.7/precomp/lib/ins_precomp.mk 或者 Error in invoking target
relink of makefile /oracle/product/8.1.7/rdbms/lib/ins_rdbms.mk,回到終端:
exit
cd $ORACLE_HOME
tar zxvf /tmp/glibc-2.1.3-stubs.tar.gz
./setup_stubs.sh
連結工作完成後,回到 GUI,按 Retry;等待,直到安裝完成;完成後自動啟動的 Net8 設定精靈沒有反應,kill 之。
恢複其他軟體
su
rpm -e --nodeps bintutils-2.10.91.0.2-3
rpm -ivh /mnt/cdrom/Redhat/RPMS/binutils-2.13.90.0.18-9.i386.rpm(註:如果是下載的,位置可能不一樣)
cd /usr/local
rm java
(註:補充開始)
安裝JAVA
1、#cp j2sdk-1_4_2_05-linux-i586-rpm.bin 到/usr/local
2、#chmod 755 j2sdk-1_4_2_05-linux-i586-rpm.bin
3、#./j2sdk-1_4_2_05-linux-i586-rpm.bin (解出j2sdk-1_4_2_05-linux-i586.rpm)
4、#rpm -ivh j2sdk-1_4_2_05-linux-i586.rpm
rpm安裝很方便,不用保佑了。
(註:補充結束)
ln -s /usr/java/j2sdk1.4.2_05 java
(註:原來是j2sdk1.4.2_01,我現在從網下載到的是j2sdk1.4.2_05,建議安裝完後自己去檢查一下。我用的是“ln -s /usr/java/j2sdk1.4.2_05 /usr/local/
java”,擔心又出來連結不對的情況)
cd /usr/bin
rm gcc cc ld
mv ./saved/* .
rmdir saved
cd /usr/lib
mv ./saved/* .
rmdir saved
然後把 oracle 使用者環境變數 LD_LIBRARY_PATH 中的 glibc 的部分刪去。
建立資料庫
exit
cd $ORACLE_HOME/bin
unset LANG
unset NLS_LANG
./dbassist
選擇建立資料庫;定製;多用途;下一步;共用伺服器模式;去掉所有選項(建立 JServer 的時間巨長);設定全域資料庫名和 SID,假設全域資料庫名為 testdb
,SID 為 orcl;更改字元集:字元集為 UTF8、國家字元集為 ZHS16GBK;六次下一步;完成。
配置 Net8
./netca
使用 netca 是因為 netasst 總是沒有反應,讓我們鄙視它吧。選擇監聽程式配置;添加;監聽程式名使用預設的 LISTENER;三次下一步。
上面步驟即是對 $ORACLE_HOME/network/admin/listener.ora 的編輯:
# copyright (c) 1997 by the Oracle Corporation
#
LISTENER =
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))
(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC)))
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=testdb)
(SID_NAME=orcl)
(ORACLE_HOME=/oracle/product/8.1.7)
)
)
其中 GLOBAL_DBNAME、SID_NAME、和 ORACLE_HOME 隨實際情況不同而不同。
手工啟動資料庫和監聽
vi /etc/oratab
把最後的 N 改成 Y。
./dbstart
./lsnrctl start
設定服務
su
cd /etc/init.d
vi oracle
(註:內容開始,可以在非Linux環境下產生然後複製過去,注意要去掉0D字元)
#!/bin/bash
#
# Startup script for Oracle and listener
#
# chkconfig: 35 99 1
# description: Oracle 8.1.7.0.1
# Setup environment for script execution.
. /oracle/.bash_profile(註:給oracle使用者佈建的目錄有變時需要更改此處)
case "$1" in
start)
echo "Starting Oracle database(s) listed in /etc/oratab ..."
sleep 2
su - oracle -c "$ORACLE_HOME/bin/dbstart"
echo "Starting TNS listener..."
sleep 2
su - oracle -c "$ORACLE_HOME/bin/lsnrctl start"
touch /var/lock/subsys/oracle
;;
stop)
echo "Stopping TNS listener..."
sleep 2
su - oracle -c "$ORACLE_HOME/bin/lsnrctl stop"
echo "Stopping Oracle databases(s) listed in /etc/oratab ..."
sleep 2
su - oracle -c "$ORACLE_HOME/bin/dbshut"
rm -f /var/lock/subsys/oracle
;;
status)
ps -ax | grep -e ora_ -e tnslsnr
;;
*)
echo "Usage: oracle {start|stop|status}"
exit 1
esac
exit 0
(註:內容結束)
chmod 700 /etc/init.d/oracle
/sbin/chkconfig --add oracle
使用啟動指令碼啟動和關閉
/etc/init.d/oracle start
/etc/init.d/oracle stop
(註:到此安裝配置完成,以後每次啟動/關閉系統時oracle服務都會自動啟動/停止)
(註:有些情況會提示許可權不夠,就改用root操作,至於哪一步該用oracle哪一步該用root,操作過程中看情況而定,建議優先使用oracle)
參考工具:winscp366setup.exe - Setup for WinSCP 3.6.6 (SCP/SFTP client for Windows),用於在Windows下串連到Linux並操作檔案