這次試驗並沒有用複製另一臺虛擬機的系統的方式完成rac的安裝,是在完全安裝的兩個操作系統進行的oracle clusterware,oracle RAC的配置。
硬件:一臺2U PC機器,cpu: Intel(R) Xeon X5650 共24核心 內存:24G 兩個板載千兆以太網卡 。
軟件:windows7旗艦版,VMware-server-1.0.3,CentOS release 4.4,orace10g
(10201_clusterware_linux32,10201_database_linux32),xmanager,
============================================================
一. 基礎軟件安裝(詳細步驟省略,請參照操作系統安裝的相關文檔)
1.安裝win7操作系統,打開遠程桌面管理,配置一個合適的網絡(15.0.5.200),可以在局域網內使用
遠程桌面訪問win7.
2.在win7上安裝VMware server,安裝過程中提示缺少程序簽名的錯誤,忽略掉繼續進行安裝即可。
3.帶安裝好後,重啓動操作系統,啓動時按F8選擇用“禁用驅動程序簽名強制”模式進入系統。
4.測試是否能通過遠程桌面訪問到win7系統,並運行VMware server,看是否可以使用。如果沒有進入
“禁用驅動程序簽名強制”模式,則無法進入local選項使用VMware。如果測試都通過,則可以通過遠程來操作完成實驗。
使用遠程桌面連接,開始以後的實驗
1. 在VMware server上構建兩個虛擬機,分別爲node1和node2。
正常設置完一個虛擬機後,添加共享存儲硬盤:
設置如下圖片所示,具體原因請查看VMware文檔或其他文檔
點擊Edit virtual machine settings,進行添加硬盤盤的設置
點擊Add
下一步
選中Hard Disk,點擊下一步
選擇‘Create a new virtual disk’,下一步
選擇SCSI (Recommended),下一步
在Disk size(GB):輸入0.5,即爲硬盤大小爲0.5G,可以選擇分配Allocate all disk space now,也可以選擇Split disk into 2 GB files,區別爲一次分配還是每次在使用的時候每次分配2GB的空間給你設置的硬盤。這可能在0.5G硬盤的大小設置上沒有區別。點擊‘下一步’
點擊‘Browse’,手動選擇硬盤存放路徑,此處就是與先前創建的虛擬機系統硬盤不同的地方。下一步;
點擊向上的圖標,進行選擇
選擇shareddisk,這個文件夾爲先前創建好的,爲存放共享硬盤準備的。
手工輸入硬盤名字,ocrdisk1.vmdk,意思作爲oracle clusterware的OCR使用。
點擊Advanced,進行硬盤通道選擇;
選擇SCSI 1:0,完成。
選擇Independent,點擊完成。
按照這種方法,創建剩下的六塊虛擬硬盤,名字分別叫做:ocrdisk2.vmdk,votingdisk1.vmdk,votingdisk2.vmdk,votingdisk3.vmdk,這五塊盤爲512M容量,asmdisk1.vmdk,asmdisk2.vmdk,這兩塊盤爲10G容量。用途如硬盤的名字所示,分別有兩塊OCR,三塊votting disk盤,兩塊用作ASM存儲。
在第一個虛擬機上設置完成後,編輯第二個虛擬機的配置文件Red Hat Enterprise Linux 4.vmx:
將第二個虛擬機的配置文件備份,然後把第一個虛擬機的Red Hat Enterprise Linux 4.vmx複製到第二個虛擬機陪置文件的位置;並打開這個Red Hat Enterprise Linux 4.vmx,按照備份的配置修改相應項:
scsi0:0.fileName = "node1disk.vmdk" 修改成scsi0:0.fileName = "node2disk.vmdk"
將displayName = "node1"修改成displayName = "node2"
uuid.location = "56 4d c7 a0 45 ca 8c ed-03 fd 14 3f ab fe 81 cd"
uuid.bios = "56 4d c7 a0 45 ca 8c ed-03 fd 14 3f ab fe 81 cd"
ethernet0.generatedAddress = "00:0c:29:fe:81:cd"
ethernet1.generatedAddress = "00:0c:29:fe:81:d7"
以上四項都是將等號右邊的內容修改成原來node2配置文件的內容。
2.安裝操作系統,其中node1和node2安裝CentOS 4.4(32bit)的系統。
具體安裝細節請查看安裝操作系統相關文檔。
===================================================
二. 基本環境配置:
安裝好操作系統後,準備安裝oracle RAC相關的環境;
1. 創建相關用戶組和oracle用戶
分別在node1和node2上創建:
[root@node1 ~]# groupadd -g 500 oinstall
[root@node1 ~]# groupadd -g 501 dba
[root@node1 ~]# groupadd -g 502 oper
[root@node1 /home]# useradd -g oinstall -G dba,oper -u 500 oracle
[root@node1 /home]# passwd oracle
Changing password for user oracle.
New UNIX password:
BAD PASSWORD: it is too simplistic/systematic
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
2. 配置/etc/hosts
由於沒有配置dns服務,所以/etc/hosts文件暫時配置如下
[root@node1 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
15.0.5.201 node1
15.0.5.211 node1-vip
10.0.0.1 node1-priv
15.0.5.202 node2
15.0.5.212 node2-vip
10.0.0.2 node2-priv
node2與node1的/etc/hosts文件相同。
3.配置SSH互信任
[oracle@node1 ~]$ mkdir~/ .ssh
(或者使用ssh node2,成功登陸後既可以在oracle目錄下創建一個.ssh目錄。)
[oracle@node1 ~]$ chmod 700 ~/ .ssh
[oracle@node1 ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/oracle/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/oracle/.ssh/id_rsa.
Your public key has been saved in /home/oracle/.ssh/id_rsa.pub.
The key fingerprint is:
3a:8d:57:83:66:5f:69:c0:fd:95:c3:64:7d:ce:1a:de oracle@node1
[oracle@node1 ~]$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/oracle/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/oracle/.ssh/id_dsa.
Your public key has been saved in /home/oracle/.ssh/id_dsa.pub.
The key fingerprint is:
ed:27:e9:43:8f:a6:35:6f:d3:13:85:fa:ef:76:fe:66 oracle@node1
[oracle@node1 ~/.ssh]$ ssh node1 cat /home/oracle/.ssh/id_rsa.pub >>authorized_keys
[oracle@node1 ~/.ssh]$ ssh node1 cat /home/oracle/.ssh/id_dsa.pub >>authorized_keys
在node2上重複上面的步驟創建:
[oracle@node2 ~]$ ssh-keygen -t rsa
[oracle@node2 ~]$ ssh-keygen -t dsa
繼續在node1上:
[oracle@node1 ~/.ssh]$ ssh node2 cat /home/oracle/.ssh/id_rsa.pub >>authorized_keys
[oracle@node1 ~/.ssh]$ ssh node2 cat /home/oracle/.ssh/id_dsa.pub >>authorized_keys
[oracle@node1 ~/.ssh]$ scp authorized_keys node2:/home/oracle/.ssh/
進行ssh登錄測試:
[oracle@node1 ~/.ssh]$ ssh node2
[oracle@node1 ~/.ssh]$ ssh node2-priv
[oracle@node2 ~]$ ssh node1
[oracle@node2 ~]$ ssh node1-priv
4. 設置oracle用戶的環境
1.檢查x window
[oracle@node1 ~]$ xhost +
15.0.5.201 being added to access control list
2.檢查並保證/tmp空間大於400M。因爲安裝系統是指劃了一個根分區,所以/tmp空間與/ 共享使用空間。
5.檢查硬件條件
分別在node1和node2上:
[root@node1 ~]# free -m
total used free shared buffers cached
Mem: 2026 293 1733 0 48 130
-/+ buffers/cache: 113 1912
Swap: 4094 0 4094
[root@node1 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 16G 2.7G 13G 18% /
/dev/sda1 99M 12M 83M 12% /boot
none 1014M 0 1014M 0% /dev/shm
centos:/apps/ 28G 9.8G 16G 38% /apps
(/apps爲另一個nfs服務器提供的目錄,所有的oracle相關軟件都存放在該目錄下。node1和node2都
掛在使用該目錄安裝需要的軟件。)
6. 檢查軟件情況
oracle要求集羣中的節點必須使用相同版本的操作系統!
爲避免安裝數據庫軟件時的麻煩,將node1和node2的centos改爲redhat:
[root@node1 ~]# cat /etc/redhat-release
CentOS release 4.4 (Final)
[root@node1 ~]# cp /etc/redhat-release /etc/redhat-release.bak
[root@node1 ~# echo "Red Hat Enterprise Linux AS release 4 (Nahant Update
4)">/etc/redhat-release
注:實際測試,不做此操作也沒有任何問題。
內核版本:
[root@node1 ~]# uname -r
2.6.9-42.ELsmp
檢查軟件包:
binutils-2.15.92.0.2-10.EL4
compat-db-4.1.25-9
control-center-2.8.0-12
gcc-3.4.3-9.EL4
gcc-c++-3.4.3-9.EL4
glibc-2.3.4-2
glibc-common-2.3.4-2
gnome-libs-1.4.1.2.90-44.1
libstdc++-3.4.3-9.EL4
libstdc++-devel-3.4.3-9.EL4
make-3.80-5
openmotif21-2.1.30-11.RHEL4.2
在node1和node2中使用rpm工具分別對上列出的軟件包檢查,並安裝沒有的包;本次安裝操作系統選擇了所有的軟件包,所以在檢查包時全都安裝了。
7. 配置系統內核參數
在node1和node2的/etc/sysctl.conf文件添加內容:
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
#fs.file-max = 65536 --註釋掉是由於系統默認的值大於65536,使用默認值。
net.ipv4.ip_local_port_range = 32768 65000
net.core.rmem_default = 262144
net.core.rmem_max = 1048576
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
然後運行/sbin/sysctl -p使其生效。(不運行也行,最後要安裝oracle clusterware時重啓動操作系統。)
在node1和node2的/etc/pam.d/login 文件添加內容:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
在node1和node2的/etc/security/limits.conf 文件添加內容:
session required /lib/security/pam_limits.so
創建oracle的相關目錄
[root@node1 ~]# mkdir -p /u01/app/oracle/oraInventory
[root@node1 ~]# mkdir -p /u01/app/oracle/product/crs
[root@node1 ~]# mkdir -p /u01/app/oracle/product/10.2.0/db_1
[root@node1 ~]# chown -R oracle:oinstall /u01
[root@node1 ~]# chmod -R 755 /u01
驗證hangcheck-timer模塊:
[oracle@node1 ~]$ /sbin/lsmod | grep hang
hangcheck_timer 7641 0
如果無輸出結果證明內核沒有載入模塊,需要手工導入
[root@node1 ~]# insmod /lib/modules/`uname -r`/kernel/drivers/char/hangcheck-timer.ko
hangcheck_tick=30 hangcheck_margin=180
並將這條導入命令添加到/etc/rc.d/rc.local中,保證重啓動系統後會導入該模塊。
基本環境配置就告一段落,下面開始配置存儲相關內容
================================================
三. 配置oracle RAC環境的存儲環境:
根據創建虛擬機時配置好的硬盤,共享存儲的硬盤有7塊,分別爲五塊512M容量的
ocrdisk1,ocrdisk2,votingdisk1,votingdisk2,votingdisk3
和兩塊10G容量的asmdisk1,asmdisk2.
---------------------------
使用fdisk工具爲共享存儲創建分區
[root@node1 ~]# fdisk -l
Disk /dev/sda: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 535 4192965 82 Linux swap
/dev/sda3 536 2610 16667437+ 83 Linux
Disk /dev/sdb: 536 MB, 536870912 bytes
64 heads, 32 sectors/track, 512 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Disk /dev/sdb doesn't contain a valid partition table
Disk /dev/sdc: 536 MB, 536870912 bytes
64 heads, 32 sectors/track, 512 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Disk /dev/sdc doesn't contain a valid partition table
Disk /dev/sdd: 536 MB, 536870912 bytes
64 heads, 32 sectors/track, 512 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Disk /dev/sdd doesn't contain a valid partition table
Disk /dev/sde: 536 MB, 536870912 bytes
64 heads, 32 sectors/track, 512 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Disk /dev/sde doesn't contain a valid partition table
Disk /dev/sdf: 536 MB, 536870912 bytes
64 heads, 32 sectors/track, 512 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Disk /dev/sdf doesn't contain a valid partition table
Disk /dev/sdg: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdg doesn't contain a valid partition table
Disk /dev/sdh: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdh doesn't contain a valid partition table
依上面的顯示,需要爲/dev/sdb,/dev/sdc,/dev/sdd,dev/sde,/dev/sdf,/dev/sdg,/dev/sdh創建分區
[root@node1 ~]# fdisk /dev/sdb
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-512, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-512, default 512):
Using default value 512
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
按照上面的方法,將在餘下的設備上都創建一個分區。分區尺寸爲該設備的大小。創建後的結果在
node1和node2上都應該是:
[root@node2 ~]# fdisk -l
Disk /dev/sda: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 535 4192965 82 Linux swap
/dev/sda3 536 2610 16667437+ 83 Linux
Disk /dev/sdb: 536 MB, 536870912 bytes
64 heads, 32 sectors/track, 512 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 512 524272 83 Linux
Disk /dev/sdc: 536 MB, 536870912 bytes
64 heads, 32 sectors/track, 512 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Device Boot Start End Blocks Id System
/dev/sdc1 1 512 524272 83 Linux
Disk /dev/sdd: 536 MB, 536870912 bytes
64 heads, 32 sectors/track, 512 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Device Boot Start End Blocks Id System
/dev/sdd1 1 512 524272 83 Linux
Disk /dev/sde: 536 MB, 536870912 bytes
64 heads, 32 sectors/track, 512 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Device Boot Start End Blocks Id System
/dev/sde1 1 512 524272 83 Linux
Disk /dev/sdf: 536 MB, 536870912 bytes
64 heads, 32 sectors/track, 512 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Device Boot Start End Blocks Id System
/dev/sdf1 1 512 524272 83 Linux
Disk /dev/sdg: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdg1 1 1305 10482381 83 Linux
Disk /dev/sdh: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdh1 1 1305 10482381 83 Linux
爲oracle clusterware文件綁定分區到raw devices:
在node1和node2上編輯/etc/sysconfig/rawdevices文件加入下面行:
/dev/raw/raw1 /dev/sdb1
/dev/raw/raw2 /dev/sdc1
/dev/raw/raw3 /dev/sdd1
/dev/raw/raw4 /dev/sde1
/dev/raw/raw5 /dev/sdf1
/dev/raw/raw6 /dev/sdg1
/dev/raw/raw7 /dev/sdh1
然後啓動rawdevices服務:
[root@node1 ~]# /etc/init.d/rawdevices start
改變屬性和權限:
[root@node1 ~]# chown root:oinstall /dev/raw/raw1
[root@node1 ~]# chown root:oinstall /dev/raw/raw2
[root@node1 ~]# chown oracle:oinstall /dev/raw/raw3
[root@node1 ~]# chown oracle:oinstall /dev/raw/raw4
[root@node1 ~]# chown oracle:oinstall /dev/raw/raw5
[root@node1 ~]# chown oracle:oinstall /dev/raw/raw6
[root@node1 ~]# chown oracle:oinstall /dev/raw/raw7
[root@node1 ~]# chmod 640 /dev/raw/raw*
[root@node1 ~]# chmod 660 /dev/raw/raw6
[root@node1 ~]# chmod 660 /dev/raw/raw7
注:實驗中在node1上面對共享的硬盤建完分區,並綁定raw後,在node2上使用fdisk -l可以正常顯示所有硬盤的狀態,但是綁定raw系統還是無法識別分區。需要重新啓動操作系統才能正常識別。
在/etc/udev/permissions.d/目錄下創建文件oracle.permissions並添加內容如下:
#OCR
raw/raw[12]:root:oinstall:0640
#Voting Disks
raw/raw[3-5]:oracle:oinstall:0660
#ASM
raw/raw[67]:oracle:oinstall:0660
這樣可以保證在系統重啓後,這些raw綁定的分區的權限依然如我們前面所設置的那樣。如果不設置這
個文件,也可以在/etc/rc.d/rc.local文件中添加前面的chown和chmod設置。
============================
四. 安裝oracle clusterware
解壓10201_clusterware_linux32完成後名爲clusterware的目錄。進入該目錄開始安裝:
[root@node1 /apps/soft-oracle]# cd clusterware/
[root@node1 /apps/soft-oracle/clusterware]# ./runInstaller
Next
Next
在安裝的path中,默認會是在.bash_profile中設置好的ORACLE_HOME的目錄,點擊Browse,選擇ORA_CRS_HOME的目錄,Next。
這裏檢查系統的相關環境,看是否符合oracle clusterware的安裝。如果有不符合條件的檢查結果會報告,根據報告進行相應的修復,在Retry,直至驗證通過爲止。
會給出所在安裝節點的IP,需要手工添加另外的所有節點,這裏手動添加了node2.
系統能正確識別網卡和所對應的網絡,說明對網絡的配置沒有問題。
根據硬盤的規劃,選擇Normal Redundancy。並輸入/dev/raw/raw1和/dev/raw/raw2兩塊raw。
同樣,Voting Disk也使用Normal Reducdancy。並輸入規劃的raw。
總覽一下所有設置,確認後點擊Install。
按照安裝完後彈出的對話框的要求,root用戶分別執行/u01/app/oracle/orainventory/orainstRoot.sh和/u01/app/oracle/product/crs/root.sh。現在node1上執行,執行完畢後,再在node2上執行。
如果執行腳本成功,會啓動crs,css,evm服務。結束安裝。
============================================
五. 安裝oracle Database 10g 軟件:
可以先驗證一下集羣的狀態:
[oracle@node1 ~]$ crs_stat -t
Name Type Target State Host
------------------------------------------------------------
ora.node1.gsd application ONLINE ONLINE node1
ora.node1.ons application ONLINE ONLINE node1
ora.node1.vip application ONLINE ONLINE node1
ora.node2.gsd application ONLINE ONLINE node2
ora.node2.ons application ONLINE ONLINE node2
ora.node2.vip application ONLINE ONLINE node2
也可以使用runcluvfy.sh工具進行驗證,只是每次我驗證的時候,包括在安裝oracle clusterware軟件的時候,總會報告需要,compat-gcc-7.3-2.96.128,compat-gcc-c++-7.3-2.96.128,compat-libstdc++-7.3-2.96.128這幾個軟件包,而實際上系統已經有相應替代的軟件包了,如果在安裝這些軟件包,系統又會報告軟件包有衝突。
解壓10201_database_linux32.zip後爲database目錄,將該目錄所有者和組設置爲oracle:oinstall。
進入目錄,使用oracle用戶運行runInstaller
[oracle@node1 /apps/soft-oracle/database]$ ./runInstaller
Next
選擇Enterprise Edition,Next
這個目錄默認爲$ORACLE_HOME變量設置的目錄,Next。
勾選node2後,Next
警告爲ip_local_port_range設置問題,編輯/etc/sysctl.conf文件,改爲要求的設置net.ipv4.ip_local_port_range = 1024 65000,Retry,通過後,Next。
點擊Insall.等待安裝完成,在node1上運行/u01/app/oracle/product/10.2.0/db_1/root.sh,運行完畢後,再在node2上相同的目錄下運行root.sh。
運行完腳本後,系統檢測集羣環境,報錯啓動vip失敗,查看日誌的原因爲沒有設置默認網關,解決方法爲編輯$CRS_ORA_HOME/bin/racgvip文件,設置FAIL_WHEN_DEFAULTGW_NOT_FOUND=0,再Retry後,則系統會啓動vip,併成功運行oracle clusterware.
結束安裝,退出。
=======================================
五.創建數據庫:
這裏使用DBCA創建數據庫
1.在$ORACLE_HOME/bin下,運行dbca
[oracle@node1 /u01/app/oracle/product/10.2.0/db_1/bin]$ ./dbca
如果安裝了集羣軟件,則DBCA會自動檢測出並給出選項,是創建oracle Real Application Clusters database還是Oracle single instance database。選擇1,Next
選擇Create a Database,Next.
Select All,讓node1和node2都選中。Next.
輸入數據庫的名字,Next
可以選擇是否自動備份否,Next。
設置密碼,Next
選擇Automatic Storage Management(ASM),Next
識別出前面設置好的ASM,勾選後Next.
Use Oracle-Managed files
設置flash recovery area位置和大小,也可以不設置,Next。
使用sample schemas,Next。
改變一下Character Sets
使用Use Unicode(AL32UTF8),Next
Next
開始創建數據庫
創建完成後退出。Exit.
==============================
總結:
在實驗過程中,遇到最多的是網絡和共享硬盤的問題。可能由於在VMware Server上運行帶來複雜性,有時候node2中運行ifconfig命令後,網卡都沒有了,重啓網絡服務又恢復正常。有時候提示沒有足夠的存儲空間。fdisk -l 查看硬盤數量不少,重啓rawservices服務後有能識別到。可能這些問題在實際的生產系統中不會遇到,但是網絡和存儲的設置對RAC能否成功實施至關重要。如果前期的準備工作到位,硬件,軟件,相關的包,網絡,內核的設置,共享存儲都滿足oracle RAC的要求,則安裝過程是水到渠成的事情。