在這裡我們將介紹Oracle RAC在Linux下的安裝,Oracle Real Application Server,真正應用集群,簡稱Oracle RAC ,是Oracle的並行集群,位於不同服務器系統的Oracle實例同時訪問同一個Oracle數據庫,節點之間通過私有網絡進行通信,所有的控制文件、聯機日志和數據文件存放在共享的設備上,能夠被集群中的所有節點同時讀寫。
系統配置
1、創建用戶和組 oinstall dba 組用戶
- oracle -g oinstall -G dba
匿名用戶:確認匿名用戶 nobody 存在與系統中,在安裝完成後nobody 用戶必須執行一些擴展任務(extjob)確認nobody用戶是否存在:
- #id nobody
如果用戶不存在則需要添加該用戶。
注意給oracle用戶設置密碼
2、配置網絡
ip地址的規劃,通過修改 /etc/sysconf/network-script/ifcfg-ethx
配置網卡的靜態ip地址主機名的永久修改: /etc/network
本地DNS的配置: /etc/hosts
配置/etc/host.conf 該文件用來指定域名解析方法的順序:
- order hosts,bind
它說明,首先通過/etc/hosts文件解析,如果在該文件中沒有相應的主機名與IP 地址的對應關系,再通過域名服務器bind進行解析
3、配置安全SSH 通道,針對ORACLE用戶,在每個節點創建 rsa 和dsa 的密鑰
- rac1#su - oracle
- rac1#mkdir .ssh
- rac1#chmod 700 .ssh
- rac1#cd .ssh
rac1#ssh-keygen -t rsa 創建密鑰對,其他默認
同樣在另一台主機上執行相應的操作。
- rac2#su - oracle
- rac2#mkdir .ssh
- rac2#chmod 700 .ssh
- rac2#cd .ssh
- rac2#ssh-keygen -t rsa 創建密鑰對,其他默認
rac1#ssh rac1 cat /home/oracle/.ssh/id_rsa.pub >> authorized_keys 把節點1 的共鑰 從定向到一個文件因為現在還沒有密鑰對,所以會提示輸入密碼。直接輸入密碼就行了
- rac1#ssh rac2 cat /home/oracle/.ssh/id_rsa.pub >> authorized_keys 把節點2 的共鑰 從定向到一個文件
- rac1#cat authorized_keys 查看節點1和節點2的共鑰的內容,同樣拷貝到 節點2上面。
- rac1#scp authorized_keys rac2:/home/oracle/.ssh/ 要輸入節點2的密碼
改一下權限
- rac1#chmod 600 authorized-keys
DSA密鑰的設置同理
- rac1#ssh rac1 date 測試共鑰連接情況 遠程執行 date 命令,此時不用輸入密碼
- rac1#ssh rac2 date 測試共鑰連接情況 遠程執行 date 命令,此時不用輸入密碼
此時可證實安全需要通道配置成功
4、檢查所需的軟件
#rpm -qa |grep 需要的軟件包
5、配置內核參數
- vi /etc/sysctl.conf
- kernel.sem=250 32000 100 128
- kernel.shmmni=4096
- kernel.shmall=2097152
- kernel.shmmax=2147483648
- net.ipv4.ip_local_port_range=1024 65000
- net.core.rmem_default=1048576
- net.core.rmem_max=1048576
- net.core.wmem_default=262144
- net.core.wmem_max=262144
然後執行: #sysctl -p
6、設置shell對oracle用戶的限制
vi /etc/security/limits.conf 在每個節點上執行相同的操作:編輯/etc/security/limits.conf,添加內容:
- oracle soft nproc 2047
- oracle hard nproc 16384
- oracle soft nofile 1024
- oracle hard nofilw 65536
編輯/etc/pam.d/login,添加如下內容: session required /lib/security/pam_limits.so
編輯/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
磁盤配置
安裝 CRS
安裝真正的RAC
存儲選項: 項目 存儲系統 存儲位置 clusterware 本地(EXT3)或NFS 本地或NFS voting disk OCFS2 Raw device NFS 共享磁盤 NFS OCR OCFS2 Raw device NFS 共享磁盤 NFS 數據庫軟件 OCFS2 本地 NFS 本地或共享磁盤 NFS 數據庫 OCFS2 ASM Raw device NFS 共享磁盤 NFS 恢復文件 OCFS2 ASM NFS 共享磁盤 NFS
存儲機制
clusterware 數據庫 恢復文件 ASM 否 是 是 OCFS2 是 是 是 Raw Device 是 是 否 NFS 是 是 是
OCFS2 安裝這個軟件 下載3個軟件包 在兩邊都要安裝 OCFS2-2.6.9-22.ELsmp-1.2.3-1.i686.rpm 這個文件要跟 uname -a 的系統版本對應起來 ocfs2console-1.2.1-1.i386.rpm ocfs2-tools-1.2.1-1.i386.rpm
安裝順序:tools ----內核模塊 ----- console
磁盤的處理
- #fdisk -l 查看磁盤分區
- #fdisk /dev/sdb 創建分區
- #export DISPLAY=本地機器IP
- #ocfs2console 打開ocfs2的控制台進行ocfs2的配置
菜單Task 下的format開始格式化分區
Oracle的安裝前的准備
- #mkdir -p /orac/orachome
- #mkdir -p /orac/oradata
- #mount -t ocfs2 /dev/sdb1 /orac/orahome
- #df -h 查看掛接情況
- #mount -t ocfs2 -o datavolume,nointr /dev/sdb2 orac/oradata
- #df -h
- #mounted.ocfs2 -f 查看ocfs2文件系統的加載情況
另一個節點rac2
- #/etc/init.d/o2cd load 加載這個模塊
- #/etc/init.d/o2cd status 查看加載這個模塊的狀態
查看到節點2 ocfs2 狀態是 offline
- #/etc/init.d/o2cd online 使其online
- #/etc/init.d/o2cd status 查看加載這個模塊的狀態
- #mount -t ocfs2 /dev/sdb1 /orac/orahome
- #df -h
- #mounted.ocfs2 -f
- #mount -t ocfs2 -o datavolume,nointr /dev/sdb2 /orac/oradata
- #mounted.ocfs2 -f
系統啟動時自動加載ocfs2文件系統和啟動相應的模塊----兩個節點都要配置
- #/etc/init.d/o2cd configure 啟動時自動加載ocfs2 的相關模塊
- #vi /etc/fstab 啟動是自動掛接文件系統
- /dev/sdb1 /orac/orahome ocfs2 _netdev 0 0
- /dev/sdb2 /orac/oradata ocfs2 _netdev,datavolume,nointr 0 0
安裝集群 clusterware 文件夾 crs 安裝clusterware oradata 建庫時使用 orahome 安裝oracle數據庫軟件
要對這些文件夾的主用戶進行修改
- #cd /orac
- #chown root.oinstall crs
- #chown oracle.oinstall orahome
- #chown oracle.oinstall oradata
- #chmod -R 775 ors
- #chmod -R 775 orahome
- #chmod -R 775 oradata
- #ls -l
在另外一個節點上也要進行相應的修改
把集群clusterware安裝軟件拷貝進來
- #su - oracle
- #export DISPLAY=本地ip:0.0
- #./runInstaller
安裝數據庫軟件 選擇安裝類型 企業版
創建數據庫: #dbca
測試數據庫的情況:客戶端的連接文件的修改:在客戶端安裝路徑下: NETWORK/ADMIN/tnsnames.ora
- ORATEST tns服務名=
- (DESCRIPTION =
- (ADDRESS_LIST =
- (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.116.121 節點1IP)(PORT = 1521))
- (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.116.129 節點2IP)(PORT = 1521))
- )
- (CONNECT_DATA =
- (SERVICE_NAME = oratest.sinobest.com 全局數據庫名)
- )
- )
- EXTPROC_CONNECTION_DATA =
- (DESCRIPTION =
- (ADDRESS_LIST =
- (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
- )
- (CONNECT_DATA =
- (SID = PLSExtProc)
- (PRESENTATION = RO)
- )
- )
SQLPLUS客戶端的測試:在windows下打開命令行 或者直接打開 Oracle SQL*Plus
- > sqlplus /nolog
- SQL>conn sys/123456@tnsname as sysdba
- SQL>select * from V$instance; 查看當前的實例
- SQL>set wrap off; 設置一下顯示的方式
- SQL>set linesize 200;
- SQL>select * from V$instance; 查看當前的實例
- SQL>select * from gv$instance; 查看全局實例視圖