1. 程式人生 > >Oracle 11g RAC搭建(VMware環境)

Oracle 11g RAC搭建(VMware環境)

安裝環境與網路規劃

安裝環境

主機作業系統:windows 10 
虛擬機器VMware12:兩臺Oracle Linux R6 U5 x86_64 
oracle Database software: Oracle11gR2 
Cluster software: Oracle grid infrastructure 11gR2 
共享儲存:ASM

[[email protected] ~]# 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.5 Release: 6.5 Codename: n/a [[email protected] ~]# uname -r 3.8.13-16.2.1.el6uek.x86_64
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

細節說明: 
1. 安裝Oracle linux時,注意分配兩個網絡卡,一個網絡卡為Host Only方式,用於兩臺虛擬機器節點的通訊,另一個網絡卡為Nat方式,用於連線外網,後面再手動分配靜態IP。每臺主機的記憶體和swap規劃為至少2.5G。硬碟規劃為:boot 500M,其他空間分配為LVM方式管理,LVM劃分2.5G為swap,其他為/。 
兩臺Oracle Linux主機名為rac1、rac2 
注意這裡安裝的兩個作業系統最好在不同的硬碟中,否則I/O會很吃力。 
2. 由於採用的是共享儲存ASM,而且搭建叢集需要共享空間作註冊盤(OCR)和投票盤(votingdisk)。VMware建立共享儲存方式: 
進入VMware安裝目錄,cmd命令下:

C:\Program Files (x86)\VMware\VMware Workstation>
vmware-vdiskmanager.exe -c -s 1000Mb -a lsilogic -t 2 F:\VMware\RAC\Sharedisk\ocr.vmdk
vmware-vdiskmanager.exe -c -s 1000Mb -a lsilogic -t 2 F:\VMware\RAC\Sharedisk\ocr2.vmdk
vmware-vdiskmanager.exe -c -s 1000Mb -a lsilogic -t 2 F:\VMware\RAC\Sharedisk\votingdisk.
vmdk vmware-vdiskmanager.exe -c -s 20000Mb -a lsilogic -t 2 F:\VMware\RAC\Sharedisk\data.vmdk vmware-vdiskmanager.exe -c -s 10000Mb -a lsilogic -t 2 F:\VMware\RAC\Sharedisk\backup.vmdk
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

這裡建立了兩個1G的ocr盤,一個1G的投票盤,一個20G的資料盤,一個10G的備份盤。

修改RAC1虛擬機器目錄下的vmx配置檔案:

scsi1.present = "TRUE"
scsi1.virtualDev = "lsilogic"
scsi1.sharedBus = "virtual"

scsi1:1.present = "TRUE"
scsi1:1.mode = "independent-persistent"
scsi1:1.filename = "F:\VMware\RAC\Sharedisk\ocr.vmdk"
scsi1:1.deviceType = "plainDisk"

scsi1:2.present = "TRUE"
scsi1:2.mode = "independent-persistent"
scsi1:2.filename = "F:\VMware\RAC\Sharedisk\votingdisk.vmdk"
scsi1:2.deviceType = "plainDisk" 

scsi1:3.present = "TRUE"
scsi1:3.mode = "independent-persistent"
scsi1:3.filename = "F:\VMware\RAC\Sharedisk\data.vmdk"
scsi1:3.deviceType = "plainDisk"

scsi1:4.present = "TRUE"
scsi1:4.mode = "independent-persistent"
scsi1:4.filename = "F:\VMware\RAC\Sharedisk\backup.vmdk"
scsi1:4.deviceType = "plainDisk"

scsi1:5.present = "TRUE"
scsi1:5.mode = "independent-persistent"
scsi1:5.filename = "F:\VMware\RAC\Sharedisk\ocr2.vmdk"
scsi1:5.deviceType = "plainDisk"

disk.locking = "false"
diskLib.dataCacheMaxSize = "0"
diskLib.dataCacheMaxReadAheadSize = "0"
diskLib.DataCacheMinReadAheadSize = "0"
diskLib.dataCachePageSize = "4096"
diskLib.maxUnsyncedWrites = "0"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

修改RAC2的vmx配置檔案:

scsi1.sharedBus = "virtual"
disk.locking = "false"
diskLib.dataCacheMaxSize = "0"
diskLib.dataCacheMaxReadAheadSize = "0"
diskLib.DataCacheMinReadAheadSize = "0"
diskLib.dataCachePageSize = "4096"
diskLib.maxUnsyncedWrites = "0"
gui.lastPoweredViewMode = "fullscreen"
checkpoint.vmState = ""
usb:0.present = "TRUE"
usb:0.deviceType = "hid"
usb:0.port = "0"
usb:0.parent = "-1"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

這裡就在RAC2的虛擬機器設定中手動新增建立好的五個虛擬硬碟,要求是獨立永久屬性。 
這裡寫圖片描述

網路規劃

硬體配置要求: 
- 每個伺服器節點至少需要2塊網絡卡,一個對外網路介面,一個私有網路介面(心跳)。 
- 如果你通過OUI安裝Oracle叢集軟體,需要保證每個節點用於外網或私網介面(網絡卡名)保證一致。比如,node1使用eth0作為對外介面,node2就不能使用eth1作為對外介面。

IP配置要求: 
這裡不採用DHCP方式,指定靜態的scan ip(scan ip可以實現叢集的負載均衡,由叢集軟體按情況分配給某一節點)。 
每個節點分配一個ip、一個虛擬ip、一個私有ip。 
其中ip、vip和scan-ip需要在同一個網段。

非GNS下手動配置IP例項:

Identity Home Node Host Node Given Name Type Address
RAC1 Public RAC1 RAC1 rac1 Public 192.168.248.101
RAC1 VIP RAC1 RAC1 rac1-vip Public 192.168.248.201
RAC1 Private RAC1 RAC1 rac1-priv Private 192.168.109.101
RAC2 RAC2 RAC2 rac2 Public 192.168.248.102
RAC2 VIP RAC2 RAC2 rac2-vip Public 192.168.248.202
RAC2 Private RAC2 RAC2 rac2-priv Private 192.168.109.102
SCAN IP none Selected by Oracle Clusterware scan-ip virtual 192.168.248.110

環境配置

預設情況下,下面操作在每個節點下均要進行,密碼均設定oracle

1. 通過SecureCRT建立命令列連線

  • sqlplus中Backspace出現^H的亂碼 
    Options->Session Options->Terminal->Emulation->Mapped Keys->Other mappings 
    勾選Backspace sends delete

  • vi中不能使用delete和home 
    Options->Session Options->Terminal->Emulation 
    設定Terminal為Linux 
    勾選Select an alternate keyboard emulation為Linux

2. 關閉防火牆

[root@rac1 ~]# setenforce 0
setenforce: SELinux is disabled
[root@rac1 ~]# vi /etc/sysconfig/selinux 
SELINUX=disabled
[root@rac1 ~]# service iptables stop
[root@rac1 ~]# chkconfig iptables off
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

3. 建立必要的使用者、組和目錄,並授權

/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
mkdir /u01/app/oracle
chown -R grid:oinstall /u01
chown oracle:oinstall /u01/app/oracle
chmod -R 775 /u01/
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

參照官方文件,採用GI與DB分開安裝和許可權的策略,對於多例項管理有利。

4. 節點配置檢查

記憶體大小:至少2.5GB 
Swap大小: 
當記憶體為2.5GB-16GB時,Swap需要大於等於系統記憶體。 
當記憶體大於16GB時,Swap等於16GB即可。 
檢視記憶體和swap大小:

[root@rac1 ~]# grep MemTotal /proc/meminfo
MemTotal:        2552560 kB
[root@rac1 ~]# grep SwapTotal /proc/meminfo
SwapTotal:       2621436 kB
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

通過此種方式進行swap 的擴充套件,首先要計算出block的數目。具體為根據需要擴充套件的swapfile的大小,以M為單位。block=swap分割槽大小*1024, 例如,需要擴充套件64M的swapfile,則:block=64*1024=65536.

然後做如下步驟:

#dd if=/dev/zero of=/swapfile bs=1024 count=65536 
#mkswap /swapfile 
#swapon /swapfile 
#vi /etc/fstab 
增加/swapf swap swap defaults 0 0 
# cat /proc/swaps 或者# free –m //檢視swap分割槽大小 
# swapoff /swapf //關閉擴充套件的swap分割槽

5. 系統檔案設定

(1)核心引數設定: 
[[email protected] ~]# vi /etc/sysctl.conf 
kernel.msgmnb = 65536 
kernel.msgmax = 65536 
kernel.shmmax = 68719476736 
kernel.shmall = 4294967296 
fs.aio-max-nr = 1048576 
fs.file-max = 6815744 
kernel.shmall = 2097152 
kernel.shmmax = 1306910720 
kernel.shmmni = 4096 
kernel.sem = 250 32000 100 128 
net.ipv4.ip_local_port_range = 9000 65500 
net.core.rmem_default = 262144 
net.core.rmem_max = 4194304 
net.core.wmem_default = 262144 
net.core.wmem_max = 1048586 
net.ipv4.tcp_wmem = 262144 262144 262144 
net.ipv4.tcp_rmem = 4194304 4194304 4194304

這裡後面檢測要改 
kernel.shmmax = 68719476736

確認修改核心 
[[email protected] ~]# sysctl -p

也可以採用Oracle Linux光碟中的相關安裝包來調整 
[[email protected] Packages]# pwd 
/mnt/cdrom/Packages 
[[email protected] Packages]# ll | grep preinstall 
-rw-r–r– 1 root root 15524 Dec 25 2012 oracle-rdbms-server-11gR2-preinstall-1.0-7.el6.x86_64.rpm

(2)配置oracle、grid使用者的shell限制 
[[email protected] ~]# vi /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

(3)配置login 
[[email protected] ~]# vi /etc/pam.d/login 
session required pam_limits.so

  1. 安裝需要的軟體包 
    binutils-2.20.51.0.2-5.11.el6 (x86_64) 
    compat-libcap1-1.10-1 (x86_64) 
    compat-libstdc++-33-3.2.3-69.el6 (x86_64) 
    compat-libstdc++-33-3.2.3-69.el6.i686 
    gcc-4.4.4-13.el6 (x86_64) 
    gcc-c++-4.4.4-13.el6 (x86_64) 
    glibc-2.12-1.7.el6 (i686) 
    glibc-2.12-1.7.el6 (x86_64) 
    glibc-devel-2.12-1.7.el6 (x86_64) 
    glibc-devel-2.12-1.7.el6.i686 
    ksh 
    libgcc-4.4.4-13.el6 (i686) 
    libgcc-4.4.4-13.el6 (x86_64) 
    libstdc++-4.4.4-13.el6 (x86_64) 
    libstdc++-4.4.4-13.el6.i686 
    libstdc++-devel-4.4.4-13.el6 (x86_64) 
    libstdc++-devel-4.4.4-13.el6.i686 
    libaio-0.3.107-10.el6 (x86_64) 
    libaio-0.3.107-10.el6.i686 
    libaio-devel-0.3.107-10.el6 (x86_64) 
    libaio-devel-0.3.107-10.el6.i686 
    make-3.81-19.el6 
    sysstat-9.0.4-11.el6 (x86_64)

    這裡使用的是配置本地源的方式,自己先進行配置: 
    [[email protected] ~]# mount /dev/cdrom /mnt/cdrom/ 
    [[email protected] ~]# vi /etc/yum.repos.d/dvd.repo