Oracle 10g支援在命令列下用靜默模式(Silent)安裝,給那些沒有安裝圖形介面的Linux系統提供了極大的便利。
下面以Fedora Core 6為例,介紹在命令列下安裝OracleOracle 10g的方法。
1 安裝前的準備
準備工作要用登入狀態root使用者來進行。
1.1 選擇安裝環境的語言
Oracle安裝時可以通過環境變數LANG指定安裝語言,如果Linux命令列不能顯示中文,就要將語言環境設定為英語。
例如:export LANG=en_US.UTF-8
1.2 修改gennttab
Oracle 10g在一些Linux系統下安裝可能會被中斷,在安裝記錄檔
$ORACLE_HOME/install/make.log
裡可以看見以下錯誤資訊
/bin/sed: -e expression #1, char 7: unterminated `s' command
要解決這個問題就必須編輯檔案 gennttab。
先解壓Oracle安裝目錄下的 stage/Components/oracle.network.rsf/10.2.0.1.0/1/DataFiles/filegroup6.jar,可以用以下方法之一進行解壓
用jar解壓:jar -xf filegroup6.jar bin/gennttab
用unzip解壓:unzip filegroup6.jar bin/gennttab
再用文字編輯器(例如vi)開啟解壓出來的 gennttab,將以下內容
LIB=`$ECHO ${TtoLIB} | $SED 's/ ///
/g' | $GREP "^${T}:" | $AWK -F: '{print $2}'`
INI=`$ECHO ${TtoINI} | $SED 's/ ///
/g' | $GREP "^${T}:" | $AWK -F: '{print $2}'`
BAS=`$ECHO ${TtoBAS} | $SED 's/ ///
/g' | $GREP "^${T}:" | $AWK -F: '{print $2}'`
改為
LIB=`$ECHO ${TtoLIB} | $SED 's/ //n/g' | $GREP "^${T}:" | $AWK -F:
'{print $2}'`
INI=`$ECHO ${TtoINI} | $SED 's/ //n/g' | $GREP "^${T}:" | $AWK -F:
'{print $2}'`
BAS=`$ECHO ${TtoBAS} | $SED 's/ //n/g' | $GREP "^${T}:" | $AWK -F:
'{print $2}'`
儲存後再用將gennttab更新到filegroup6.jar裡面,可以用以下方法之一進行更新
用jar更新:jar -uvf filegroup6.jar bin/gennttab
用zip更新:zip -vu filegroup6.jar bin/gennttab
1.3 修改核心參數
編輯檔案 /etc/sysctl.conf,修改以下項目,如果沒有可以自己添加。
kernel.shmall = 2097152
# 可以使用的共用記憶體的總量。
kernel.shmmax = 2147483648
# 最大共用記憶體段大小。
kernel.shmmni = 4096
# 整個系統共用記憶體段的最大數目。
kernel.sem = 250 32000 100 128
# 每個訊號對象集的最大訊號對象數;系統範圍內最大訊號對象數;每個訊號對象支援的最大運算元;系統範圍內最大訊號對象集數。
fs.file-max = 65536
# 系統中所允許的檔案控制代碼最大數目。
net.ipv4.ip_local_port_range
= 1024 65000 # 應用程式可使用的IPv4連接埠範圍。
net.core.rmem_default = 1048576
# 通訊端接收緩衝區大小的預設值
net.core.rmem_max = 1048576
# 通訊端接收緩衝區大小的最大值
net.core.wmem_default = 262144
# 通訊端發送緩衝區大小的預設值
net.core.wmem_max = 262144
# 通訊端發送緩衝區大小的最大值
註:核心參數並非必須修改,可以根據自己實際情況而定。
1.4 為Oracle建立DBA組和使用者
安裝Oracle必須指定擁有DBA許可權的組和運行Oracle的使用者。
建立組:groupadd oradba
建立使用者:useradd -g oradba oracle
註:組名和使用者名稱可以任意指定,不一定要照搬本文。
1.5 建立安裝Oracle的目標目錄
建立Oracle系統目錄:mkdir /oracle
建立Oracle伺服器主目錄:mkdir /oracle/10g
將該目錄的所有者設定為oracle:
chown oracle /oracle -R
編輯 /etc/profile,在後面追加以下兩行
export ORACLE_BASE=/oracle
export ORACLE_HOME=/oracle/10g
註:安裝Oracle的目標目錄可以任意指定,但是安裝和運行Oracle的使用者必須有完全修改該目錄的許可權。
2 安裝
2.1 編輯安裝需要的應答檔案
靜默模式(Silent)安裝必須指定一個應答檔案來完成安裝過程所須的各類參數。
在Oracle安裝目錄的response子目錄裡有enterprise.rsp有enterprise.rsp、standard.rsp和custom.rsp三個應答檔案,分別對應企業版、標準版和定製的安裝。
以enterprise.rsp為例,用任意的文字編輯器打它,修改以下這些項目的值。
ORACLE_HOME
Oracle伺服器的主目錄位置,必須是絕對路徑。
ORACLE_HOME
_NAME Oracle伺服器的名稱,必須以字母開頭。
COMPONENT_LANGUAGES
Oracle伺服器支援的語言,預設只有英語,可以添加多個語言。
s_nameForDBAGrp
用於Oracle系統管理的linux使用者組名,該組的使用者擁有管理Oracle伺服器的許可權,在本例中設定為 oradba。
s_nameForOPERGrp
用於Oracle資料庫常規操作的linux使用者組名,該組的使用者擁有常規操作Oracle資料庫的許可權,在本例中設定為 oracle。
n_configurationOption
安裝類型(1為在安裝後建立資料庫,2為安裝後建立一個自動儲存管理執行個體,3為只安裝伺服器軟體),在本例中選擇3。
其它項目用預設值即可,也可以根據自己的須要進行修改。
註:如果Oracle從光碟片安裝,必須先將應答檔案複製到硬碟上,才能修改。
2.2 開始安裝
現在萬事具備,可以安裝了。
用oracle使用者登入,然後在Oracle安裝目錄裡執行
./runInstaller -ignoreSysPrereqs -silent -responseFile <應答檔案的絕對路徑>
接下來就是等待安裝結束了。
各安裝參數的含義如下
ignoreSysPrereqs
讓Oracle忽略系統檢查,因為Oracle官方聲明只支援Linux伺服器產品,所以要在非伺服器產品的Linux上安裝就必須指定此參數。
silent
讓安裝程式以靜默模式運行。
responseFile
指定一個應答檔案。
3 安裝後要做的工作
3.1 Oracle系統初始化
用root使用者登入,然後運行$ORACLE_HOME/root.sh進行Oracle的系統初始化工作,通常一路按斷行符號用預設值即可。
3.2 安裝網路監聽器
沒有網路監聽器,用戶端就無法通過網路連接Oralce伺服器。要在命令列安裝網路監聽器,也只能使用靜默模式。
編輯Oracle安裝目錄裡response子目錄下的應答檔案 netca.rsp,修改以下項目。
INSTALL_TYPE=""custom""
安裝的類型
LISTENER_NUMBER=1
監聽器數量
LISTENER_NAMES={"LISTENER"}
監聽器的名稱列表
LISTENER_PROTOCOLS={"TCP;1521"}
監聽器使用的通訊協議列表
LISTENER_START=""LISTENER""
監聽器啟動的名稱
然後運行
$ORACLE_HOME/bin/netca /silent /responseFile <應答檔案的絕對路徑>
3.3 修改dbstart
用任意的文字編輯器開啟 $ORACLE_HOME/bin/dbstart,將
ORACLE_HOME_LISTNER=/ade/vikrkuma_new/oracle
改為
ORACLE_HOME_LISTNER=$ORACLE_HOME
否則網路監聽器可能無法自動啟動。
3.4 安裝資料庫執行個體
編輯Oracle安裝目錄裡response子目錄下的應答檔案 dbca.rsp,修改以下項目。
GDBNAME
資料庫全域名稱
SID
資料庫的SID
SYSPASSWORD
SYS使用者的初始密碼
SYSTEMPASSWORD
SYSTEM使用者的初始密碼
CHARACTERSET
資料庫字元集(中文為 ZHS16GBK)
NATIONALCHARACTERSET
資料庫國家字元集
然後運行
$ORACLE_HOME/bin/dbca -silent -responseFile <應答檔案的絕對路徑> -cloneTemplate
資料庫建立成功後須要註冊一些資訊,運行
$ORACLE_BASE/oraInventory/orainstRoot.sh
然後編輯 /etc/oratab
將
<Oracle的SID>:<Oracle的主目錄>:N
修改為
<Oracle的SID>:<Oracle的主目錄>:Y
使資料庫執行個體能夠自動啟動。
3.5 讓Oracle運行為服務
建立檔案 /etc/init.d/oracle,輸入下列內容
#!/bin/sh
#
export ORACLE_HOME=<Oracle伺服器主目錄的絕對路徑>
export ORACLE_HOME_LISTNER=$ORACLE_HOME
export ORACLE=oracle
. /etc/init.d/functions
export PATH=${PATH}:$ORACLE_HOME/bin
start()
{
daemon --user $ORACLE $ORACLE_HOME/bin/dbstart
daemon --user $ORACLE "$ORACLE_HOME_LISTNER/bin/lsnrctl start"
}
stop()
{
daemon --user $ORACLE "$ORACLE_HOME_LISTNER/bin/lsnrctl stop"
daemon --user $ORACLE $ORACLE_HOME/bin/dbshut
}
case $1 in
'start')
start
RETVAL=$?
;;
'stop')
stop
RETVAL=$?
;;
'restart')
stop
start
RETVAL=$?
;;
*)
echo "usage: $0 {start|stop|restart}"
exit
;;
esac
#
exit
然後將這個檔案賦予可執行檔許可權,運行
chmod a+x /etc/init.d/oracle
讓Oracle的服務在Linux啟動時自動運行
ln -s /etc/init.d/oracle /etc/rc.d/rc3.d/S99oracle
ln -s /etc/init.d/oracle /etc/rc.d/rc5.d/S99oracle
這樣就可以用service來啟動和停止Oracle了。
附1 Oracle 10g對硬體環境的要求
實體記憶體
基本 - 512MB
推薦 - 1024MB
記憶體交換分區相對於實體記憶體的比例
實體記憶體1024MB~2048MB - 150%
實體記憶體2049MB~8192MB - 100%
實體記憶體大於8192MB - 75%
磁碟空間
/tmp目錄所在的分區至少要有400MB空閑磁碟空間。
根據安裝類型,安裝Oracle伺服器軟體的分區至少要有1.5GB到3.5GB的空閑磁碟空間。
1.2GB磁碟空間用於資料庫預設定檔系統儲存(可選)
附2 Oracle 10g對軟體環境的要求
作業系統
Red Hat Enterprise Linux AS/ES 3.0 (Update 4 or later)
Red Hat Linux 4.0
SUSE Linux Enterprise Server 9.0 with SP 2 or later
Asianux 1.0
Asianux 2.0
軟體包
X11相關的庫 (軟體包名視作業系統而定,故不一一列出)
gcc (版本至少為2.96-124)
make (版本至少為3.79)
binutils (版本至少為2.11)
openmotif (版本至少為2.1.30)
setarch (版本至少為1.3)
compat-db (版本至少為4.0.14.5)
compat-gcc (版本至少為7.3-2.96.122)
compat-gcc-c++ (版本至少為7.3-2.96.122)
compat-libstdc++ (版本至少為7.3-2.96.122)
compat-libstdc++-devel (版本至少為7.3-2.96.122)
sysstat (版本至少為5.0.5-1)
libaio (版本至少為0.3.103-3)
libaio-devel (版本至少為0.3.103-3)
附3 相關連結
在 Linux x86 上安裝 Oracle 資料庫 10g
自動安裝 Oracle 資料庫 10g 和 Red Hat Enterprise Linux
Oracle Database Installation Guide for Linux x86
Oracle資料庫靜默安裝實踐
Oracle的全球化支援
Oracle 10g文件庫
4 結束語
現在Oracle 10g的安裝已經完成,在任何一台電腦上裝個Oracle用戶端就可以對它進行管理了。
如果要卸載Oracle,只須運行
$./runInstaller
-silent -deinstall -removeallfiles -removeAllPatches
"REMOVE_HOMES={$ORACLE_HOME}" -responseFile <安裝時使用的應答檔案>