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 修改內核參數
如果一致則不用修改(oracle11g)
[root@CNNIC-AM oracle]# echo "4194304" > /proc/sys/net/core/rmem_default
[root@CNNIC-AM oracle]# echo "4194304" > /proc/sys/net/core/rmem_max
[root@CNNIC-AM oracle]# echo "262144" > /proc/sys/net/core/wmem_default
[root@CNNIC-AM oracle]# echo "262144" > /proc/sys/net/core/wmem_max
[root@CNNIC-AM oracle]# echo "4096" > /proc/sys/kernel/shmmni
vim /etc/sysctl.conf
在最后加入一行
net.ipv4.ip_local_port_range=1024 65000
編輯文件 /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 -R oracle:oradba /oracle編輯 /etc/profile,在后面追加以下兩行
export ORACLE_BASE=/oracleexport ORACLE_HOME=/oracle/10g注:安裝Oracle的目標目錄可以任意指定,但是安裝和運行Oracle的用戶必須有完全修改該目錄的權限。
2 安裝2.1 編輯安裝需要的應答文件靜默模式(Silent)安裝必須指定一個應答文件來完成安裝過程所須的各類參數。
在Oracle安裝目錄的response子目錄里有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的系統初始化工作,通常一路按回車用默認值即可。不過這里Oracle存在一個bug,在root.sh腳本中,自動將OUI_SILENT參數設置為TRUE,
而后的檢查中,如果發現這個值為TRUE,那么這個腳本運行會自動退出了。
這里需要手工將其修改為FALSE,然后使用root執行。
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=$1
改為
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
將::N修改為::Y使數據庫實例能夠自動啟動。
3.5 讓Oracle運行為服務
創建文件 /etc/init.d/oracle,輸入下列內容
#!/bin/sh
#
export ORACLE_HOME=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
oracle的啟動和關閉
啟動:
#su - oracle
$sqlplus /nolog
SQL>conn /as sysdba
SQL>startup
SQL>quit
關閉:$sqlplus /nolog
SQL>conn /as sysdba
SQL>shutdown
SQL>quit
以上的sqlplus /nolog與SQL>conn /as sysdba
可以替換成sqlplus " / as sysdba"
啟動監聽:
$lsnrctl start
或
$lsnrctl
LSNRCTL>start
關閉監聽:$lsnrctl stop
或
$lsnrctl
LSNRCTL>stop
4 結束語
現在Oracle 10g的安裝已經完成,在任何一臺電腦上裝個Oracle客戶端就可以對它進行管理了。
如果要卸載Oracle,只須運行
$./runInstaller -silent -deinstall -removeallfiles -removeAllPatches "REMOVE_HOMES={$ORACLE_HOME}" -responseFile
sqlplus: error while loading shared libraries: /oracle/11g/lib/libnnz11.so: cannot restore segment prot after reloc: Permission denied
解決這個問題就要停掉selinux
setenforce 0
設置重起系統也不啟動selinux
編輯/etc/selinux/config,找到這段:
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - SELinux is fully disabled.
SELINUX=enforcing
把 SELINUX=enforcing 注釋掉:#SELINUX=enforcing ,然后新加一行為:
SELINUX=disabled
保存,關閉。
......
編輯/etc/sysconfig/selinux,找到:
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - SELinux is fully disabled.
SELINUX=enforcing
如果SELINUX已經是 SELINUX=disabled,那么就不用改了,否則就把SELINUX=enforcing 注釋掉,新加一行:
SELINUX=disabled
保存,退出。
SEVERE:OUI-10133:Invalid staging area. There are no top level components for Linux available for installation in this staging area.
enterprise.rsp文件里的FROM_LOCATION路徑不對。