1. 程式人生 > >CentOS-7-x86_64 for Oracle 12cR2 RAC(未完待續)

CentOS-7-x86_64 for Oracle 12cR2 RAC(未完待續)

def work page 文件中 追加 分享 默認值 一個 響應時間

1.概述Oracle集群

1.1.什麽是Oracle RAC?

Oracle Real Application Cluster (RAC,實時應用集群)用來在集群環境下實現多機共享數據庫,以保證應用的高可用性;同時可以自動實現並行處理及負載均衡,並能實現數據庫在故障時的容錯和無斷點恢復。RAC集合了集群軟件和存儲軟件,為用戶降低了應用成本。當應用規模需要擴充時,用戶可以按需擴展系統,以保證系統的性能。

2 多節點負載均衡

2 提供高可用:故障容錯和無縫切換功能,將硬件和軟件錯誤造成的影響最小化

2 通過並行執行技術提高事務響應時間----通常用於數據分析系統

2 通過橫向擴展提高每秒交易數和連接數----通常對於聯機事務系統

2 節約硬件成本,可以用多個廉價PC服務器代替昂貴的小型機或大型機,同時節約相應維護成本

2 可擴展性好,可以方便添加刪除節點,擴展硬件資源。

1.2.集群拓撲結構圖

技術分享圖片

11G RAC結構圖

2.集群規劃

2.1.1 軟件規劃

軟件名稱

版本

虛擬軟件

virtualBox 5.1.26 r117224 (Qt5.6.2)

操作系統

Linux 3.10.0-327.el7.x86_64 #1

Oracle|Custerware

12c r2

2.2.2 集群網絡,文件規劃

名稱

Rac1

Rac2

公有IP

地址(public)

192.168.2.189

192.168.2.199

私有IP地址(private)

192.168.2.100

192.168.2.101

VIP IP地址

10.10.10.10

10.10.10.20

RAC SID

Deliora1

Deliora2

集群實例

Deliora

SCN IP

192.168.2.200

ASM存儲

+DATA/+VCR/+ARC/+BACKUP

3.系統配置

3.1.1 常規配置系統

*每個節點設置IP、主機名、網絡服務

*/etc/sysconfig/network

#hostname=rac1.deli.com

或者

hostnamectl set-hostname --static rac1.deli.com(不用重啟,需要重新鏈接)

*關閉防火墻,selinux

*systemctl stop firewalld.service(開機關閉)

*setenfore 0

*網絡服務開機啟用

3.1.2 配置hosts文件(所有節點)

#RAC1 host 文件

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

#127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4

#::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

#public IP

192.168.2.189 rac1.deli.com delirac1

192.168.2.199 rac2.deli.com delirac2

#private IP

192.168.2.100 rac1-priv.deli.com delirac1-priv

192.168.2.101 rac2-priv.deli.com delirac2-priv

#virtaul IP

10.10.10.10 rac1-vip.deli.com delirac1-vip

10.10.10.20 rac2-vip.deli.com delirac2-vip

#scan IP

192.168.2.200 rac-scan.deli.com delirac-scan

#RAC2 host 文件

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

#127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4

#::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

#public IP

192.168.2.189 rac1.deli.com delirac1

192.168.2.199 rac2.deli.com delirac2

#private IP

192.168.2.100 rac1-priv.deli.com delirac1-priv

192.168.2.101 rac2-priv.deli.com delirac2-priv

#virtaul IP

10.10.10.10 rac1-vip.deli.com delirac1-vip

10.10.10.20 rac2-vip.deli.com delirac2-vip

#scan IP

192.168.2.200 rac-scan.deli.com delirac-scan

#結合上面所有的修改,重啟系統!(/etc/sysconfig/network

3.1.3 軟件包檢測(可忽略,後面檢測安裝)

# rpm –qa |grep packagename

binutils-2.20.51.0.2-5.11.el6

compat-libcap1-1.10-1

compat-libstdc++-33-3.2.3-69.el6

gcc-4.4.4-13.el6

gcc-c++-4.4.4-13.el6

glibc-2.12-1.7.el6

glibc-devel-2.12-1.7.el6

ksh

libgcc-4.4.4-13.el6

libstdc++-4.4.4-13.el6

libstdc++-devel-4.4.4-13.el6

libaio-0.3.107-10.el6

libaio-devel-0.3.107-10.el6

make-3.81-19.el6

sysstat-9.0.4-11.el6

unixODBC

unixODBC-devel

3.1.4 添加Oracle|grid用戶,HOME,目錄

3.1.4.1 在每個集群節點創建oracle,grid用戶(每個節點)

# groupadd -g 1000 oinstall

# groupadd -g 1020 asmadmin

# groupadd -g 1021 asmdba

# groupadd -g 1022 asmoper

# groupadd -g 1031 dba

# groupadd -g 1032 oper

# useradd oracle -g oinstall -G dba,asmdba,oper -u 501

# useradd grid -g oinstall -G dba,asmdba,asmadmin,asmoper -u 502

3.2在每個集群節點創建所需目錄(每個節點)

# mkdir -p /u01/app/11.2.0/grid

# mkdir -p /u01/app/grid

# chown -R grid:oinstall /u01

# mkdir /u01/app/oracle

# chown oracle:oinstall /u01/app/oracle

# chmod -R 775 /u01/

3.3在每個節點賦予oracle,grid賬戶密碼(每個節點)

[root@localhost /]# passwd oracle

Changing password for user oracle.

New password:

BAD PASSWORD: The password is shorter than 8 characters

Retype new password:

passwd: all authentication tokens updated successfully.

[root@localhost /]#

[root@localhost /]#

[root@localhost /]# passwd grid

Changing password for user grid.

New password:

BAD PASSWORD: The password is shorter than 8 characters

Retype new password:

passwd: all authentication tokens updated successfully.

3.1.5 配置Oracle|grid環境變量(所有節點)

#RAC1 ~/.bash_profile(GIRD )

export ORACLE_HOME=/u01/app/11.2.0/product/11.2.0

export ORACLE_SID=+ASM1 --節點2 +ASM2

export PATH=$PATH:$ORACLE_HOME/bin

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

#RAC1 ~/.bash_profile(ORACLE)

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/11.2.0

export ORACLE_SID=deliora1

export PATH=$PATH:$ORACLE_HOME/bin

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

#RAC2~/. bash_profile(GIRD )

export ORACLE_HOME=/u01/app/11.2.0/product/11.2.0

export ORACLE_SID=+ASM2 --節點2 +ASM2

export PATH=$PATH:$ORACLE_HOME/bin

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

#RAC2 ~/.bash_profile(ORACLE)

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/11.2.0

export ORACLE_SID=deliora2

export PATH=$PATH:$ORACLE_HOME/bin

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

3.1.6 配置Linux內核參數(所有節點)

# vi /etc/sysctl.conf

fs.aio-max-nr = 1048576

fs.file-max = 6815744

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

kernel.sem = 250 32000 100 128

kernel.shmall = 9961472

kernel.shmmax = 1610612736 #最大1.5G

kernel.shmmni = 4096

生效

# sysctl –p

參數

解釋

fs.aio-max-nr = 1048576

同時可以擁有的的異步IO請求數目

1024K

fs.file-max = 6815744

系統中所允許的文件句柄最大數目

6.5M

kernel.shmall =9961472 --(主)

kernel.shmall =6291456 --(備)

Total amount of shared memory
available (bytes or pages)

總的可用共享內存,單位為page(4K字節)

主庫設置為38G

備庫設置為 24G

kernel.shmmax =40802189312 --(主)

kernel.shmmax =25769803776 --(備)

Maximum size of shared
memory segment (bytes

shmmax(bytes) = shmmni(page size, default 4k) * shmall (page的個數)

最大共享內存段大小,單位為字節,

主庫設置為38G

備庫設置為24G

kernel.shmmni =4096

Maximum number of shared memory
segments system-wide

共享內存段的最大數量

默認值

kernel.sem =250 32000 100 128

設置運行的信號量個數,分別對應:

SEMMSL:每組信號量的最大信號個數

SEMMNS:整個系統內存的信號量的最大個數

SEMOPM:每組操作最大信號量個數

SEMMNI:整個系統最大信號標記數

取默認值

net.ipv4.ip_local_port_range = 9000 65500

端口使用範圍

net.core.rmem_default = 262144

TCP數據接收緩存默認大小

net.core.rmem_max = 4194304

TCP數據接收緩存最大值

net.core.wmem_default = 262144

TCP數據發送緩沖默認大小

net.core.wmem_max = 1048586

TCP數據發送緩沖最大值

3.1.7 配置shell限制(所有幾點)

# vi /etc/security/limits.conf

oracle soft nproc 2047

oracle hard nproc 16384

oracle soft nofile 1024

oracle hard nofile 65536

oracle soft stack 10240

grid soft nproc 2047

grid hard nproc 16384

grid soft nofile 1024

grid hard nofile 65536

grid soft stack 10240

3.1.8 配置/dev/shm參數(所有節點)

# /etc/fstab就是在開機引導的時候自動掛載到linux的文件系統

#vi /etc/fstab

tmpfs /dev/shm tmpfs defaults,size=5g 0 0

備註說明: /dev/shm/是linux下一個非常有用的目錄,采用的是tmpfs。因為這個目錄不在硬盤上,而是在內存裏。默認大小為內存大小的一半,tmpfs 可以使用RAM,但它也可以使用您的交換分區來存儲。

3.1.9 關閉NTP及端口範圍參數

Oracle建議使用Oracle Cluster Time Synchronization Service,因此關閉刪除NTP

# /sbin/service ntpd stop

# chkconfig ntpd off

# mv /etc/ntp.conf /etc/ntp.conf.bak

# 重啟網絡

# /etc/rc.d/init.d/network restart

或者

# service network restart

3.2.0 配置Oracle|grid用戶ssh等效性

#RAC1 GRID用戶配置

mkdir .ssh

chmod 700 .ssh/

cd .ssh/

ssh-keygen -t rsa

cat *.pub >> authorized_keys

rm -rf ./*.pub

執行以上步驟生成了authorized_keys文件,現在需要把其他節點的*.pub文件傳送到RAC1,然後合並文件,最後生成的authorized_keys文件下發到每個節點。

#RAC2 GRID用戶配置

mkdir .ssh

chmod 700 .ssh/

cd .ssh/

ssh-keygen -t rsa

scp *.pub [email protected]:/home/grid/.ssh/ #傳送到RAC1

#RAC1 GRID用戶配置

cat *.pub >> authorized_keys

scp authorized_keys [email protected]:/home/grid/.ssh/

#把RAC2節點的*.pub追加至authorized_keys,因為我這裏只有兩個節點所以已經OK,現在把authorized_keys下發到RAC2,需要註意所有節點需要刪除*.pub的文件。

#RAC2 GRID用戶配置

rm -rf ./*.pub

以上已完成grid用戶的ssh等效性,以同樣的方式配置Oracle用戶的等效性~

3.2.1 驗證ssh等效性

#RAC1 Oracle

[oracle@rac1 .ssh]$ ssh delirac1 date

[oracle@rac1 .ssh]$ ssh delirac2 date

[oracle@rac1 .ssh]$ ssh delirac1-vip date

[oracle@rac1 .ssh]$ ssh delirac2-vip date

#RAC2 Oracle

[oracle@rac2 .ssh]$ ssh delirac1 date

Fri Sep 28 17:12:03 CST 2018

[oracle@rac2 .ssh]$ ssh delirac2 date

Fri Sep 28 17:12:06 CST 2018

[oracle@rac2 .ssh]$ ssh delirac1-vip date

Fri Sep 28 17:12:09 CST 2018

[oracle@rac2 .ssh]$ ssh delirac2-vip date

Fri Sep 28 17:12:15 CST 2018

以上已完成Oracle用戶的ssh等效性驗證,以同樣的方式測試grid用戶的等效性~

3.2.2 配置ASM存儲

3.2.2.1 規劃ASM磁盤組

官方文檔中規定了不同冗余策略下OCR、Voting Disk、Database和Recovery所需求的大小。

技術分享圖片

因為這裏是測試環境,所以這裏有sdb 8g,sdc 5g 分別作為OCR和DATA磁盤組。

3.2.2.2 配置ASM磁盤

這裏需要說明一下,配置ASM磁盤有兩種asmlib和裸設備(裸設備和塊設備)。前者用的比較少幾乎不用,所以這裏只介紹後者。裸設備配置ASM磁盤分本地共享磁盤(udev)和網絡iscsi 存儲配置(一般有第三方的存儲軟件)udev + multipath 方式來配置。

獲取iscsi_id 在virtualBox和VMware不一樣。前者通過:/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/sdc,後者直接scsi_id --whitelisted --replace-whitespace --device=/dev/sdc(前提是修改了虛擬機vmx文件中添加disk.EnableUUID = "TRUE")

n 使用命令查看所有的塊設備 ls -l /dev/sd*(所有節點)

[root@rac1 multipath]# /lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/sdb

1ATA_VBOX_HARDDISK_VB921c6ad1-c9485179

[root@rac1 multipath]# /lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/sdc

1ATA_VBOX_HARDDISK_VB5964a173-24bde291

n 修改udev rule文件(RAC每個節點都需要執行)

for i in b c;

do

echo "KERNEL==\"sd*\", BUS==\"scsi\", PROGRAM==\"/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/\$name\", RESULT==\"`/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/sd$i`\", NAME=\"asm-disk$i\", OWNER=\"grid\", GROUP=\"asmadmin\", MODE=\"0660\"" >> /etc/udev/rules.d/99-oracle-asmdevices.rules

done

[root@rac1 multipath]# cat /etc/udev/rules.d/99-oracle-asmdevices.rules

KERNEL=="sd*", BUS=="scsi", PROGRAM=="/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="1ATA_VBOX_HARDDISK_VB921c6ad1-c9485179", NAME="asm-diskb", OWNER="grid", GROUP="asmadmin", MODE="0660"

KERNEL=="sd*", BUS=="scsi", PROGRAM=="/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="1ATA_VBOX_HARDDISK_VB5964a173-24bde291", NAME="asm-diskc", OWNER="grid", GROUP="asmadmin", MODE="0660"

啟動:/sbin/start_udev

n 查看ASM磁盤ll /dev/asm-*

4.Clusterware安裝

5.Oracle軟件安裝

CentOS-7-x86_64 for Oracle 12cR2 RAC(未完待續)