RHEL5 X86-64上安裝Oracle 11gR2示例與總結

轉載: 原文地址: http://blog.csdn.net/oradh/article/details/27336855


進入Oracle DBA行業也有好幾年了,但是說到安裝Oracle的經驗,我還真不是特別多,印象中剛開始每次安裝都有點磕磕碰碰,隨着接觸Oracle的時間越來越長,各方面的原理、機制也都有一定的瞭解後,現在安裝Oracle已經很少會遇到問題了。基本上我把自己安裝Oracle的方式可以歸爲下面三個階段
  1. 剛接觸和學習Oracle,安裝完全沒有頭緒,只能按照網上或者書上有截圖的方式一步一步照樣安裝,出錯後,只能協助,然後重新安裝
  2. 接觸Oracle一段時間以後,安裝的基本原理、步驟也都瞭解了,一般都是再網上搜索一個安裝示例(不需要多複雜),然後進行安裝(或者是以前保存的安裝寶典文檔,以此進行安裝),這個階段,總會碰到一些莫名其妙的錯誤,對錯誤大部分也處於畏懼信息
  3. 近兩年開始,每次安裝Oracle,我都會對照Oracle MOS上的安裝文檔或者官方文檔一步一步操作,這個階段,安裝時很少會出現錯誤,即使出現錯誤,也都能夠解決(搜MOS,google等),心態平和
現在回過頭來總結,安裝時出現錯誤的情況,一般都是沒有按照官方的操作流程纔會導致,因此強烈建議,安裝Oracle時,能夠參考官方文檔的操作流程,這些安裝文檔,至少閱讀一遍,肯定能夠幫助你避免一些安裝時莫名其妙的錯誤。

我把安裝Oracle軟件和安裝一個普通的軟件進行對比,發現其實兩者之間本質上根本沒有多少區別,只是很多時候我們沒有關注而已,如下
序號 安裝Oracle軟件的需求 安裝普通軟件的需求 備註
1 符合要求的操作系統 符合要求的操作系統 任何軟件的運行都依賴操作系統,因此,任何軟件都需要運行符合要求的操作系統中
2 滿足條件的文件系統空間
特別注意/tmp目錄空間
滿足條件的文件系統空間 一般軟件都需要佔用一定的空間,因此,任何軟件的安裝,都需要滿足條件的文件系統空間
3 物理內存和虛擬內存
特別注意虛擬內存的要求
物理內存和虛擬內存 任何軟件的運行和安裝都不能離開內存
4 依賴組件(rpm包)
這一步對linux特別重要
肯定存在,只是我們可能沒有注意 任何軟件都是代碼構成,起碼得有能解析和運行這些代碼的組件。這也算是一種依賴組件
5 有意義的主機名 有意義的主機名 雖然軟件的安裝、運行不依賴主機名,但是,一個有意義的主機名會爲你後續省略很多麻煩事
6 網絡設置
主要爲/etc/hosts
網絡設置(需要網絡連接的軟件) 如果該軟件需要被其他機器連接,一般都需要配置網絡,不過我們很少關注而已
7 內核參數設置,配置軟件運行的一些特性,例如,最大可使用共享內存段大小等等 肯定也有,只是我們一般很少關注到,一般都是默認。  
8 創建軟件運行的專屬用戶,一般爲oracle 一般也都需要,windows除外 一般我們都會爲軟件創建一個專屬的運行用戶
9 給運行軟件的用戶添加限制 一般也都存在,只是我們很少注意 肯定都存在,我們不可能讓一個軟件發起幾千個進程什麼的,這就是一個限制
10 賦予運行軟件的用戶一些權限 一般也都存在,只是我們很少注意 軟件的運行肯定需要一些權限,所以,我們一般都會賦予它一些特權
11 給運行Oracle的用戶添加一些自己的環境變量 一般都存在,只是我們很少注意 例如,每個軟件的運行必須有PATH變量,只是很多時候我們沒有關注
12 特定的需求,特定的配置,例如RAC下的ssh互信什麼的 如果軟件有一些特殊特性,那肯定一般會存在一些特殊需求  


另外幾點
  1. 對於新安裝的Oracle,建議先安裝補丁或者升級包,然後再創建數據庫,避免安裝完後還需要升級數據庫
  2. 儘量使用custom database這樣的選項來創建數據庫,只安裝必要的組件
  3. 注意爲數據庫選擇一個正確的字符集(一旦選擇,基本不可更改)
  4. 爲數據庫設置一個符合你環境的合理參數

下面是我在linux 5.6 上安裝Oracle 11gR1的一次工作總結(非RAC環境),主要參考MOS文檔:Master Note For Oracle Database Server Installation (文檔 ID 1156586.1),下面是安裝步驟
一、操作系統與Oracle版本驗證檢查
檢查當前的linux版本是否能安裝對應的Oracle版本,例如,RHEL 5上安裝Oracle 11gR2是否經過官方驗證,具體每個linux版本對應的驗證,詳見MOS上的文檔
Certification Information for Oracle Database on Linux x86-64 (文檔 ID 1304727.1)

我們待安裝的操作環境如下,可看到滿足需求
內核版本:Linux localhost.localdomain 2.6.18-238.el5 #1 SMP Thu Jan 13 15:51:15 EST 2011 x86_64 x86_64 x86_64 GNU/Linux
操作系統版本:RHEL 5.6

二、硬件需求檢查(來自MOS)

    a.) At least 1.0 Gb (1024MB) of physical RAM. Recommended, 2gb or more.
    b.) Swap disk space proportional to the system's physical memory as follows:

RAM Swap Space
Between 1 GB and 2 GB 1.5 times the size of RAM
Between 2 GB and 16 GB equal to the size of RAM
More than 16 GB 16 GB

    c.) 1024 Mb of disk space (and less than 2Tb of disk space) in the /tmp directory.    

    d.) approximately 4.4 Gb of local disk space for the database software. 
    e.) approximately 1.7 Gb of disk space for a preconfigured database that uses file system storage (optional) 

我們待安裝的環境數據如下,可以看到滿足硬件方面的需求(內存16G,交換空間18G)

[root@localhost ~]# free -m
             total       used       free     shared    buffers     cached
Mem:         16021      10078       5942          0         81        879
-/+ buffers/cache:       9117       6903
Swap:        18015          0      18015

三、軟件需求檢查
(1)RHEL 5.2或者更高版本,內核版本必須是2.6.18-92或者以上
(2)操作系統組件需求檢查(rpm包),下面這些rpm必須安裝
binutils-2.17.50.0.6-6.el5 (x86_64)
compat-libstdc++-33-3.2.3-61 (x86_64)
compat-libstdc++-33-3.2.3-61 (i386)
elfutils-libelf-0.125-3.el5 (x86_64)
glibc-2.5-24 (x86_64)
glibc-2.5-24 (i686) 
glibc-common-2.5-24 (x86_64)
ksh-20060214-1.7 (x86_64)
libaio-0.3.106-3.2 (x86_64) 
libaio-0.3.106-3.2 (i386) 
libgcc-4.1.2-42.el5 (i386)
libgcc-4.1.2-42.el5 (x86_64) 
libstdc++-4.1.2-42.el5 (x86_64)
libstdc++-4.1.2-42.el5 (i386) 
make-3.81-3.el5 (x86_64)
unixODBC-2.2.14 (x86_64)
unixODBC-2.2.14 (i386)
unixODBC-devel-2.2.14 (x86_64)
unixODBC-devel-2.2.14 (i386)
elfutils-libelf-devel-0.125-3 (x86_64)
elfutils-libelf-devel-static-0.125-3.el5.x86_64.rpm 
gcc-4.1.2-42.el5 (x86_64)
gcc-c++-4.1.2-42.el5 (x86_64)
glibc-devel-2.5-24 (x86_64)
glibc-devel-2.5-24 (i386) 
glibc-headers-2.5-24 (x86_64)
kernel-headers-2.6.18-92 (x86_64)
libgomp-4.1.2-42 (x86_64) 
libstdc++-devel-4.1.2-42 (x86_64)
libaio-devel-0.3.106-3.2 (x86_64) 
libaio-devel-0.3.106-3.2 (i386)
sysstat-7.0.2-1 (x86_64)
kernel-headers-2.6.18-92.el5.x86_64.rpm 
libgomp-4.1.2-42.el5.x86_64.rpm 
 注意: 64位系統中需要部分32RPM包,檢查系統時注意包的位數
通過下面的命令能查看軟件包架構及位數
rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n" | grep binutils 
rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n" | grep compat-libstdc++
rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n" | grep elfutils-libelf
rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n" | grep glibc
rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n" | grep glibc-common
rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n" | grep ksh
rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n" | grep libaio
rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n" | grep libgcc
rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n" | grep libstdc++
rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n" | grep make
rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n" | grep elfutils-libelf-devel
rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n" | grep gcc
rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n" | grep gcc-c++
rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n" | grep glibc-devel
rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n" | grep glibc-headers
rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n" | grep kernel-headers
rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n" | grep libgomp
rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n" | grep libstdc++-devel
rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n" | grep libaio-devel
rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n" | grep sysstat
rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n" | grep elfutils-libelf-devel-static
rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n" | grep kernel-headers
rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n" | grep libgomp

安裝rpm包的方法類似如下(缺失的包可以通過安裝光盤中找到)
[root@ localhost  rpmpgk]# rpm -ivh libaio-devel-0.3.106-5.i386.rpm
warning: libaio-devel-0.3.106-5.i386.rpm: Header V3 DSA signature: NOKEY, key ID e8562897
Preparing...                ########################################### [100%]
   1:libaio-devel           ########################################### [100%]
[root@ localhost  rpmpgk]# rpm -ivh libaio-devel-0.3.106-5.x86_64.rpm
warning: libaio-devel-0.3.106-5.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID e8562897
Preparing...                ########################################### [100%]
   1:libaio-devel           ########################################### [100%]
.....省略一部分rpm安裝過程.........

四、創建用戶、用於運行Oracle軟件
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
passwd oracle
備註
1.如果是RAC環境,建議所有的用戶和組的id都一致,可避免一些安裝問題
2.對於運行oracle軟件的用戶,沒有明確歸檔必須爲"oracle"用戶,可以選擇其它用戶名,其它用戶名運行oracle軟件更加安全。

五、修改主機名(符合具體環境)
  1. 通過hostname命令修改(這種方式重啓後失效)
  2. 修改/etc/sysconfig/network文件中的Hostanme參數,永久生效
  3. 修改/etc/hosts文件,修改爲新的主機名
具體步驟如下:
[root@localhost /]# hostname javadb
[root@localhost /]# hostname
javadb
[root@localhost /]# cp /etc/sysconfig/network /etc/sysconfig/network0527
[root@localhost /]# cp /etc/hosts /etc/hosts0527
[root@javadb ~]# cat /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=javadb
[root@javadb ~]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1               javadb localhost.localdomain localhost
::1             localhost6.localdomain6 localhost6
xx.xx.xx.xx     javadb

六、操作系統環境設置
(1)修改/etc/sysctl.conf文件中操作系統核心參數配置,下面這些參數設置如下(如果當前核心參數設置的值比下面的更大,則這些參數無需修改,其中net.ipv4.ip_local_port_range參數的值必須完全一樣)
kernel.shmall = 4294967296
kernel.shmmax = 68719476736       --最大共享內存段,用於Oracle SGA,不能低於你準備設置的SGA大小
kernel.shmmni = 4096 
kernel.sem = 250 32000 100 128 
fs.file-max = 6815744
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500 
net.core.rmem_default = 262144 
net.core.rmem_max = 4194304 
net.core.wmem_default = 262144 
net.core.wmem_max = 1048576
備註:這是基於我的安裝環境進行的核心參數配置,具體對於不同的安裝環境需要具體配置,主要是kernel.shmmax和kernel.shmall兩個參數可能需要重新配置
具體步驟
cp /etc/sysctl.conf /etc/sysctl.conf0527   --備份
vi /etc/sysctl.conf    /* 將上面的參數一一設置爲上面的值(如果當前核心參數的值比上面的更大,則不用修改) */
sysctl -p         /* 使修改的核心參數的配置生效 */
(2)設置oracle用戶的一些限制(針對運行oracle軟件的用戶)
a. 在/etc/security/limits.conf文件中配置添加如下內容
oracle soft nproc 2047 
oracle hard nproc 16384 
oracle soft nofile 1024 
oracle hard nofile 65536 
oracle soft stack 10240
b. 在/etc/pam.d/login文件中添加如下內容
session required pam_limits.so
c. 在/etc/profile文件中添加如下內容
if [ $USER = "oracle" ]; then 
   if [ $SHELL = "/bin/ksh" ]; then 
       ulimit -u 16384 
       ulimit -n 65536 
   else 
       ulimit -u 16384 -n 65536 
   fi 
fi
備註
a.如果安裝了Java package,取消Java相關的環境變量設置,例如JAVA_HOME
b.操作系統默認安裝的SELinux 爲"enforcing"模式,這會影響後續sqlplus的使用(安裝階段不會有問題),必須切換爲"Permissive"模式

具體步驟
cp /etc/security/limits.conf /etc/security/limits.conf0527
vi  /etc/security/limits.conf
cp /etc/pam.d/login /etc/pam.d/login0527
vi /etc/pam.d/login
cp /etc/profile /etc/profile0527
vi /etc/profile

七、Oracle用戶環境變量設置
在oracle用戶下的.bash_profile中設置如下環境變量
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1; export ORACLE_HOME
ORACLE_SID=javadb; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:/home/oracle/sh:/home/oracle/dh/scripts:$PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;        export CLASSPATH
NLS_LANG=AMERICAN_AMERICA.ZHS16GBK;export NLS_LANG
export EDITOR=vim
export LANG=en_US.UTF-8
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

具體步驟
su - oracle
cp .bash_profile .bash_profile0527
vi .bash_profile

八、啓用linux的HUGEPAGES(大頁面內存2M)特性來管理oracle數據庫需要的內存(SGA大於8G,建議都通過linux大內存頁面來管理)
a) 在/etc/security/limits.conf 中設置memlock值(單位KB),該值小於OS內存大小, 
*   soft   memlock    98474836
*   hard   memlock    98474836
b)重新登錄root和oracle用戶,檢查memlock  limit
$ ulimit -l 
98474836
c)確保你的全部實例都已經啓動(包括ASM) ,然後根據Document 401749.1 的hugepages_settings.sh去評估需要設置的Hugepages的大小。
$ ./hugepages_settings.sh 
d)編輯/etc/sysctl.conf 設置 vm.nr_hugepages參數:
 vm.nr_hugepages = 30000 (大於SGA所需內存,再多加一部分即可)
Sysctl –p(使配置生效)
e)停止實例並重啓OS系統
f)檢查設置是否生效
系統重啓後,啓動全部的數據庫,通過以下命令檢查
# grep HugePages /proc/meminfo 
HugePages_Free< HugePages_Total 既說明Hugepages已經生效,同時HugePages_Rsvd不爲“0”.
注意:此需求只有在linux中才需要,其它hp-ux、aix都不要配置大內存,也沒有大內存頁面這一說法。

九、安裝oracle軟件
解壓安裝包後進入到database目錄
 ./runInstaller 
圖形界面,一步一步即可!

希望這篇文章可以對安裝Oracle還處於磕磕碰碰的朋友有所幫助

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章