RHEL6 Oracle11G RAC部署

Oracle11g RAC部署文档

一、RAC简介

RAC 是 Oracle 数据库的一个群集解决方案,是有着两个或者两个以上的数据库节点协调运作能力的。

 

Oracle Real Application Cluster :在服务器集群上运行,可调整集群中所有应用程序的工作量,同时还提供以下功能:

•  集成式集群件:其中包括用于进行集群连接、消息传送和锁定、集群控制与恢复的功能。在 Oracle Database 10g 或更高版本支持的所有平台上均可使用这些功能。

•  自动工作量管理:可以定义一些规则,以便在正常操作和对故障作出响应期间将处理资源自动分配给每个服务。用户可以动态地修改这些规则,以满足不断变化的业务需求。这种在数据库网格中动态分配资源的功能是 Oracle RAC 特有的功能。

•  向中间层自动发送事件通知:集群配置发生更改后,中间层可以立即适应实例故障转移或可用的新实例。这样,最终用户在发生实例故障转移时可继续工作,不存在通常由网络超时引起的延迟。有新实例可用时,中间层可以立即开始与该实例建立负载平衡连接。Oracle Database 10g 或更高版本中的 Java 数据库连接 (JDBC) 驱动程序拥有“快速连接故障转移”功能,该功能可以自动启用以处理以上事件。

RAC的特点

1、集群内多台服务器节点(m个)上存在多个实例(n个);

扫描二维码关注公众号,回复: 5933806 查看本文章

2、一个数据库(database)文件系统存储在共享存储设备上,比如NAS、SAN;

3、实例之间通过内联网络及集成式集群件互相通讯、交换数据。

4、每一个节点的实例都有自己的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 表决磁盘

 

二、环境说明

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网段

 

三、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.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.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

 

检验  在rac1、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

 

检验在rac1、rac2同时执行以下操作

$ssh rac1 date

$ssh rac1-priv date

$ssh rac2 date

$ssh rac2-priv date

 

六、创建共享磁盘

确保两台机器均是以下状态,打开虚拟机进行磁盘的格式化等操作

查看两个节点中服务器识别状态

[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/

 

七、介质上传

[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

 

 

八、安装数据库软件

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.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

 

十、日常管理

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;

 

 

十一、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

 

十二、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

 

猜你喜欢

转载自www.cnblogs.com/okchy/p/10728250.html