上周用VM在RHEL4下裝了oracle10.2,中間碰到不少問題。
總結了一下發個貼子,若有不足之處,請大家指正,謝謝!
參考資料:
Oracle官方網站: http://download.oracle.com/docs/html/B10813_01/toc.htm
國外非Oracle官方網站: http://www.puschitz.com/Installi ... uxErrorsAndProblems
一、以root使用者登入, 進行如下操作:
1 檢查硬體要求
* 主要包括:
- **********************************************
- * 記憶體: >=512M *
- * 交換空間: 1.0 GB或者2倍記憶體大小 *
- * 臨時空間(/tmp>):>=400M *
- * 軟體所需空間: >=2.5G *
- * 資料庫檔案: >=1.2G *
- **********************************************
複製代碼
# cat /etc/issue
# uname -r
# grep "model name" /proc/cpuinfo
# grep MemTotal /proc/meminfo
# grep SwapTotal /proc/meminfo
# free
# df -k /tmp
# df -k
2 檢查軟體要求(安裝軟體包)
說明:雖然官方文檔只要求如下幾個軟體包(具體版本號碼可能不一樣),
但實際上在真正安裝的時候,往往需要更多.
binutils-2.15.92.0.2-10.EL4
compat-db-4.1.25-9
control-center-2.8.0-12
gcc-3.4.3-9.EL4
gcc-c++-3.4.3-9.EL4
glibc-2.3.4-2
glibc-common-2.3.4-2
gnome-libs-1.4.1.2.90-44.1
libstdc++-3.4.3-9.EL4
libstdc++-devel-3.4.3-9.EL4
make-3.80-5
pdksh-5.2.14-30
sysstat-5.0.5-1
xscreensaver-4.18-5.rhel4.2
2.1 首先,在你的RHEL光碟片裡找到如上RPM包;
2.2 然後,執行以下命令:
# rpm -Uvh binutils*
# rpm -Uvh compat-db*
# rpm -Uvh control-center*
# rpm -Uvh gcc-3.4*
# rpm -Uvh gcc-c++*
# rpm -Uvh glibc-2.3*
# rpm -Uvh glibc-common*
# rpm -Uvh gnome-libs*
# rpm -Uvh libstdc++-3.4*
# rpm -Uvh libstdc++-devel*
# rpm -Uvh make*
# rpm -Uvh pdksh*
# rpm -Uvh sysstat*
# rpm -Uvh xscreensaver*
說明:若執行以上命令時提示須安裝其它,則再從RHEL4的安裝盤拷貝相應的包,然後再繼續安裝
3 建立安裝資料庫的使用者、組和安裝目錄
3.1 建立使用者和相關的組
# /usr/sbin/groupadd oinstall
# /usr/sbin/groupadd dba
# /usr/sbin/useradd -g oinstall -G dba oracle
# passwd oracle
3.2 建立相關目錄並授權
- # mkdir -p /usr/app/oracle (the Oracle base directory)
- # mkdir -p /usr/oradata (an optional Oracle datafile directory)
- # chown -R oracle:oinstall /usr/app/oracle /usr/oradata
- # chmod -R 77
複製代碼
4 配置核心參數
4.1 修改核心參數並檢查
4.1.1 修改參數
# vi /etc/sysctl.conf
說明:在該檔案末尾加入如下內容:
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.shmall = 2097152
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
4.1.2 啟用新參數
# /sbin/sysctl -p
4.1.3 檢查參數
# /sbin/sysctl -a | rpm sem
# /sbin/sysctl -a | rpm shm
# /sbin/sysctl -a | rpm file-max
# /sbin/sysctl -a | rpm ip_local_port_range
4.2 設定oracle使用者的shell限制
4.2.1 編輯limits.conf
# vi /etc/security/limits.conf
說明:添加如下的行
# nofile(可開啟的檔案描述符的最大數)和nproc(單個使用者可用的最大進程數量)
* soft nproc 2047
* hard nproc 16384
* soft nofile 1024
* hard nofile 65536
4.2.2 編輯/etc/pam.d/login,添加1行:
# vi /etc/pam.d/login
session required /lib/security/pam_limits.so
4.2.3 編輯/etc/profile,添加如下部分:
- # 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
複製代碼
5 裝載CD,或上傳並解壓縮檔案
5.1 若裝載CD:
# mount /media/cdrom
5.2 若上傳並解壓縮檔案
5.2.1 上傳:可用ftp命令或ftp工具
5.2.2 解壓縮:
# unzip 10201_database_linux32.zip -d /tmp/oracle
5.2.3 改變屬主和許可權:
# chown oracle /tmp/oracle
# chmod -R +755 /tmp/oracle
5.3 設定在安裝Oracle的機器上以oracle使用者安裝
- # xhost localhost:oracle
複製代碼
二、以oracle使用者登入, 進行如下操作
1 配置oracle使用者的環境變數
1.1 切換到Oracle使用者
# su - oracle
$ cd
1.2 設定環境變數
$ vi .bash_profile (在檔案後面添加如下內容)
export ORACLE_BASE=/usr/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export ORACLE_SID=SHDB
export PATH=$PATHHOME/binORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
export LANG=zh_CN.GBK
export NLS_LANG="SIMPLIFIED CHINESE_CHINA".ZHS16GBK
1.3 使環境變數生效
$ source .bash_profile
1.4 設定本地字元集類型
$ export LC_CTYPE=en_US.UTF-8
2 開始安裝
說明:為了便於後結安裝,最好在安裝前開啟兩個shell視窗,1個以root登入,另外1個以oracle登入
2.1 $ ./runInstaller
2.2 根據安裝提示進行相應操作,中間需要root執行2個指令碼:
# $ORACLE_BASE/oraInventory/orainstRoot.sh
# $ORACLE_HOME/root.sh
說明:把$ORACLE_BASE和$ORACLE_HOME替換成實際的目錄即可
2.3 安裝過程中,不要選擇建立資料庫;
其它就沒什麼了,只鬚根據提示進行相應操作,直至安裝成功。
三、安裝過程的問題
1 Q: 執行./runInstaller後,彈不出安裝介面,提示如下錯誤資訊:
---------------------------------------------------------------------------------------------
Xlib: connection to ":0.0" refused by server
Xlib: No protocol specified
Error: Can't open display: :0.0
A: 在安裝Oracle的機器上,以root身份運行命令:
- # xhost localhost:oracle
複製代碼
2 Q:安裝時,彈出的介面出現亂碼
---------------------------------------------------------------------------------------------
A:以oracle使用者身份,設定本地字元集類型
$ export LC_CTYPE=en_US.UTF-8
3 Q:安裝過程中,提示OUI-10066錯誤:
Not all the dependencies for the component Oracle Database 10g 10.2.0.1.0 could be found.
Missing component oracle.doc 10.2.0.1.0.
---------------------------------------------------------------------------------------------
A:可能是oracle安裝檔案沒有完全解壓縮,重新解壓縮一下再安裝
注意:若用root解壓後,更改其屬主為oracle
4 Q:INFO: /bin/sh: /usr/bin/gcc: No such file or directory
......
INFO: cannot stat `ntcontab.o'
INFO: No such file or directory
......
Exception Name: MakefileException
Exception String: Error in invoking target 'ntcontab.o' of
makefile '/usr/app/oracle/product/10.2.0/db_1/network/lib/ins_net_client.mk'
---------------------------------------------------------------------------------------------
A: 檢查Linux系統的所有補丁是否安裝,尤其是gcc包,然後再繼續安裝
四 建立與設定資料庫(使用oracle使用者登入RHEL)
1 建立資料庫
1.1 以oracle使用者登入RHEL, 輸入:
$ dbca
1.2 在輸入資料庫SID時, 要注意保持與oracle設定檔的$ORACLE_SID的值一致.
否則,建立完資料庫後就啟動不了(具體看下節).
2 佈建服務名
修改listener.ora
$ vi $ORACLE_HOME/network/admin/tnsname.ora
增加以下內容:
--------------------------------------------------------------------------
# 說明: 把HOST的值設定為你要安裝資料庫那台機器的IP
SHDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.135.128)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = SHDB)
)
)
3 設定資料庫的監聽器
3.1 修改listener.ora
$ vi $ORACLE_HOME/network/admin/listener.ora
輸入以下內容:
--------------------------------------------------------------------------
# 說明: 把HOST的值設定為你要安裝資料庫那台機器的IP
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.135.128)(PORT = 1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /usr/app/oracle/product/10.2.0/db_1)
(PROGRAM = extproc)
)
(SID_DESC =
(SID_NAME = SHDB)
(ORACLE_HOME = /usr/app/oracle/product/10.2.0/db_1)
)
)
3.2 啟動監聽器
$ lsnrctl start
4 啟動資料庫
$ sqlplus / as sysdba
$ startup
若資料庫能正常啟動, 則配置到此結束
五、設定資料庫的問題
1 Q: TNS-01155: Incorrectly specified SID_LIST
NL-00303: syntax error in NV string
---------------------------------------------------------------------------------------------
A: 可能是profile中設定的sid和你建立的DB的SID不一致
(1) 查看資料庫的SID是否與.bash_profile的ORACLE_SID一致
$ echo $ORACLE_SID
$ ls $ORACLE_HOME/dbs/init*.ora
(2) 修改.bash_profile的ORACLE_SID為你建立DB的SID, 然後儲存並生效
$ source .bash_profile
(3) 建立pfile
$ sqlplus /nolog
SQL> connect /as sysdba
SQL> create pfile='/usr/app/oracle/product/10.2.0/db_1/initSHDB.ora' from spfile='/usr/app/oracle/product/10.2.0/db_1/dbs/spfileSHDB.ora';
SQL> startup pfile='/usr/app/oracle/product/10.2.0/db_1/initSHDB.ora'
或
SQL> startup nomount pfile='/usr/app/oracle/product/10.2.0/db_1/initSHDB.ora'
或
SQL> startup
說明: 把pfile和spfile的路徑修改成這兩個檔案在系統的實際位置即可
2 Q: ORA-01102:cannot mount database in EXCLUSIVE mode
---------------------------------------------------------------------------------------------
A: 可能是關閉異常,造成資料庫已經裝載或共用的假象,而造成以下問題:
(1) "lk<sid>" and "sgadef<sid>.dbf"這兩個用於鎖記憶體的檔案存在著。
oracle$cd $ORACLE_HOME/dbs
oracle$ls -l sgadef<sid>.dbf
* 如果存在刪掉它
oracle$rm sgadef<sid>.dbf
oracle$ls -l lk<sid>
* 如果存在刪掉它
oracle$rm lk<sid>
(2) pmon、smon、lwgw及dbwr這些後台進程依然存在著
oracle$ps -ef | grep ora_ | grep $ORACLE_SID
* 如果有pmon這些後台進程的殘留,kill -9掉它
oracle$kill -9 pid
(3) Oracle開闢的共用記憶體沒有釋放掉
① 清共用記憶體段
oracle$ipcs -m --顯示一下,看owner是Oracle使用者的
oracle$ipcrm -m <Shared_Memory_ID>
② 清訊號集
oracle$ipcs -s --顯示一下,看owner是Oracle使用者的
oracle$ipcrm -s <Semaphore_ID>
http://www.itpub.net/thread-910255-1-1.html