服務器操做系統爲Debian Squeeze AMD64,沒有安裝X,經過ssh遠程訪問。客戶端爲debian testing,安裝有gnome桌面環境。html
先安裝10.2.0.1,而後安裝升級包10.2.0.4,比安裝10g r2客戶端多了一些操做,具體安裝過程以下:linux
1、安裝10.2.0.1c++
一、下載oracle 10g r2sql
下載回來的文件爲10201_database_linux_x86_64.cpio.gz
$gunzip 10201_database_linux_x86_64.cpio.gz
$cpio -idmv < 10201_database_linux_x86_64.cpioshell
解壓縮後全部的安裝文件位於database目錄下。數據庫
二、檢查硬件是否達到要求bash
物理RAM必須大於512M,如今的機器內存都沒問題。超過8GB RAM時,swap應該在物理RAM的0.75倍以上。Enterprise Edition安裝類型大約使用2G硬盤空間。
經過如下命令檢查,若是不知足須要作相應的調整服務器
$grep MemTotal /proc/meminfo //檢查物理內存大小
$grep SwapTotal /proc/meminfo //檢查swap大小
$df -h //檢查可用硬件空間大小oracle
三、安裝須要的軟件包,建立須要的符號連接app
安裝依賴包
$sudo apt-get install build-essential ia32-libs ia32-libs-dev libc6 libc6-i386 libc6-dev libc6-dev-i386 rpm libstdc++5
若是不安裝ia32-libs,安裝時會提示
/…/client/runInstaller: 63: /…/client/install/.oui: not found
建立符號連接
#ln -sf /usr/bin/awk /bin/awk
#ln -sf /usr/bin/rpm /bin/rpm
#ln -sf /usr/bin/basename /bin/basename
四、建立oracle須要的組和用戶
oracle安裝使用的組
#groupadd oinstall
系統管理使用的組
#groupadd dba
建立用戶oracle
#useradd -g oinstall -G dba oracle
爲用戶oracle設置密碼
#passwd oracle
建立nobody用戶和nobody組
#groupadd nobody
debian默認已經建立了nobody用戶,其屬於nogroup組,但$ORACLE_HOME/root.sh爲$ORACLE_HOME/bin/extjob設置的組爲nobody,因此這裏也要建立nobody組,不然root.sh會抱怨
/bin/chgrp: invalid group: `nobody’
五、配置內核參數和oracle用戶資源限制值
內核參數
oracle 10g要求的內核參數值以下
semmsl 250
semmns 32000
semopm 100
semmni 128
shmall 2097152
shmmax 物理內存的一半,以字節爲單位
shmmni 4096
file-max 65536
ip_local_port_range 最小:1024 最大:65000
rmem_default 262144
rmem_max 262144
wmem_default 262144
wmem_max 262144
若是系統默認的內核參數值高於oracle 10g須要的值,則保持默認參數不變,不然用oracle 10g要求的值來修改內核參數。修改參數時在/etc/sysctl.d目錄下新建oracle.conf,將新的參數值寫入此文件
kernel.sem = 250 32000 100 128
kernel.shmmax = 8589934592
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
kernel.sem參數值按semmsl semmns semopm semmni這個順序指定,中間以空格隔開
爲oracle用戶所在組賦予分配大內存頁的權限
#id oracle
uid=1001(oracle) gid=1001(oinstall) groups=1001(oinstall),1002(dba)
#echo 「1002″ >/proc/sys/vm/hugetlb_shm_group
這樣oracle纔有權限分配大內存頁,不然建庫時會有錯誤提示:
ORA-27125:unable to create shared memory segment
不過這樣設置重啓後參數就丟失了,能夠在/etc/sysctl.conf或/etc/sysctl.d/oracle.conf文件裏面添加該參數
vm.hugetlb_shm_group=1002
以後運行命令
#sysctl -p
或
#sysctl -p /etc/sysctl.d/oracle.conf
可以使該參數在內核內存中當即生效
若是oracle出現如下錯誤提示
ORA-27102: out of memory
Linux-x86_64 Error: 28: No space left on device
則須要適當增長內核參數shmall的值
shmall是按頁計數的全部共享內存的數量,能夠設置shmall爲SGA總量除以頁面大小來解決這個錯誤
獲取頁面大小
$getconf PAGE_SIZE
4096
也就是說頁面大小爲4K,若是SGA總數爲16G,則shmall的值爲16*1024*1024/4=4194304
oracle用戶資源限制值
在/etc/security/limits.d目錄下新建文件oracle.conf,文件名隨意,但擴展名必定要是conf,輸入一下內容
#
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
在/etc/profile.d目錄下新建文件oracle.sh,文件名隨意,但擴展名必定要是sh,輸入如下內容
#for oracle 10g r2
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
六、建立oracle基準目錄
oracle安裝目錄的設置最好遵循oracle OFA(Optimal Flexible Architecture)規範的建議。
用如下命令來設置ORACLE BASE目錄/var/oracle
#mkdir -p /var/oracle
#chown -R oracle:oinstall /var/oracle
#chmod -R 775 /var/oracle
七、設置oracle用戶的環境
設置oracle的用戶的主目錄home爲/var/oracle
#usermod -d /var/oracle oracle
修改oracle用戶的shell爲/bin/bash
#usermod -s /bin/bash oracle
從其餘用戶主目錄下拷貝.profile,.bashrc,.bash_logout文件到oracle用戶的主目錄,在.bashrc文件增長下面的行
umask 022
而後
$source .bashrc
最後設置oracle用戶遠程ssh登陸時啓用X11 Forward
也能夠不使用X遠程靜默安裝oracle
八、安裝oracle 10g x86_64數據庫
登陸到遠程系統
$ssh -XY oracle@remotehost
執行oracle安裝程序
$/path/to/client/runInstaller -ignoreSysPrereqs
由於oracle 10g認證的linux系統只有redhat-3, SuSE-9, redhat-4, UnitedLinux-1.0, asianux-1 和 asianux-2這幾個,因此在其餘linux發行版上安裝時須要指定命令行參數-ignoreSysPrereqs,不然會提示:
Checking operating system version: must be redhat-3, SuSE-9, redhat-4, UnitedLinux-1.0, asianux-1 or asianux-2
Failed <<<<
而後退出安裝
以後在本地機器能夠看到OUI(Oracle Universal Installer)界面,後面的安裝根據提示來就能夠了。安裝目錄修改成/var/oracle/product/10.2.0/db_1
安裝進度大約到65%時會有錯誤提示:
Error in invoking target 'collector' of makefile '/var/oracle/product/10.2.0/db_1/sysman/lib/ins_emdb.mk'.
這是oracle安裝程序的一個bug,能夠忽略此錯誤繼續安裝,對系統沒什麼影響。同時oraInventory/logs/目錄下的安裝日誌文件裏面會有以下相似錯誤提示:
INFO: /usr/bin/ld: i386 architecture of input file `/var/oracle/product/10.2.0/db_1/sysman/lib/snmccolm.o' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `/var/oracle/product/10.2.0/db_1/sysman/lib/libnmccol.a(nmccole.o)' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `/var/oracle/product/10.2.0/db_1/sysman/lib/libnmcbuf.a(nmcbuft.o)' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `/u01/ap
INFO: p/oracle/product/10.2.0/db_1/sysman/lib/libnmcbuf.a(nmcbufw.o)' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `/var/oracle/product/10.2.0/db_1/sysman/lib/libnmcbuf.a(nmcbufu.o)' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `/var/oracle/product/10.2.0/db_1/sysman/lib/libnmcbuf.a(snmcbufm.o)' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `/var/oracle/product/10.2.0/db_1/sysman/lib/
INFO: libnmcbuf.a(nmcbuff.o)' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `/var/oracle/product/10.2.0/db_1/sysman/lib//libnmadbg.a(nmadbg.o)' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `/var/oracle/product/10.2.0/db_1/sysman/lib//libnmadbg.a(snmadbg.o)' is incompatible with i386:x86-64 output
collect2: ld returned 1 exit status
INFO: make[1]: Leaving directory `/var/oracle/product/10.2.0/db_1/sysman/lib'
INFO: make[1]: *** [/var/oracle/product/10.2.0/db_1/sysman/lib/nmccollector] Error 1
make: *** [nmccollector] Error 2
這是由於oracle 10.2.0.1安裝包爲這幾個i386目標文件提供了錯誤版本的x86_64連接庫,以後安裝patchser 10.2.0.4時relink nmccollector會成功。
關於此錯誤更詳細的信息請參考Metalink NOTE 957982.1和Bug 8993720。
九、安裝後配置
安裝完成後,在oracle用戶的.bashrc文件中添加如下ORACLE環境變量
export ORACLE_BASE=/var/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/client_1
export PATH=$ORACLE_HOME/bin:$PATH
export TNS_ADMIN=$ORACLE_HOME/network/admin
#export SQLPATH=$ORACLE_HOME/scripts
2、升級到patchset 10.2.0.4
一、升級軟件
首先中止全部oracle服務,實際上若是安裝完成10.2.0.1後當即進行升級的話,oracle的全部服務並無運行,也就沒必要去中止它們
#/etc/init.d/oracle stop
oracle數據庫的啓動和關閉控制見Debian配置Oracle 10g自啓動
而後運行升級包升級軟件
$/path/to/patchset_directory/Disk1/runInstaller -ignoreSysPrereqs
按提示升級便可
二、升級數據庫
若是此前並無建立數據庫,那麼升級到10.2.0.4到此就結束了,而後能夠去建立新的數據庫。
若是此前已經建立了數據庫,那麼按如下步驟升級數據庫到10.2.0.4版本
啓動監聽器
$lsnrctl start
以sysdba身份登錄數據庫並運行升級腳本
$sqlplus / as sysdba;
SQL> STARTUP UPGRADE
SQL> SPOOL patch.log
SQL> @?/rdbms/admin/catupgrd.sql
SQL> SPOOL OFF
關閉並重啓數據庫
SQL> SHUTDOWN IMMEDIATE
SQL> STARTUP
編譯無效PL/SQL包
SQL> @?/rdbms/admin/utlrp.sql
檢查升級是否成功
SQL> SELECT COMP_NAME, VERSION, STATUS FROM SYS.DBA_REGISTRY;
若是全部組件的status都是valid表示升級成功
檢查是否有升級錯誤
SQL>select * from utl_recomp_errors;
若是使用Oracle Recovery Manager catalog, 須要對catalog進行升級,以下:
$rman catalog username/password@alias
RMAN> UPGRADE CATALOG;
修改系統兼容性參數
SQL> alter system set compatible='10.2.0.4.0' scope=spfile;
SQL> SHUTDOWN
SQL> STARTUP
安裝完成
UPDATE:
在Debian 當前的tesing分支Wheezy上安裝oracle 10g時,須要增長如下兩個符號連接:
#ln -sf /usr/lib/x86_64-linux-gnu/ /usr/lib64
#ln -sf /lib/x86_64-linux-gnu/libgcc_s.so.1 /lib64/libgcc_s.so.1
這是由於Wheezy開始支持multiarch,庫路徑作了比較大的調整。