數據庫:
P10404530_112030_linux-x86-64_1of7.zip
P10404530_112030_linux-x86-64_2of7.zip
集羣件(11G中的GRID):
P10404530_112030_linux-x86-64_3of7.zip
這三個包
操作系統:
Redhat6.3
1 安裝準備
1.1 安裝操作系統PATCHES
1.1.2 安裝PATCHES
yum install -y inutils compat* glibc ksh-*libaio* libgcc libstdc++ make gcc* glibc-devel libaio-devel libstdc++ sysstatglibc* libstdc++ elfutils-libelf-devel rpm -ivh --nodeps --forcebinutils-2.20.51.0.2-5.34.el6.x86_64.rpm
rpm -ivh --nodeps --forcecompat-libstdc++-33-3.2.3-69.el6.x86_64.rpm
rpm -ivh --nodeps --forceglibc-2.12-1.80.el6.x86_64.rpm
rpm -ivh --nodeps --force ksh-*.rpm
rpm -ivh --nodeps --forcelibaio-0.3.107-10.el6.x86_64.rpm
rpm -ivh --nodeps --forcelibgcc-4.4.6-4.el6.x86_64.rpm
rpm -ivh --nodeps --forcelibstdc++-4.4.6-4.el6.x86_64.rpm
rpm -ivh --nodeps --forcemake-3.81-20.el6.x86_64.rpm
rpm -ivh --nodeps --forcecompat-libcap1-1.10-1.x86_64.rpm
rpm -ivh --nodeps --forcegcc-4.4.6-4.el6.x86_64.rpm
rpm -ivh --nodeps --forcegcc-c++-4.4.6-4.el6.x86_64.rpm
rpm -ivh --nodeps --forceglibc-devel-2.12-1.80.el6.x86_64.rpm
rpm -ivh --nodeps --forcelibaio-devel-0.3.107-10.el6.x86_64.rpm
rpm -ivh --nodeps --forcelibstdc++-devel-4.4.6-4.el6.x86_64.rpm
rpm -ivh --nodeps --forcesysstat-9.0.4-20.el6.x86_64.rpm
rpm -ivh --nodeps --forcecompat-libstdc++-33-3.2.3-69.el6.x86_64.rpm
rpm -ivh --nodeps --forceglibc-2.12-1.80.el6.x86_64.rpm
rpm -ivh --nodeps --forceglibc-devel-2.12-1.80.el6.x86_64.rpm
rpm -ivh --nodeps --forcelibaio-0.3.107-10.el6.x86_64.rpm
rpm -ivh --nodeps --forcelibaio-devel-0.3.107-10.el6.x86_64.rpm
rpm -ivh --nodeps --forcelibgcc-4.4.6-4.el6.x86_64.rpm
rpm -ivh --nodeps --forcelibstdc++-4.4.6-4.el6.x86_64.rpm
rpm -ivh --nodeps --forcelibstdc++-devel-4.4.6-4.el6.x86_64.rpm
rpm -ivh --nodeps --forceelfutils-libelf-devel-0.152-1.el6.x86_64.rpm
1.2 主機網絡配置
主機網絡設置檢查:hosts文件系修改、網卡IP配置。
1. 編輯hosts文件,將如下內容添加到hosts文件中,指定Public IP、VIP、Private IP。
2. Vi /etc/hosts
172.16.64.129 rac1
172.16.64.130 rac2
10.10.10.10 racpriv1
10.10.10.11 racpriv2
172.16.64.131 racvip1
172.16.64.132 racvip2
172.16.64.133 scanip
192.168.8.181 rac1
192.168.8.182 rac2
192.168.1.10 racpriv1
192.168.1.20 racpriv2
192.168.8.184 racvip1
192.168.8.185 racvip2
192.168.8.190 scanip
3. 網卡的IP地址已經在系統安裝過程中配置完成,可以使用如下命令檢查IP配置情況:#ifconfig
1.3 安裝任務
1.3.1 創建操作系統組和用戶
在兩個節點創建相應的操作系統組和用戶,先創建組,然後創建用戶:
以root用戶使用如下命
groupadd -g 1301 asmadmin
groupadd -g 1302 asmdba
groupadd -g 1303 asmoper
groupadd -g 1304 oinstall
groupadd -g 1305 dba
useradd -u 1300 -g oinstall -G asmadmin,asmdba,asmoper grid
useradd -u 1310 -g oinstall -G dba,asmdba oracle
使用passwd命令爲grid(密碼:grid)和oracle(密碼:oracle)賬戶設置密碼。
#passwd jsepc01!
#passwd jsepc01!
1.3.2 創建軟件安裝目錄結構並更改權限
在兩個節點創建相應的目錄改變屬主並改變權限
以root用戶使用如下命
mkdir /grid
mkdir -p/u01/app/oracle/product/11.2.0/dbhome_1
mkdir -p /u01/app/grid/11.2.0
chown -R grid:oinstall /u01
chown -R grid:oinstall /grid
chown -R oracle:oinstall /u01/app/oracle
chmod -R 775 /u01
1.3.3 修改用戶概要文件
在兩個節點上分別修改
grid用戶.bash_profile
添加如下內容:
exportORACLE_BASE=/u01/app/grid
exportORACLE_HOME=/u01/app/11.2.0/grid
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
oracle用戶.bash_profile
添加如下內容:
exportORACLE_BASE=/u01/app/oracle
exportORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
exportPATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
1.3.4 修改限制條件
在兩個節點上分別執行,以root用戶進行編輯
vim /etc/security/limits.conf
grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
1.3.5 修改內核參數關閉所有節點防火牆
用root用戶在兩個節點分別編輯
vim /etc/sysctl.conf
添加內容:
kenel.shmmni = 4096
kenel.sem = 25032000100128
fs.aio-max-nr = 1048576
fs.file-max = 6815744
net.ipv4.ip_local_port_range = 900065500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
vm.hugetlb_shm_group = 501
用root用戶關閉兩個節點防火牆:
#Service iptables status
#Service iptables stop
1.3.6 配置互信
[grid@rac1 ~]# rm -rf $HOME/.ssh 兩個節點都要執行
rm -rf /root/.ssh
集羣軟件解壓之後
cd/grid/grid/sshsetup
[grid@rac1 sshsetup]$ pwd
/u01/grid/grid/sshsetup
此步驟只要在一個節點上執行
[grid@rac1sshsetup]$ ./sshUserSetup.sh -user grid-hosts "rac1 rac2" -advanced -noPromptPassphrase
此步驟只要在一個節點上執行
[grid@rac1 sshsetup]$ ./sshUserSetup.sh -user oracle-hosts "rac1 rac2" -advanced –noPromptPassphrase
兩個用戶(Grid和Oracle)都要驗證互信
ssh rac1 date
ssh racpriv1 date
ssh rac2 date
ssh racpriv2 date
沒有提示輸入密碼則成功
1.3.7 存儲分區(在一個節點上執行)
所有規劃的設備進行分區,例如在節點1上對sdc盤進行劃盤:
[root@rac1~]# fdisk /dev/sdc
WARNING: DOS-compatible mode is deprecated.It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): p
Disk /dev/sde: 536.9 GB, 536870912000 bytes
255 heads, 63 sectors/track, 65270cylinders
Units = cylinders of 16065 * 512 = 8225280bytes
Sector size (logical/physical): 512 bytes /512 bytes
I/O size (minimum/optimal): 512 bytes / 512bytes
Disk identifier: 0x000d60dc
Device Boot Start End Blocks Id System
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-65270, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G}(1-65270, default 65270):
Using default value 65270
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
所有節點同步分區
Partprobe
注意:本例的存儲是按照一般情況來配置的,實際劃分請根據情況而定。
1.3.8 綁定裸設備
用root用戶兩個節點都需執行:
vim /etc/udev/rules.d/60-raw.rules
# Enter raw device bindings here.
#
# An example would be:
# ACTION=="add", KERNEL=="sda", RUN+="/bin/raw/dev/raw/raw1 %N"
# to bind /dev/raw/raw1 to /dev/sda, or
# ACTION=="add", ENV{MAJOR}=="8",ENV{MINOR}=="1",
RUN+="/bin/raw /dev/raw/raw2 %M%m"
# to bind /dev/raw/raw2 to the device withmajor 8, minor 1.
#for ocr_voting
ACTION=="add",KERNEL=="sdc1",RUN+="/bin/raw/dev/raw/raw1 %N"
ACTION=="add",KERNEL=="sdc2",RUN+="/bin/raw/dev/raw/raw2 %N"
ACTION=="add",KERNEL=="sdd1",RUN+="/bin/raw/dev/raw/raw3 %N"
ACTION=="add",KERNEL=="sdd2",RUN+="/bin/raw/dev/raw/raw4 %N"
ACTION=="add",KERNEL=="sde1",RUN+="/bin/raw/dev/raw/raw5 %N"
ACTION=="add",KERNEL=="sde2",RUN+="/bin/raw/dev/raw/raw6 %N"
ACTION=="add",KERNEL=="sdf1",RUN+="/bin/raw/dev/raw/raw7 %N"
ACTION=="add",KERNEL=="sdf2",RUN+="/bin/raw/dev/raw/raw8 %N"
KERNEL=="raw[1-8]", OWNER="grid",GROUP="asmadmin", MODE="0660"
重啓 UDEV:
# /sbin/start_udev
驗證:
[root@db1 rules.d]# ll /dev/raw
total 0
crw-rw---- 1 grid asmadmin 162, 1 Jul 28 15:19 raw1
crw-rw---- 1 grid asmadmin 162, 2 Jul 28 15:19 raw2
crw-rw---- 1 grid asmadmin 162, 3 Jul 28 15:19 raw3
crw-rw---- 1 grid asmadmin 162, 4 Jul 28 15:19 raw4
crw-rw---- 1 grid asmadmin 162, 5 Jul 28 15:19 raw5
crw-rw---- 1 grid asmadmin 162, 6 Jul 28 15:19 raw6
crw-rw---- 1 grid asmadmin 162, 7 Jul 28 15:19 raw7
crw-rw---- 1 grid asmadmin 162, 8 Jul 28 15:19 raw8
crw-rw---- 1 root disk 162, 0 Jul 28 15:19 rawctl
2 安裝Grid
節點1用GRID用執行:
[grid@rac1grid]$ ./runI*
注:在上圖的SCAN name中,填寫在/etc/hosts中定義的scan名字在配置網絡增強界面時,規劃好的集羣名、SCAN名,SCAN端口,不勾選ConfigureGNS(GNS需要DHCP服務器配合,本次部署無DHCP服務器):
本例中我們使用的是/etc/hosts解析,所以直接填寫scanip,即可。
Next:
注:執行上述腳本千萬要注意順序
先在節點1和節點2執行:
/u01/app/oraInventory/orainstRoot.sh
其次在節點1和節點2執行:
/u01/app/11.2.0/grid/root.sh
如下圖:
執行成功後點繼續:
如有上述兩個錯誤可以忽略。
點擊Close安裝完成。
3 安裝數據庫軟件
這裏只安裝數據庫軟件,之後再用dbca命令建立集羣實例。安裝完database軟件後,需要建立ASM磁盤組。
使用oracle用戶登錄進行安裝。
選擇不接收更新,Next:
選擇只安裝數據庫軟件,Next:
選擇real application cluster database installlation,然後選中所有的節點,Next:
選擇數據庫版本:Enterprise Edition,Next:
選擇安裝目錄,Next:
Next:
開始執行安裝前檢查
點擊Ignore all繼續安裝。
點擊Install進行安裝:
安裝進度大概至94%時,提示需要運行相關腳本,按要求順序執行,正確執行完畢後點擊:OK
關閉窗口,完成database的安裝。
4 創建ASM磁盤組
在建庫前需要先創建存儲數據文件的ASM磁盤組。以grid用戶登錄,執行asmca命令:
彈出如下對話框:、
切換到Disk Group界面,點擊Create:
這裏我們只選擇raw5作爲數據文件存放位置,各現場根據自身情況選擇。
完成後如上圖:
繼續選擇create創建閃回恢復區存放位置,如下圖:
這裏選擇raw3
創建完成後如下圖:
5 DBCA創建數據庫
使用oracle用戶,運行dbca來建立RAC集羣實例。
$dbca
選擇建立RAC數據庫,Next:
Next:
Next:
這裏沒選擇閃回。
這裏各地請按照自己實際物理內存來配置,選擇自動內存管理
進程數調整至500
待完成後點擊EXIT退出即可。
6 驗證服務
6.1 客戶端連接RAC
現在可以用SQL*PLUS連接到RAC,這時用戶的連接可能被定向到任何一個節點,可以通過視圖查看當前的連接實例。
通過SQL*PLUS連接RAC。
[oracle@rac1]$sqlplus sys/password@SGTMS
查看當前連接的實例。
SQL>select instance_name fromv$instance;
SGTMS1
6.2 驗證Failover(故障轉移)
(1)連接到RAC。
[root@rac1]#sqlplus sys/password@SGTMS
(2)確認用戶當前連接的實例。
SQL>select instance_name fromv$instance;
SGTMS1
用戶當前連接到SGTMS1這個實例,不要退出這個回話,第4步還是在這個回話中執行。
(3)關閉SGTMS1這個實例,或者把SGTMS1所在的這臺主機關機。
SQL>shutdown abort;
(4)等待幾秒鐘,再次執行這個語句,還是在會話1中執行。
SQL>select instance_name fromv$instance;
SGTMS2
這時因爲SGTMS1實例被關閉,用戶連接自動被轉移到SGTMS2這個實例上了。
6.3 驗證LoadBalance(負載均衡)
這個驗證需要兩個腳本,一個是SHELL腳本test.sh,另一個是SQl腳本test.sql。
(1)SHELL腳本test.sh內容如下。
#!/bin/sh
#Usage: test SGTMS 4000
count=0
while [$count -lt $2] # Set up a loopcontrol
do
count='expr $count+1' #Increment the counter
sqlplus -s username/password@$1 @test.sql
sleep 1
done
(2)SQL腳本test.sql內容如下。
col Instance_name for a20
select instance_name from v$instance
/
(3)準備好腳本後,就可以進行這個測試了。
./test.sh SGTMS 1000
(4)準備執行完後,查看每個實例建立的連接數量。
SQL> select inst_id,count(*) from gv$session group by inst_id;
SGTMS1 496
SGTMS2 504