Oracle Linux 6.4安裝Oracle 11g R2+RAC+ASM圖文詳解
一、版本說明
發現網上相關文章很多但是不是很專,因此細化版本為了使文章更加實用。
這次搭建的是Oracle 11g R2 11.2.0.4的RAC環境,使用的作業系統版本為Oracle Linux 6.4
- [root@node1 ~]# lsb_release -a
- LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
- Distributor ID: OracleServer
- Description: Oracle Linux Server release 6.4
- Release: 6.4
- Codename: n/a
核心版本:
- [root@node1 ~]# uname -r
- 2.6.39-400.17.1.el6uek.x86_64
UEK代表Unbreakable Enterprise Kernel,是Oracle專門為Oracle Linux定製的核心,可以提供線上支援和對資料庫的支援,算是OracleLinux的賣點之一。(本文中一些配置過程會因實用UEK版本而得到簡化)
二、Oracle 11g R2 RAC安裝整體步驟
1.伺服器準備 (system, storage, and network administration):
- 安裝作業系統並升級到滿足Oracle安裝要求的版本。
- 建立安裝所需要的組、使用者以及軟體的家目錄。
- 設定GNS網域名稱如果您打算部署GNS,並且完成網路地址在DNS和伺服器上的配置。
- 設定所要求的儲存。
- 將所有安裝檔案拷貝到一個節點上。
2.安裝Oracle Grid叢集基礎架構, 包括Oracle Clusterware和Oracle ASM (system and storage administration):
- 為叢集安裝Oracle Grid 基礎架構軟體。在安裝過程中,Fixup指令碼進行作業系統參數、SSH和使用者環境變數等參數的附加調整。
- 升級Oracle Clusterware和Oracle ASM到最新補丁。
3.安裝Oracle RAC (database administration):
- 安裝Oracle RAC
- 打補丁到最新版本
- 完成安裝後的調試
三、詳細安裝過程及說明(參考官方文檔)
1.通過SecureCRT或TerminalX建立命令列串連。
2.在每一個節點上添加安裝Oracle Grid的使用者、組和家目錄,並設定許可權。
- # /usr/sbin/groupadd -g 1000 oinstall
- # /usr/sbin/groupadd -g 1020 asmadmin
- # /usr/sbin/groupadd -g 1021 asmdba
- # /usr/sbin/groupadd -g 1022 asmoper
- # /usr/sbin/groupadd -g 1031 dba
- # /usr/sbin/groupadd -g 1032 oper
- # useradd -u 1100 -g oinstall -G asmadmin,asmdba,asmoper,oper,dba grid
- # useradd -u 1101 -g oinstall -G dba,asmdba,oper oracle
- # mkdir -p /u01/app/11.2.0/grid
- # mkdir -p /u01/app/grid
- # chown -R grid:oinstall /u01
- # mkdir /u01/app/oracle
- # chown oracle:oinstall /u01/app/oracle
- # chmod -R 775 /u01/
參照官方文檔,採用GI與DB分開安裝和許可權的策略,對於多執行個體管理有利。
3.檢查伺服器各個節點的配置是否符合安裝要求
I.伺服器硬碟空間要求
/tmp目錄大小至少:1GB
安裝Grid Infrastracture所需空間:6.6GB
安裝Oracle Database所需空間:4GB
此外安裝過程中分析、收集、追蹤檔案所需空間:10GB
建議總共至少30GB,放心!(此處不包含ASM或NFS的空間需求)
II.伺服器記憶體要求
記憶體大小:至少2.5GB
Swap大小:
當記憶體為2.5GB-16GB時,Swap需要大於等於系統記憶體。
當記憶體大於16GB時,Swap等於16GB即可。
III.檢查和調試代碼
- # grep MemTotal /proc/meminfo
- # grep SwapTotal /proc/meminfo
- # df -h /tmp
- # lvcreate -L 2G -n lv_tmp vg_temp
- # mount /dev/vg_temp/lv_tmp /tmp
- # df -h /tmp
4.設定作業系統相關參數
這一項在非Oracle Linux的作業系統中算是一項比較繁瑣的工作,然而我們這次安裝的版本是Oracle Linux 6.4 with Unbreakable Enterprise Kernel,因此我們有了更簡單的辦法,就是通過安裝Oracle Preinstallation RPM來實現相關作業系統參數的調整和軟體包的安裝。
這個安裝包主要完成以下工作:
Automatically downloads and installs any additional RPM packages needed for installing Oracle Grid Infrastructure and Oracle Database, and resolves any dependencies
Creates an oracle user, and creates the oraInventory (oinstall) and OSDBA (dba) groups for that user
As needed, sets sysctl.conf settings, system startup parameters, and driver parameters to values based on recommendations from the Oracle Preinstallation RPM program
Sets hard and soft resource limits
Sets other recommended parameters, depending on your kernel version
此安裝包位於作業系統安裝盤的Packages目錄下。
點擊(此處)摺疊或開啟
- # cd /mnt/install_DVD
- # cd Packages
- # ll | grep preinstall
- -rw-r--r-- 1 root root 15524 Jan 16 2013 oracle-rdbms-server-11gR2-preinstall-1.0-7.el6.x86_64.rpm
- # rpm -ivh oracle-rdbms-server-11gR2-preinstall-1.0-7.el6.x86_64.rpm
安裝包修改/etc/sysctl.conf的內容如下:
其中標有oracle-rdbms-server-11gR2-preinstall字樣注釋的便是安裝包所添加的參數。
- # cat /etc/sysctl.conf
- # Kernel sysctl configuration file for Red Hat Linux
- #
- # For binary values, 0 is disabled, 1 is enabled. See sysctl(8) and
- # sysctl.conf(5) for more details.
- # Controls IP packet forwarding
- net.ipv4.ip_forward = 0
- # Controls source route verification
- net.ipv4.conf.default.rp_filter = 1
- # Do not accept source routing
- net.ipv4.conf.default.accept_source_route = 0
- # Controls the System Request debugging functionality of the kernel
- kernel.sysrq = 0
- # Controls whether core dumps will append the PID to the core filename.
- # Useful for debugging multi-threaded applications.
- kernel.core_uses_pid = 1
- # Controls the use of TCP syncookies
- net.ipv4.tcp_syncookies = 1
- # Disable netfilter on bridges.
- net.bridge.bridge-nf-call-ip6tables = 0
- net.bridge.bridge-nf-call-iptables = 0
- net.bridge.bridge-nf-call-arptables = 0
- # Controls the default maxmimum size of a mesage queue
- kernel.msgmnb = 65536
- # Controls the maximum size of a message, in bytes
- kernel.msgmax = 65536
- # Controls the maximum shared segment size, in bytes
- # Controls the maximum number of shared memory segments, in pages
- # oracle-rdbms-server-11gR2-preinstall setting for fs.file-max is 6815744
- fs.file-max = 6815744
- # oracle-rdbms-server-11gR2-preinstall setting for kernel.sem is '250 32000 100 128'
- kernel.sem = 250 32000 100 128
- # oracle-rdbms-server-11gR2-preinstall setting for kernel.shmmni is 4096
- kernel.shmmni = 4096
- # oracle-rdbms-server-11gR2-preinstall setting for kernel.shmall is 1073741824 on x86_64
- # oracle-rdbms-server-11gR2-preinstall setting for kernel.shmall is 2097152 on i386
- kernel.shmall = 1073741824
- # oracle-rdbms-server-11gR2-preinstall setting for kernel.shmmax is 4398046511104 on x86_64
- # oracle-rdbms-server-11gR2-preinstall setting for kernel.shmmax is 4294967295 on i386
- kernel.shmmax = 4398046511104
- # oracle-rdbms-server-11gR2-preinstall setting for net.core.rmem_default is 262144
- net.core.rmem_default = 262144
- # oracle-rdbms-server-11gR2-preinstall setting for net.core.rmem_max is 4194304
- net.core.rmem_max = 4194304
- # oracle-rdbms-server-11gR2-preinstall setting for net.core.wmem_default is 262144
- net.core.wmem_default = 262144
- # oracle-rdbms-server-11gR2-preinstall setting for net.core.wmem_max is 1048576
- net.core.wmem_max = 1048576
- # oracle-rdbms-server-11gR2-preinstall setting for fs.aio-max-nr is 1048576
- fs.aio-max-nr = 1048576
- # oracle-rdbms-server-11gR2-preinstall setting for net.ipv4.ip_local_port_range is 9000 65500
- net.ipv4.ip_local_port_range = 9000 65500
5.配置Oracle網路
I.硬體設定要求
- 每個伺服器節點至少需要2塊網卡,一塊對外網路介面,一塊私人網路介面(心跳)。
- 如果你通過OUI安裝Oracle叢集軟體,需要保證每個節點用於外網或私網介面(網卡名)保證一致。比如,node1使用eth0作為對外介面,node2就不能使用eth1作為對外介面。
II.IP配置要求
III.非GNS下手動設定IP執行個體
6.檢查作業系統軟體包
首先,根據作業系統版本到官方文檔中找到安裝包需求列表,如
可以通過mount安裝盤或直接通過yum源檢查和安裝所需要的包:
- # rpm -qa packages_name
- # rpm -ivh packages_name
- # yum list packages_name
- # yum install packages_name
這裡還要提一下:CVUdisk這個包也可以在這個時候一起安裝好,以備之後使用CVU時會用到。
- # 檢查是否已經安裝
- # rpm -qi cvuqdisk
- # 如果已安裝需要先卸載之前的版本
- # rpm -e cvuqdisk
- # 安裝新版本
- # CVUQDISK_GRP=oinstall; export CVUQDISK_GRP
- # rpm -ivh cvuqdisk-1.0.9-1.rpm
7.關閉NTP及連接埠範圍參數修改
- # Oracle建議使用Oracle Cluster Time Synchronization Service,因此關閉刪除NTP
- # /sbin/service ntpd stop
- # chkconfig ntpd off
- # rm /etc/ntp.conf (mv /etc/ntp.conf /etc/ntp.conf.old)
- # rm /var/run/ntpd.pid
- 檢查TCP/UDP連接埠範圍
- # cat /proc/sys/net/ipv4/ip_local_port_range
- 如果已經顯示9000 65500,就不用進行下面的步驟了
- # echo 9000 65500 > /proc/sys/net/ipv4/ip_local_port_range
- # vim /etc/sysctl.conf
- # 添加此行:
- # TCP/UDP port range
- net.ipv4.ip_local_port_range = 9000 65500
- # 重啟網路
- # /etc/rc.d/init.d/network restart
8.調整.bash_profile內容並設定顯示地址
- 設定參數:
- $ su - root
- # mkdir /mount_point/tmp
- # chmod 775 /mount_point/tmp
- # exit
- $ vi .bash_profile
- 加入行:
- TEMP=/mount_point/tmp
- TMPDIR=/mount_point/tmp
- export TEMP TMPDIR
- 加入行:umask 022
- 加入行:DISPLAY=local_IP:0.0 ; export DISPLAY
- local_IP為你要將安裝視圖所顯示的案頭地址
- 檢查設定參數
- $ umask
- $ env | more
- $ echo $DISPLAY
- $ echo $TEMP
- $ echo $TMPDIR
9.配置SSH互信
這是很關鍵的一步,雖然官方文檔中聲稱安裝GI和RAC的時候OUI會自動設定SSH,但為了在安裝之前使用CVU檢查各項配置,還是手動設定互信更優。
- 配置過程如下:
- 各節點產生Keys:
- [root@rac1 ~]# su - oracle
- [oracle@rac1 ~]$ mkdir ~/.ssh
- [oracle@rac1 ~]$ chmod 700 ~/.ssh
- [oracle@rac1 ~]$ ssh-keygen -t rsa
- [oracle@rac1 ~]$ ssh-keygen -t dsa
- [root@rac2 ~]# su - oracle
- [oracle@rac2 ~]$ mkdir ~/.ssh
- [oracle@rac2 ~]$ chmod 700 ~/.ssh
- [oracle@rac2 ~]$ ssh-keygen -t rsa
- [oracle@rac2 ~]$ ssh-keygen -t dsa
- 在節點1上進行互信配置:
- [oracle@rac1 ~]$ touch ~/.ssh/authorized_keys
- [oracle@rac1 ~]$ cd ~/.ssh
- [oracle@rac1 .ssh]$ ssh rac1 cat ~/.ssh/id_rsa.pub >> authorized_keys
- [oracle@rac1 .ssh]$ ssh rac2 cat ~/.ssh/id_rsa.pub >> authorized_keys
- [oracle@rac1 .ssh]$ ssh rac1 cat ~/.ssh/id_dsa.pub >> authorized_keys
- [oracle@rac1 .ssh]$ ssh rac2 cat ~/.ssh/id_dsa.pub >> authorized_keys
- 在rac1把儲存公開金鑰資訊的驗證檔案傳送到rac2上
- [oracle@rac1 .ssh]$ pwd
- /home/oracle/.ssh
- [oracle@rac1 .ssh]$ scp authorized_keys rac2:'pwd'
- oracle@rac2's password:
- authorized_keys 100% 1644 1.6KB/s 00:00
- 設定驗證檔案的許可權
- 在每一個節點執行:
- $ chmod 600 ~/.ssh/authorized_keys
- 啟用使用者一致性
- 在你要運行OUI的節點以oracle使用者運行(這裡選擇rac1):
- [oracle@rac1 .ssh]$ exec /usr/bin/ssh-agent $SHELL
- [oracle@rac1 .ssh]$ ssh-add
- Identity added: /home/oracle/.ssh/id_rsa (/home/oracle/.ssh/id_rsa)
- Identity added: /home/oracle/.ssh/id_dsa (/home/oracle/.ssh/id_dsa)
- 驗證ssh配置是否正確
- 以oracle使用者在所有節點分別執行:
- ssh rac1 date
- ssh rac2 date
- ssh rac1-priv date
- ssh rac2-priv date
- 如果不需要輸入密碼就可以輸出時間,說明ssh驗證配置成功。必須把以上命令在兩個節點都運行,每一個命令在第一次執行的時候需要輸入yes。
- 如果不運行這些命令,即使ssh驗證已經配好,安裝clusterware的時候也會出現錯誤:
- The specified nodes are not clusterable
- 因為,配好ssh後,還需要在第一次訪問時輸入yes,才算是真正的無障礙訪問其他伺服器。
請謹記,SSH互信需要實現的就是各個節點之間可以無密碼進行SSH訪問。
10.為Grid叢集基礎軟體配置儲存(使用ASM)
Oracle所允許的儲存主要有ASM、NFS和ACFS等,這裡僅介紹ASM的配置過程。
(1)安裝ASM配置軟體
- 依然是可以通過yum或者系統DVD光碟片安裝
- # cd /mnt/install_DVD/Packages
- # rpm -qi oracleasm
- # rpm -qi oracleasm-support
- # rpm -qi oracleasm-support-2.1.8-1.el6.x86_64.rpm
- //我們是Oracle Linux系統,此版本已經整合了oracleasm和oracleasmlib,所以就不用再安裝了~
(2)規劃ASM磁碟組
官方文檔中規定了不同冗餘策略下OCR、Voting Disk、Database和Recovery所需求的大小。
找到儲存管理員,把規劃好的磁碟都讓他給你配置好~
(3)配置ASM
- 格式化每個磁碟
- [root@rac1 ~]# fdisk /dev/sdb
- 完成後我們通過fdisk -l查看一下
- [root@rac1 ~]# fdisk -l
- [root@rac1 ~]# /usr/sbin/oracleasm configure -i
- Default user to own the driver interface []: grid
- Default group to own the driver interface []: asmadmin
- Start Oracle ASM library driver on boot (y/n) [n]: y
- Scan for Oracle ASM disks on boot (y/n) [y]: y
- [root@rac1 ~]# /etc/init.d/oracleasm createdisk VOL1 /dev/sdb1
- [root@rac1 ~]# /etc/init.d/oracleasm createdisk VOL2 /dev/sdc1
- [root@rac1 ~]# /etc/init.d/oracleasm createdisk VOL3 /dev/sdd1
- 以下操作在另一個節點上進行,RAC2上操作
- [root@rac2 ~]# oracleasm scandisks
- 這裡用到的是asmlib來做磁碟裝置管理的,這裡大家也可以使用UDEV來管理,在RHEL6中asmlib已經被廢棄了,以後就是UDEV的天下
11.使用CVU檢查各個節點的配置工作
千辛萬苦終於到了安裝前的最後一步~
- [root@node1 ~]# su - grid
- [grid@node1 ~]$ cd grid_sw
- [grid@node1 grid_sw]$ ./runcluvfy.sh stage -pre crsinst -n node1,node2 -fixup -verbose
- 其中“grid_sw”為安裝包解壓出來的grid安裝檔案。
這一步的重點在於遇到報錯怎樣處理:
我這次安裝遇到了PRVF-5636,此問題是由於沒有DNS以及/etc/resolv.conf 的設定引起的,因為指令碼要用nslookup命令去檢測兩個節點的連通性。
12.安裝GI和RAC
(1)安裝Oracle Grid Infrastructure
安裝過程中遇到了udev的報錯,由於我們使用的oracleasmlib,所以直接無視~
(2)安裝Oracle Database 11g with Oracle Real Application Clusters
安裝Grid是痛點,RAC只要Grid安裝順利基本不是問題,安裝過程中也請先使用CVU進行安裝前檢測,本次安裝過程中遇到了一些檔案許可權的問題,大家安裝時也請多注意。尤其是ASM的許可權和安裝使用者的家目錄許可權。
13.使用ASMCA和DBCA管理資料庫
關於這兩個管理軟體網上文章很多,這裡不再贅述。