RHEL6 Oracle11G RAC部署

Oracle11g RAC部署文檔node

1、RAC簡介linux

RAC 是 Oracle 數據庫的一個羣集解決方案,是有着兩個或者兩個以上的數據庫節點協調運做能力的。c++

 

 

Oracle Real Application Cluster :在服務器集羣上運行,可調整集羣中全部應用程序的工做量,同時還提供如下功能:sql

•  集成式集羣件:其中包括用於進行集羣鏈接、消息傳送和鎖定、集羣控制與恢復的功能。在 Oracle Database 10g 或更高版本支持的全部平臺上都可使用這些功能。數據庫

•  自動工做量管理:能夠定義一些規則,以便在正常操做和對故障做出響應期間將處理資源自動分配給每一個服務。用戶能夠動態地修改這些規則,以知足不斷變化的業務需求。這種在數據庫網格中動態分配資源的功能是 Oracle RAC 特有的功能。緩存

•  向中間層自動發送事件通知:集羣配置發生更改後,中間層能夠當即適應實例故障轉移或可用的新實例。這樣,最終用戶在發生實例故障轉移時可繼續工做,不存在一般由網絡超時引發的延遲。有新實例可用時,中間層能夠當即開始與該實例創建負載平衡鏈接。Oracle Database 10g 或更高版本中的 Java 數據庫鏈接 (JDBC) 驅動程序擁有「快速鏈接故障轉移」功能,該功能能夠自動啓用以處理以上事件。安全

RAC的特色bash

一、集羣內多臺服務器節點(m個)上存在多個實例(n個);服務器

二、一個數據庫(database)文件系統存儲在共享存儲設備上,好比NAS、SAN;網絡

三、實例之間經過內聯網絡及集成式集羣件互相通信、交換數據。

四、每個節點的實例都有本身的SGA、後臺進程、Redo Logs、Undo Tablespace及參數配置文件(也可以使用同一套公共的參數文件)。

 

RAC的缺陷

RAC並不能解決物理讀寫、數據安全等問題,由於無論多少個實例,數據都是存儲在一個共享存儲設備上。

儘管RAC能夠經過多實例冗餘實現高可用性,但終究脫離不了集中式數據庫的本質,其與分佈式系統相比,硬盤讀寫速度、網絡帶寬及質量仍然是其瓶頸所在。由於它使用一套共享存儲系統,在多實例同時讀寫時,在網絡中傳輸大容量的數據顯然不如傳輸分發的數據處理任務訪問須要的數據分片方便快捷,並且分佈式集羣中大部分任務都是使用局部本地數據庫,訪問速度效率更高。

 

後臺進程

LMSn 全局緩存服務進程GCS

LMD 全局查詢服務守護進程

LMON 全局查詢服務監視進程

LCK0 實例查詢進程

DIAG 診斷守護進程

 

服務進程

CRS 集羣資源服務

CSS 集羣同步服務

EVMD 事件管理服務

ONS 事件的發佈及訂閱服務

 

Cache Fusion機制

前映像 past image

VIP 虛擬IP地址,ORC 集羣註冊文件,Voting Disk 表決磁盤

 

2、環境說明

Vmware ESXI 5.1

系統:Red Hat Enterprise Linux Server release 6.3

安裝包:linux.x64_11gR2_database_2of2.zip,linux.x64_11gR2_database_1of2.zip,linux.x64_11gR2_grid

硬件:內存至少2G,Swap至少3G

node1 eth0 192.168.24.95 192.168.24.71(VIP)      rac1

      eth1 10.0.24.1

node2 eth0 192.168.24.96 192.168.24.72(VIP)      rac2

      eth1 10.0.24.2

兩塊網卡:VMware virtual Ethernet adapter 1 192.168.24網段

VMware virtual Ethernet adapter 2 10.0.24網段

 

3、vmware中硬盤網絡部署

Vmware存儲器中增長rac文件夾放置共享存儲文件

 

Rac1

1.添加硬盤。選擇建立新的虛擬磁盤。

 

 

2.選擇厚置備置零的置備模式,不然虛機開機會報錯。

 

 

3.節點1選擇scsi(1:0),模式-獨立-持久

 

 

4.SCSI總線共享選擇虛擬

 

 

 

Rac2

1.添加硬盤,使用節點1的硬盤2文件

 

 

2.選擇與節點1相同的SCSI(1:0)

 

 

3.SCSI總線共享選擇虛擬,模式-獨立-持久

 

 

 

3.1 IP規劃

Rac1:ifconfig eth0:1 192.168.24.71 netmask 255.255.255.0 up

ifconfig eth1 10.0.24.1 netmask 255.255.255.0 up

Rac2:ifconfig eth0:1 192.168.24.72 netmask 255.255.255.0 up

ifconfig eth1 10.0.24.2 netmask 255.255.255.0 up

刪除IP:ip addr del 192.168.24.72 dev eth0:1

Rac安裝前VIP不須要配置

 

/etc/hosts

###eth0 public ip

192.168.24.95 rac1

192.168.24.96 rac2

###etc1 private ip

10.0.24.1 rac1-priv

10.0.24.2 rac2-priv

###virtual ip

192.168.24.71 rac1-vip

192.168.24.72 rac2-vip

###scan ip

192.168.24.70 rac-scan

注:scan ip 和virtual ip 無需設置IP,爲空IP

 

rac1

vi /etc/sysconfig/network

HOSTNAME=rac1

 

rac2

vi /etc/sysconfig/network

HOSTNAME=rac2

 

3.2 關閉服務,兩節點操做

chkconfig ip6tables off

chkconfig postfix off

mv /etc/ntp.conf /etc/ntp.confbak

reboot

 

3.3 軟件包檢查,兩節點操做

rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE}(%{ARCH})\n' binutils \

compat-libstdc++-33 \

elfutils-libelf- \

elfutils-libelf-devel \

gcc \

gcc-c++ \

glibc \

glibc-common \

glibc-devel \

glibc-devel \

glibc-headers \

ksh \

libaio \

libaio-devel \

libgcc \

libstdc++ \

libstdc++-devel \

make \

numactl-devel \

sysstat

 

3.4 安裝not installed,兩節點操做

yum install -y compat-libstdc++-33 elfutils-libelf-devel gcc gcc-c++ glibc-devel glibc-headers ksh libaio-devel libstdc++-devel numactl-devel compat-libcap1

 

3.5 建立用戶,組,兩節點操做

groupadd oinstall

groupadd dba

groupadd oper

groupadd asmadmin

groupadd asmdba

groupadd asmoper

useradd -g oinstall -G dba,asmdba,asmadmin,asmoper grid

useradd -g oinstall -G dba,oper,asmdba oracle

echo -n oracle|passwd --stdin grid

echo -n oracle|passwd --stdin oracle

 

3.6 建立軟件安裝目錄並賦予權限,兩節點操做

目錄規劃:

Oracle Base 目錄 :/oracle/db

Grid Base 目錄:/oracle/grid

Grid Home 目錄:/oracle/asm

 

建立目錄

mkdir -p /oracle

mkdir -p /oracle/db

mkdir -p /oracle/grid

mkdir -p /oracle/asm

 

賦予權限

chown -R grid.dba /oracle

chown -R grid.dba /oracle/asm

chown -R grid.dba /oracle/grid

chown -R oracle.dba /oracle/db

chmod -R 775 /oracle

 

3.7 修改系統內核參數,兩節點操做

 

3.7.1 編輯/etc/sysctl.conf文件中加入下列參數

fs.aio-max-nr = 1048576

fs.file-max = 6815744

kernel.shmall = 2097152

kernel.shmmax = 5368709120

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

 

sysctl -p 運行使其生效

 

3.7.2 設置Shell Limits(系統資源限制)

在/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.7.3 修改安全限制

編輯/etc/pam.d/login文件,添加下列行

session    required     pam_limits.so

 

3.7.4 修改/etc/profile

添加下列爲文件

if [ $USER = "oracle" ] || [ $USER = "grid" ]; then

if [ $SHELL = "/bin/ksh" ]; then

ulimit -p 16384

ulimit -n 65536

else

ulimit -u 16384 -n 65536

fi

umask 022

fi

# source /etc/profile   運行使其生效

 

4、修改用戶環境變量

4.1 Grid 用戶

修改rac1環境變量

# su - grid

$ vi .bash_profile

export ORACLE_BASE=/oracle/grid

export ORACLE_HOME=/oracle/asm

export ORACLE_SID=+ASM1

export PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin

export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin:$PATH

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

export LD_LIBRARY_PATH

CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

CLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlib

export CLASSPATH

$ source .bash_profile 使其生效

 

修改rac2環境變量

# su - grid

$ vi .bash_profile

export ORACLE_BASE=/oracle/grid

export ORACLE_HOME=/oracle/asm

export ORACLE_SID=+ASM2

export PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin

export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin:$PATH

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

export LD_LIBRARY_PATH

CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

CLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlib

export CLASSPATH

$ source .bash_profile 使其生效

 

4.2 Oracle 用戶

修改rac1環境變量

# su - oracle

$ vi .bash_profile

export ORACLE_BASE=/oracle/db

export ORACLE_HOME=$ORACLE_BASE/product/11.2

export ORACLE_SID=racdb1

export PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin

export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin:$PATH

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

export LD_LIBRARY_PATH

CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

CLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlib

export CLASSPATH

$ source .bash_profile 使其生效

 

修改rac2環境變量

# su - oracle

$ vi .bash_profile

export ORACLE_BASE=/oracle/db

export ORACLE_HOME=$ORACLE_BASE/product/11.2

export ORACLE_SID=racdb2

export PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin

export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin:$PATH

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

export LD_LIBRARY_PATH

CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

CLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlib

export CLASSPATH

$ source .bash_profile 使其生效

 

5、配置互信

5.1 Grid用戶互信配置

Rac1

[root@rac1 ~]# su – grid

[grid@rac1 ~]$ ssh-keygen -t rsa

[grid@rac1 ~]$ ssh-keygen -t dsa

 

Rac2

[root@rac2 ~]# su – grid

[grid@rac2 ~]$ ssh-keygen -t rsa

[grid@rac1 ~]$ ssh-keygen -t dsa

 

Rac1

[grid@rac1 ~]$ cat ~/.ssh/*.pub >> ~/.ssh/authorized_keys

[grid@rac1 ~]$ ssh grid@rac2 cat ~/.ssh/*.pub >> ~/.ssh/authorized_keys

 

Rac2

[grid@rac2 ~]$ cat ~/.ssh/*.pub >> ~/.ssh/authorized_keys

[grid@rac2 ~]$ ssh grid@rac1 cat ~/.ssh/*.pub >>~/.ssh/authorized_keys

 

檢驗  在rac一、rac2同時執行如下操做

$ssh rac1 date

$ssh rac1-priv date

$ssh rac2 date

$ssh rac2-priv date

 

5.2 oracle用戶互信配置

Rac1

[root@rac1 ~]# su - oracle

[oracle@rac1 ~]$ ssh-keygen -t rsa

[oracle@rac1 ~]$ ssh-keygen -t dsa

 

Rac2

[root@rac2 ~]# su - oracle

[oracle@rac2 ~]$ ssh-keygen -t rsa

[oracle@rac2 ~]$ ssh-keygen -t dsa

 

Rac1

[oracle@rac1 ~]$ cat ~/.ssh/*.pub >> ~/.ssh/authorized_keys

[oracle@rac1 ~]$ ssh oracle@rac2 cat ~/.ssh/*.pub >>~/.ssh/authorized_keys

 

Rac2

[oracle@rac2 ~]$ cat ~/.ssh/*.pub >> ~/.ssh/authorized_keys

[oracle@rac2 ~]$ ssh oracle@rac1 cat ~/.ssh/*.pub >>~/.ssh/authorized_keys

 

檢驗在rac一、rac2同時執行如下操做

$ssh rac1 date

$ssh rac1-priv date

$ssh rac2 date

$ssh rac2-priv date

 

6、建立共享磁盤

確保兩臺機器均是如下狀態,打開虛擬機進行磁盤的格式化等操做

查看兩個節點中服務器識別狀態

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

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

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

 

Rac2

[root@rac2 ~]# fdisk -l /dev/sdb

 

兩個節點均要操做

映射到裸設備

修改/etc/udev/rules.d/60-raw.rules文件,添加如下內容

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

KERNEL=="raw*",OWNER="grid",GROUP="dba",MODE="660"

 

兩個節點均要操做

[root@rac1 ~]# partprobe

[root@rac1 ~]# start_udev

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

 

7、介質上傳

[root@rac1 ~]# mkdir /soft

[root@rac1 ~]# mv grid /soft

[root@rac1 ~]# chown -R grid.dba /soft/

 

使用grid用戶上傳

 

cluster安裝

[root@rac1 ~]# cd /soft/grid/rpm

[root@rac1 rpm]# rpm -ivh cvuqdisk-1.0.7-1.rpm

[root@rac1 rpm]# scp cvuqdisk-1.0.7-1.rpm rac2:/tmp

[root@rac2 ~]# rpm -ivh /tmp/cvuqdisk-1.0.7-1.rpm

[grid@rac1 grid]$ ./runInstaller

 

7.1 選擇要安裝的軟件類型

選擇Install and Configure GridInfrastructure for a Cluster,點擊「Next」

 

 

7.2 選擇安裝類型

選擇Advanced Installation,點擊「Next」

 

 

7.3 選擇產品語言

添加簡體中文,Simplified Chinese,點擊「Next」

 

 

7.4 設置集羣名稱和scan名字

 

 

7.5 配置集羣節點信息

添加節點2的信息,名字和虛擬ip都是在hosts中配置的

 

 

此處就不須要再配置ssh互信了,以前已經作過配置,若是前面沒有配置,此處能夠進行配置,10G以前沒有此選項

 

7.6 配置網絡接口

查看是否正常

 

 

7.7 指定OCR和vote的存儲位置

 

 

7.8 定義DG名字,選擇所存儲的盤

 

 

7.9 指定asm的密碼

可能會提示密碼強度不夠,點擊yes便可,next

 

 

 

7.10 系統組設置選擇用戶組

選擇dba組,出現提示,忽略便可

 

 

7.11指定安裝目錄

查看是不是環境變量中設置的路徑

 

 

7.12 創建產品清單目錄

 

 

7.13安裝前檢查,勾選如下警告

不影響安裝,點擊next

 

 

7.14 整體信息檢查

檢查相關配置信息是否正確

 

 

7.15 執行配置腳本

使用root用戶執行如下兩個腳本

 

 

Rac1

/oracle/oraInventory/orainstRoot.sh

 

Rac2

/oracle/oraInventory/orainstRoot.sh

 

Rac1

/oracle/asm/root.sh

 

Rac2

/oracle/asm/root.sh

 

報錯

 

 

11.2.0.1 BUG

監控/var/tmp/.oracle/npohasd,有內容時運行

/bin/dd if=/var/tmp/.oracle/npohasd of=/dev/null bs=1024 count=1消除BUG

 

碰到問題回滾

/oracle/asm/crs/install/rootcrs.pl -deconfig -verbose -force

 

7.16 安裝完成

碰見如下錯誤,是正常的,是由於在hosts文件中存在有scan ip,只要兩個節點能夠ping同scan的ip便可

 

 

安裝完成,查看集羣狀態

crs_stat -t

 

 

 

8、安裝數據庫軟件

rdbms的安裝

[oracle@rac1 ~]$ cd database/

[oracle@rac1 database]$ ./runInstaller

 

8.1 選擇安裝類型

 

 

8.2 安裝選項選擇

選擇Oracle Real Application Clusters database installation

 

 

8.3 選擇產品語言

 

 

8.4 選擇安裝數據庫類型,選擇企業版

 

 

8.5 安裝目錄選擇

查看是否和oracle用戶環境變量中配置的相同

 

 

8.6 設置系統組

均選擇dba組

 

 

8.7 安裝前檢查

 

 

8.8 執行配置腳本

安裝完成

 

 

[root@rac2 ~]#/oracle/oraInventory/orainstRoot.sh

[root@rac1 ~]#/oracle/db/product/11.2/root.sh

[root@rac2 ~]#/oracle/db/product/11.2/root.sh

9、數據庫建立

9.1 使用oracle用戶建立數據庫

[oracle@rac1 ~]$ dbca

 

 

9.2建立一個數據庫

 

 

9.3自定義數據庫

 

 

9.4指定數據庫名和實例名

 

 

9.5選擇不安裝EM

 

 

9.6設置數據庫管理密碼

可能會提示強度不夠,忽略便可

 

 

9.7選擇數據文件存儲方式

 

 

9.8不指定閃回區

 

 

9.9選擇數據庫組件,根據須要選擇

 

 

9.10配置數據庫相關參數

 

 

9.11字符集選擇

 

 

9.12數據庫文件定義

 

 

9.13正式安裝

 

 

9.14完成安裝

 

 

9.15檢查集羣狀態

[grid@rac1 ~]$ crs_stat –t

 

 

數據庫鏈接

[oracle@rac1 ~]$ sqlplus system/oracle@racdb

[oracle@rac2 ~]$ sqlplus system/oracle@racdb

 

10、平常管理

RAC全部資源信息

crs_stat –t

 

show parameter instance

查看RAC環境

 

列出配置的全部數據庫

srvctl config database

 

全部實例和服務狀態

srvctl status database -d 實例名

 

ASM實例狀態

srvctl status asm -n SID名

 

顯示RAC數據庫配置

srvctl config database -d 實例名

 

查詢集羣中全部正在運行的實例

SELECT

inst_id

, instance_number inst_no

, instance_name inst_name

, parallel

, status

, database_status db_status

, active_state state

, host_name host

FROM gv$instance

ORDER BY inst_id;

 

 

 

select name from v$datafile

union

select member from v$logfile

union

select name from v$controlfile

union

select name from v$tempfile;

 

 

 

11、RAC關閉順序

11.1 關閉數據庫,oracle用戶執行srvctl命令

中止全部節點上的實例

[oracle@node1 ~]$srvctl stop database -d 實例名

 

查看節點狀態

[oracle@node1 ~]$srvctl status database -d 實例名

SQL>shutdown immediate;

 

11.2 中止集羣服務,必須以root用戶運行

中止全部節點服務

[root@node1 ~]/oracle/asm/bin/crsctl stop cluster -all

 

查看節點狀態

[grid@node1 ~]crs_stat -t -v

 

11.3 中止HAS(High Availability Services),必須以root用戶運行,全部節點都要執行

[root@node1 ~]/oracle/asm/bin/crsctl stop has

 

12、RAC啓動順序

12.1 啓動HAS(High Availability Services),必須以root用戶 ,全部節點都要執行

[root@node1 ~]/oracle/asm/bin/crsctl start has

 

查看節點狀態

[grid@node1 ~]crs_stat -t -v

 

12.2 啓動集羣(cluster

[root@node1 ~]/oracle/asm/bin/crsctl start cluster -all

 

12.3 啓動數據庫,oracl用戶執行srvctl命令

[oracle@node1 ~]$ srvctl start database -d 實例名

 

檢查節點狀態

[grid@node1 ~]crs_stat -t -v

 

 

檢查數據庫狀態

[grid@node1 ~]$ srvctl status database -d 實例名

 

  

檢查ASM狀態

[grid@node1 ~]$srvctl status asm

 

故障恢復須要運行/bin/dd if=/var/tmp/.oracle/npohasd of=/dev/null bs=1024 count=1消除BUG

相關文章
相關標籤/搜索