Oracle RAC搭建(一)

dayong2015發表於2014-05-11
1.關於 Oracle Clusterware 和 Oracle RAC
ORACLE RAC 支援多個例項在同一時間點內透過不同服務對資料庫執行相關操作,它提供了一個被稱作cluster的叢集軟體用以支援多個服務同時工作。並且根據業務的需要,也可以擴充套件資料庫例項。
每一個例項有它獨有的記憶體結構和後臺程式,ORACLE RAC 透過使用 Cache Fusion (快取記憶體融合)來同步各個資料庫例項中buffer cache 中的資料,多個資料庫例項共享一個資料庫。當一個資料庫例項2想要訪問磁碟上的某資料塊,而此時的對該資料塊的修改在例項1中的buffer cache中,Cache Fusion 將會將修改後的資料塊從例項1的buffer cache中傳輸給例項2,當然,需要建立節點之間的信任機制。
Oracle Clusterware透過使用如下元件實現對資料庫的可伸縮性和該可用性:
?Voting disk:管理叢集成員,斷定叢集節點的網路故障之間的所有權;
?Oracle Cluster Registry (OCR):維護叢集配置資訊以及配置叢集中的任何叢集資料庫的資訊。OCR包含資訊如資料庫例項執行在哪些節點和服務執行資料庫。OCR還儲存資訊流程和修改控制元件,OCR駐留在共享儲存訪問叢集中的所有節點。
2.關於 Oracle ASM 自動儲存管理
3.關於ORACLE RAC中的網路配置
每個節點至少需要兩塊網路卡,public ip用來向外提供服務,private ip用來實現各節點之間的通訊,virtual ip 用來檢測當某節點出現故障時實現自動轉移。因此virtual ip必須和public ip必須在同一子網作為公共介面。
4.簡單安裝ORACLE RAC
此處採用redhat5.4版本安裝作業系統,虛擬機器版本為vmware 9.0 ,資料庫版本為oracle database 10.0.2
搭建之前的準備,準備虛擬機器一個,建立三個外磁碟,一個用於ocr(1G),一個votedisk(1G),兩個用於asm(每個15G) ,四塊磁碟設定為獨立模式,新增兩塊網路卡,此處採用hostonly連網模式。
5.部署RAC的IP地址規劃表如下:
                                                                       節點rac1的IP規劃:
 節點1(rac1)  對應網路卡  IP地址  網路名
 public ip  eth0  192.168.10.1  rac1
 private ip  eth1  10.0.0.1  rac1-priv
 virtual ip  eth0  192.168.10.3  rac1-vip
                                                                       節點rac2的IP規劃:
 節點2(rac2)  對應網路卡  IP地址  網路名
 public ip  eth0  192.168.10.2  rac2
 private ip  eth1  10.0.0.2  rac2-priv
 virtual ip  eth0  192.168.10.4  rac2-vip
6.建立使用者名稱和組
[root@rac1 ~]# groupadd oinstall

[root@rac1 ~]# groupadd dba

[root@rac1 ~]# useradd -d /home/oracle -g oinstall -G dba oracle

[root@rac1 ~]# passwd oracle

Changing password for user oracle.

New UNIX password:

BAD PASSWORD: it is based on a dictionary word

Retype new UNIX password:

passwd: all authentication tokens updated successfully.

[root@rac1 ~]# id oracle

uid=500(oracle) gid=500(oinstall) groups=500(oinstall),501(dba)

7.root使用者登入,配置/etc/hosts,內容如下:

[root@rac1 ~]# cat /etc/hosts

# Do not remove the following line, or various programs

# that require network functionality will fail.

#127.0.0.1     rac1 localhost.localdomain localhost

127.0.0.1       localhost

#::1               localhost6.localdomain6 localhost6

#public ip

192.168.10.1    rac1

192.168.10.2    rac2

#private ip

10.0.0.1        rac1-priv

10.0.0.2        rac2-priv

#virtual ip

192.168.10.3    rac1-vip

192.168.10.4    rac2-vip

8.建立rac配置的相關目錄
[root@rac1 ~]# mkdir -p /u01/app/oracle/db_1
[root@rac1 ~]# chown -R oracle:oinstall /u01/
9.oracle使用者登入,配置 ~/.bash_profile,新增如下內容:
export PATH
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_BASE=/u01/app/oracle
export CRS_HOME=$ORACLE_BASE/crs
export ORACLE_HOME=$ORACLE_BASE/db_1
export ORACLE_SID=orc1
export ORACLE_TERM=xterm
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/bin:/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin/
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export PATH=$CRS_HOME/bin:$PATH
ulimit -u 16384 -n 65536
umask 022
10.root使用者下登入,修改核心引數 /etc/sysctl.conf,如下:
首先檢視作業系統的記憶體和交換分割槽:
[root@rac1 ~]# grep MemTotal /proc/meminfo
MemTotal:      1035140 kB
[root@rac1 ~]# grep SwapTotal /proc/meminfo
SwapTotal:     2097144 kB
新增內容如下:
kernel.shmall = 2097152 
#kernel.shmmax = 517570                  注意此處不能設定成實體記憶體的一半
kernel.shmmax=536870912     
kernel.shmmni = 4096
kernel.sem = 25032000100128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 102465000
net.core.rmem_default = 1048576
net.core.rmem_max = 1048576
net.core.wmem_default = 262144
net.core.wmem_max = 262144
使配置生效:
[root@rac1 ~]# /sbin/sysctl –p
11.提高oracle使用者的shell限制
root使用者登入,在 /etc/security/limits.conf新增如下內容:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536

12.修改安全限制:

root使用者登入,在/etc/pam.d/login新增如下內容:

session    required     /lib/security/pam_limits.so
13.
新增Hangcheck計時器

root使用者登入,在/etc/rc.local下新增如下內容:

modprobe hangcheck-timer hangcheck-tick=30 hangcheck_margin=180
[root@rac1 ~]# modprobe hangcheck-timer
[root@rac1 ~]# grep Hangcheck /var/log/messages |tail -2
May 14 07:02:06 rac1 kernel: Hangcheck: starting hangcheck timer 0.9.0 (tick is 180 seconds, margin is 60 seconds).
May 14 07:02:06 rac1 kernel: Hangcheck: Using get_cycles().
14.
新增分割槽磁碟

[root@rac1 ~]# fdisk /dev/sdb

[root@rac1 ~]# fdisk /dev/sdc

[root@rac1 ~]# fdisk /dev/sdd

[root@rac1 ~]# fdisk /dev/sde
將原始裝置對映到共享分割槽:
[root@rac1 ~]# vi /etc/sysconfig/rawdevices
新增如下內容:

/dev/raw/raw1 /dev/sdb1

/dev/raw/raw2 /dev/sdc1

/dev/raw/raw3 /dev/sdd1

/dev/raw/raw4 /dev/sde1

使對映立即生效:
[root@rac1 ~]#  /sbin/service rawdevices restart
Assigning devices:
           /dev/raw/raw1  --&gt   /dev/sdb1
/dev/raw/raw1:  bound to major 8, minor 17
           /dev/raw/raw2  --&gt   /dev/sdc1
/dev/raw/raw2:  bound to major 8, minor 33
           /dev/raw/raw3  --&gt   /dev/sdd1
/dev/raw/raw3:  bound to major 8, minor 49
           /dev/raw/raw4  --&gt   /dev/sde1
/dev/raw/raw4:  bound to major 8, minor 65
done
將對映配置到/etc/udev/rules.d/60-raw.rules中,新增內容如下

ACTION=="add", KERNEL=="/dev/sdb1",RUN+="/bin/raw /dev/raw/raw1 %N"

ACTION=="add", ENV{MAJOR}=="8",ENV{MINOR}=="17",RUN+="/bin/raw /dev/raw/raw1 %M %m"

ACTION=="add", KERNEL=="/dev/sdc1",RUN+="/bin/raw /dev/raw/raw2 %N"

ACTION=="add", ENV{MAJOR}=="8",ENV{MINOR}=="33",RUN+="/bin/raw /dev/raw/raw2 %M %m"

ACTION=="add", KERNEL=="/dev/sdd1",RUN+="/bin/raw /dev/raw/raw3 %N"

ACTION=="add", ENV{MAJOR}=="8",ENV{MINOR}=="49",RUN+="/bin/raw /dev/raw/raw3 %M %m"

ACTION=="add", KERNEL=="/dev/sde1",RUN+="/bin/raw /dev/raw/raw4 %N"

ACTION=="add", ENV{MAJOR}=="8",ENV{MINOR}=="65",RUN+="/bin/raw /dev/raw/raw4 %M %m"

KERNEL=="raw[1-4]", OWNER="oracle", GROUP="oinstall", MODE="640"
配置分配許可權:
[root@rac1 ~]# vi /etc/rc.d/rc.local
#新增如下內容:

chown oracle:dba  /dev/raw/raw1

chown oracle:dba  /dev/raw/raw2

chown oracle:dba  /dev/raw/raw3

chown oracle:dba  /dev/raw/raw4

chmod 660 /dev/raw/raw1

chmod 660 /dev/raw/raw2

chmod 660 /dev/raw/raw3

chmod 660 /dev/raw/raw4

使繫結的裝置生效:

[root@rac1 ~]# start_udev

Starting udev:                                             [  OK  ]

[root@rac1 ~]# ls -l /dev/raw

total 0

crw-r----- 1 oracle oinstall 162, 1 May 12 10:10 raw1

crw-r----- 1 oracle oinstall 162, 2 May 12 10:10 raw2

crw-r----- 1 oracle oinstall 162, 3 May 12 10:10 raw3

crw-r----- 1 oracle oinstall 162, 4 May 12 10:10 raw4

15.安裝oracle所需軟體包

glibc-2.5-24

glibc-common-2.5

glibc-devel-2.5

glibc-headers-2.5

kernel-headers-2.6.18

ksh-20060214

libaio-0.3.106

libaio-devel-0.3.106

libgcc-4.1.2

libgomp-4.1.2

libstdc++-4.1.2

libstdc++-devel-4.1.2

make-3.81

sysstat-7.0.2

unixODBC-2.2.11

unixODBC-devel-2.2.11

libXp-1.0.0-8.1.el5.i386

libXp-devel-1.0.0-8.1.el5.i386

16.為方便配置,本實驗對節點2採用複製節點1的配置,需要修改IP地址、主機名,以及oracle使用者下配置等相關資訊:

在啟動linux之前(vmware處於關閉狀態),修改vmware的工作目錄,找到.vmx檔案,用記事本開啟新增如下資訊:(否則兩臺虛擬機器不能同時啟動)兩臺虛擬機器都要新增

disk.locking = "false" 

diskLib.dataCacheMaxSize = "0" 

diskLib.dataCacheMaxReadAheadSize = "0" 

diskLib.DataCacheMinReadAheadSize = "0" 

diskLib.dataCachePageSize = "4096" 

diskLib.maxUnsyncedWrites = "0"

scsi1:1.deviceType = "disk"

scsi1:2.deviceType = "disk"

scsi1:0.deviceType = "disk"

scsi1:3.deviceType = "disk"

scsi1:sharedBus='virtual'  ---虛擬機器是workstaion時新增,server版本不需要

並且對於節點2中,修改
displayName = "rac2"
scsi0:0.fileName = "D:\RAC10g\rac2\rac1.vmdk"

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29634949/viewspace-1158604/,如需轉載,請註明出處,否則將追究法律責任。

相關文章