一、安裝前的準備
1、由root執行的任務(用root用戶登錄)
1.1 設置系統變量
1) 用文本編輯器打開"/etc/system" 文件
# vi /etc/system
2)在 "/etc/system" 文件結尾插入如下幾行
set shmsys:shminfo_shmmax=4294967295
set shmsys:shminfo_shmmin=1
set shmsys:shminfo_shmmni=512
set shmsys:shminfo_shmseg=128
set semsys:seminfo_semmap=64
set semsys:seminfo_semmni=4096
set semsys:seminfo_semmns=4096
set semsys:seminfo_semmsl=4096
set semsys:seminfo_semmnu=4096
set semsys:seminfo_semume=64
set semsys:seminfo_semopm=100
注:
SHMMAX maximum size of a shared memory segment
(共享內存段的最大字節數)
SHMMIN minimum size of shared memory segment
(共享內存段的最小尺寸)
SHMMNI maximum number of shared memory identifiers in the system
(系統中共享內存標識符的最大數目)
SHMSEG maximum number of shared memory segments a user process can attach
(每個用戶進程可分配的最大共享內存段數目)
SEMMNI maximum number of semaphore identifiers in the system
(系統中信號燈標識符的最大數目)
SEMMSL maximum number of semaphores in a set
(每個(信號燈)集合中的信號燈的最大數目)
SEMMNS maximum number of semaphores in the system
(系統中信號燈的最大數目)
SEMOPM maximum number of operations per semop call
(每個semop調用的信號燈的最大數目)
SEMVMX semaphore maximum value
(信號燈最大值)
注意!
上面提到的 SEMMSL 和 SEMMNS 的值僅適用於最初的安裝,安裝完成後應根據應用的實際情況進行調整,其中
★ SEMMSL 的值可以通過以下方式計算得到:
所有Oracle實例的"init[SID].ora"文件中最大的PROCESSES值 + 10
★ SEMMNS 的值可以通過以下方式計算得到:
系統中各個Oracle實例的"init[SID].ora"文件中PROCESSES值的總和(不包括最大的那個PROCESSES值)+ 最大的那個PROCESSES值 * 2 + 10 * Oracle實例的個數。
注:[SID]即爲具體的數據庫實例名
例如,一個有三個 Oracle實例的系統,在各自的"initsid.ora"文件中的PROCESSES參數設置爲下列值:
ORACLE_SID=A, PROCESSES=100
ORACLE_SID=B, PROCESSES=100
ORACLE_SID=C, PROCESSES=200
則 SEMMSL 值的計算方法如下:
SEMMSL = [(c=200) + 10] = 210
則 SEMMNS 值的計算方法如下:
SEMMNS = [(A=100) + (B=100)] + [(C=200) * 2] + [(# of instances=3) * 10] = 630
對於操作系統,設置的參數值過高會導致機器不能啓動,對參數的限制,請參閱Sun SPARC Solaris系統管理文檔。
3) 重啓系統,以使新的內核參數生效
# sync;sync;reboot
4) 系統重啓後,可以通過sysdef命令檢查 "Maximum Shared Memory" 和 "Minimum Shared Memory" 的數值(在列表底部的"Shared Memory Area" 部分)
# sysdef
1.2 建立組、用戶及相關目錄
1) 創建 "dba" 和 "oinstall" 組,添加用戶名爲 "oracle" 的用戶,併爲其設置密碼
# groupadd dba
# groupadd oinstall (可選)
# useradd -g dba -G oinstall -d /export/home/oracle -m -s /bin/sh oracle
# passwd oracle
以上操作也可通過admintool管理工具來實現
# admintool
2) 創建相關目錄
# mkdir -p /u01/oracle/product/8.1.7
# chown -R oracle:dba /u01/oracle
# chmod -R 775 /u01/oracle
# mkdir /var/opt/oracle
# chown -R oracle:dba /var/opt/oracle
2、由 "oracle user" 執行的任務
1) 退出root登錄,用之前創建的oracle用戶登錄
2) 修改oracle用戶的 ".profile" 配置文件
默認識沒有.profile這個文件的,但可通過oracle用戶下的local.profile這個模板文件來生成.profile這個文件
# mv local.profile .profile
#vi .profile
添加如下內容
DISPLAY=192.168.0.28:0.0
ORACLE_BASE=/u01/oracle
ORACLE_HOME=/u01/oracle/product/8.1.7
ORACLE_SID=oracle8
ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
CLASSPATH=$ORACLE_HOME/JRE/lib:$ORACLE_HOME/jlib:$ORACLE_HOME/product/jlib:$ORACLE_HOME/network/jlib:$ORACLE_HOME/rdbms/jlib
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
NLS_LANG=american_america.ZHS16GBK
PATH=/usr/bin:/usr/ucb:/etc:/usr/local/bin:/usr/ccs/bin:/usr/openwin/bin
PATH=$ORACLE_HOME/bin:$PATH
export PATH
export DISPLAY ORACLE_HOME ORACLE_BASE ORACLE_SID ORA_NLS33 LD_LIBRARY_PATH NLS_LANG CLASSPATH
3) oracle用戶重新登錄,以使之前修改的 ".profile" 文件配置生效
4) 通過env命令檢查剛纔的配置是否生效
$ env
5) 進入oracle安裝文件所在目錄並開始進行安裝
(假設oracle817安裝文件存在於"/export/home/oracle/ora817/Disk1")
$ cd /export/home/oracle/ora817/Disk1
$ ./runInstaller
注:1、下載的Oracle cpio文件的解開方法爲:cpio -idcmv < <filename.cpio> 。
2、安裝過程中,當提示要運行 root.sh ($ORACLE_HOME/root.sh)腳本時,要手工打開一個新的console(控制檯)以root用戶身份執行。
3、如安裝完成後初始化數據庫過程中遇到 ORA-03114: not connected to ORACLE 錯誤,則應適當加大 SEMMSL, SEMMNS 等參數的數值。
6) 安裝完後的簡單測試
默認已經是oracle用戶登錄,執行 lsnrctl start 啓動Oracle LISTENER
$ lsnrctl start
當監聽啓動成功後,將會看到如下類似信息:
LSNRCTL for Intel SVR4 UNIX: Version 8.1.7.0.0 - Production on 23-JUN-2002 04:02:46
(c) Copyright 1998 Oracle Corporation. All rights reserved.
Starting /u01/oracle/product/8.1.7/bin/tnslsnr: please wait...
TNSLSNR for Intel SVR4 UNIX: Version 8.1.7.0.0 - Production
System parameter file is /u01/oracle/product/8.1.7/network/admin/listener.ora
Log messages written to /u01/oracle/product/8.1.7/network/log/listener.log
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC)))
Listening on:
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=gokmen.selcuk.edu.tr)(PORT=1521)))
Listening on:
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=gokmen.selcuk.edu.tr)(PORT=2481))
(PROTOCOL_STACK=(PRESENTATION=GIOP)
(SESSION=RAW)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Intel SVR4 UNIX: Version 8.1.7.0.0 - Production
Start Date 23-JUN-2002 04:02:47
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security OFF
SNMP OFF
Listener Parameter File /u01/oracle/product/8.1.7/network/admin/listener.ora
Listener Log File /u01/oracle/product/8.1.7/network/log/listener.log
Services Summary...
PLSExtProc has 1 service handler(s)
orcl has 1 service handler(s)
The command completed successfully
如果看到的是如下類似信息,說明監聽已經啓動:
LSNRCTL for Intel SVR4 UNIX: Version 8.1.7.0.0 - Production on 24-JUN-2002 05:02:46
(c) Copyright 1998 Oracle Corporation. All rights reserved.
TNS-01106: Listener using listener name LISTENER has already been started
7)編寫數據庫啓動腳本
由於它自帶的啓動腳本有問題,所以這裏我乾脆自己寫了一個簡單的腳本
啓動和關閉腳本
1)、啓動腳本(dbstart)
#! /bin/bash
su - oracle<EOF
. /home/oracle/.bash_profile
lsnrctl start
svrmgrl<EOE
connect internal
startup
exit
EOE
exit
EOF
2)、關閉腳本(dbstop)
#! /bin/bash
su - oracle<EOF
. /home/oracle/.bash_profile
lsnrctl stop
svrmgrl<EOE
connect internal
shutdown immediate
exit
EOE
exit
EOF
然後賦可執行權限並拷貝到/etc/init.d下
Chmod +x dbstart
Chmod +x dbstop
在做連接
ln –s /etc/init.d/dbstart /etc/rc2.d/S99dbstart
ln –s /etc/init.d/dbstop /etc/rc0.d/K10dbstop
到此oracle就可以在solaris下正常運行了