数据库:
P10404530_112030_linux-x86-64_1of7.zip
P10404530_112030_linux-x86-64_2of7.zip
集群件(11G中的GRID):
P10404530_112030_linux-x86-64_3of7.zip
这三个包
操作系统:
Redhat6.3
1 安装准备
1.1 安装操作系统PATCHES
1.1.2 安装PATCHES
yum install -y inutils compat* glibc ksh-*libaio* libgcc libstdc++ make gcc* glibc-devel libaio-devel libstdc++ sysstatglibc* libstdc++ elfutils-libelf-devel rpm -ivh --nodeps --forcebinutils-2.20.51.0.2-5.34.el6.x86_64.rpm
rpm -ivh --nodeps --forcecompat-libstdc++-33-3.2.3-69.el6.x86_64.rpm
rpm -ivh --nodeps --forceglibc-2.12-1.80.el6.x86_64.rpm
rpm -ivh --nodeps --force ksh-*.rpm
rpm -ivh --nodeps --forcelibaio-0.3.107-10.el6.x86_64.rpm
rpm -ivh --nodeps --forcelibgcc-4.4.6-4.el6.x86_64.rpm
rpm -ivh --nodeps --forcelibstdc++-4.4.6-4.el6.x86_64.rpm
rpm -ivh --nodeps --forcemake-3.81-20.el6.x86_64.rpm
rpm -ivh --nodeps --forcecompat-libcap1-1.10-1.x86_64.rpm
rpm -ivh --nodeps --forcegcc-4.4.6-4.el6.x86_64.rpm
rpm -ivh --nodeps --forcegcc-c++-4.4.6-4.el6.x86_64.rpm
rpm -ivh --nodeps --forceglibc-devel-2.12-1.80.el6.x86_64.rpm
rpm -ivh --nodeps --forcelibaio-devel-0.3.107-10.el6.x86_64.rpm
rpm -ivh --nodeps --forcelibstdc++-devel-4.4.6-4.el6.x86_64.rpm
rpm -ivh --nodeps --forcesysstat-9.0.4-20.el6.x86_64.rpm
rpm -ivh --nodeps --forcecompat-libstdc++-33-3.2.3-69.el6.x86_64.rpm
rpm -ivh --nodeps --forceglibc-2.12-1.80.el6.x86_64.rpm
rpm -ivh --nodeps --forceglibc-devel-2.12-1.80.el6.x86_64.rpm
rpm -ivh --nodeps --forcelibaio-0.3.107-10.el6.x86_64.rpm
rpm -ivh --nodeps --forcelibaio-devel-0.3.107-10.el6.x86_64.rpm
rpm -ivh --nodeps --forcelibgcc-4.4.6-4.el6.x86_64.rpm
rpm -ivh --nodeps --forcelibstdc++-4.4.6-4.el6.x86_64.rpm
rpm -ivh --nodeps --forcelibstdc++-devel-4.4.6-4.el6.x86_64.rpm
rpm -ivh --nodeps --forceelfutils-libelf-devel-0.152-1.el6.x86_64.rpm
1.2 主机网络配置
主机网络设置检查:hosts文件系修改、网卡IP配置。
1. 编辑hosts文件,将如下内容添加到hosts文件中,指定Public IP、VIP、Private IP。
2. Vi /etc/hosts
172.16.64.129 rac1
172.16.64.130 rac2
10.10.10.10 racpriv1
10.10.10.11 racpriv2
172.16.64.131 racvip1
172.16.64.132 racvip2
172.16.64.133 scanip
192.168.8.181 rac1
192.168.8.182 rac2
192.168.1.10 racpriv1
192.168.1.20 racpriv2
192.168.8.184 racvip1
192.168.8.185 racvip2
192.168.8.190 scanip
3. 网卡的IP地址已经在系统安装过程中配置完成,可以使用如下命令检查IP配置情况:#ifconfig
1.3 安装任务
1.3.1 创建操作系统组和用户
在两个节点创建相应的操作系统组和用户,先创建组,然后创建用户:
以root用户使用如下命
groupadd -g 1301 asmadmin
groupadd -g 1302 asmdba
groupadd -g 1303 asmoper
groupadd -g 1304 oinstall
groupadd -g 1305 dba
useradd -u 1300 -g oinstall -G asmadmin,asmdba,asmoper grid
useradd -u 1310 -g oinstall -G dba,asmdba oracle
使用passwd命令为grid(密码:grid)和oracle(密码:oracle)账户设置密码。
#passwd jsepc01!
#passwd jsepc01!
1.3.2 创建软件安装目录结构并更改权限
在两个节点创建相应的目录改变属主并改变权限
以root用户使用如下命
mkdir /grid
mkdir -p/u01/app/oracle/product/11.2.0/dbhome_1
mkdir -p /u01/app/grid/11.2.0
chown -R grid:oinstall /u01
chown -R grid:oinstall /grid
chown -R oracle:oinstall /u01/app/oracle
chmod -R 775 /u01
1.3.3 修改用户概要文件
在两个节点上分别修改
grid用户.bash_profile
添加如下内容:
exportORACLE_BASE=/u01/app/grid
exportORACLE_HOME=/u01/app/11.2.0/grid
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
oracle用户.bash_profile
添加如下内容:
exportORACLE_BASE=/u01/app/oracle
exportORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
exportPATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
1.3.4 修改限制条件
在两个节点上分别执行,以root用户进行编辑
vim /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
1.3.5 修改内核参数关闭所有节点防火墙
用root用户在两个节点分别编辑
vim /etc/sysctl.conf
添加内容:
kenel.shmmni = 4096
kenel.sem = 25032000100128
fs.aio-max-nr = 1048576
fs.file-max = 6815744
net.ipv4.ip_local_port_range = 900065500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
vm.hugetlb_shm_group = 501
用root用户关闭两个节点防火墙:
#Service iptables status
#Service iptables stop
1.3.6 配置互信
[[email protected] ~]# rm -rf $HOME/.ssh 两个节点都要执行
rm -rf /root/.ssh
集群软件解压之后
cd/grid/grid/sshsetup
[[email protected] sshsetup]$ pwd
/u01/grid/grid/sshsetup
此步骤只要在一个节点上执行
[[email protected]]$ ./sshUserSetup.sh -user grid-hosts "rac1 rac2" -advanced -noPromptPassphrase
此步骤只要在一个节点上执行
[[email protected] sshsetup]$ ./sshUserSetup.sh -user oracle-hosts "rac1 rac2" -advanced –noPromptPassphrase
两个用户(Grid和Oracle)都要验证互信
ssh rac1 date
ssh racpriv1 date
ssh rac2 date
ssh racpriv2 date
没有提示输入密码则成功
1.3.7 存储分区(在一个节点上执行)
所有规划的设备进行分区,例如在节点1上对sdc盘进行划盘:
[[email protected]~]# fdisk /dev/sdc
WARNING: DOS-compatible mode is deprecated.It‘s strongly recommended to
switch off the mode (command ‘c‘) and change display units to
sectors (command ‘u‘).
Command (m for help): p
Disk /dev/sde: 536.9 GB, 536870912000 bytes
255 heads, 63 sectors/track, 65270cylinders
Units = cylinders of 16065 * 512 = 8225280bytes
Sector size (logical/physical): 512 bytes /512 bytes
I/O size (minimum/optimal): 512 bytes / 512bytes
Disk identifier: 0x000d60dc
Device Boot Start End Blocks Id System
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-65270, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G}(1-65270, default 65270):
Using default value 65270
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
所有节点同步分区
Partprobe
注意:本例的存储是按照一般情况来配置的,实际划分请根据情况而定。
1.3.8 绑定裸设备
用root用户两个节点都需执行:
vim /etc/udev/rules.d/60-raw.rules
# Enter raw device bindings here.
#
# An example would be:
# ACTION=="add", KERNEL=="sda", RUN+="/bin/raw/dev/raw/raw1 %N"
# to bind /dev/raw/raw1 to /dev/sda, or
# ACTION=="add", ENV{MAJOR}=="8",ENV{MINOR}=="1",
RUN+="/bin/raw /dev/raw/raw2 %M%m"
# to bind /dev/raw/raw2 to the device withmajor 8, minor 1.
#for ocr_voting
ACTION=="add",KERNEL=="sdc1",RUN+="/bin/raw/dev/raw/raw1 %N"
ACTION=="add",KERNEL=="sdc2",RUN+="/bin/raw/dev/raw/raw2 %N"
ACTION=="add",KERNEL=="sdd1",RUN+="/bin/raw/dev/raw/raw3 %N"
ACTION=="add",KERNEL=="sdd2",RUN+="/bin/raw/dev/raw/raw4 %N"
ACTION=="add",KERNEL=="sde1",RUN+="/bin/raw/dev/raw/raw5 %N"
ACTION=="add",KERNEL=="sde2",RUN+="/bin/raw/dev/raw/raw6 %N"
ACTION=="add",KERNEL=="sdf1",RUN+="/bin/raw/dev/raw/raw7 %N"
ACTION=="add",KERNEL=="sdf2",RUN+="/bin/raw/dev/raw/raw8 %N"
KERNEL=="raw[1-8]", OWNER="grid",GROUP="asmadmin", MODE="0660"
重启 UDEV:
# /sbin/start_udev
验证:
[[email protected] rules.d]# ll /dev/raw
total 0
crw-rw---- 1 grid asmadmin 162, 1 Jul 28 15:19 raw1
crw-rw---- 1 grid asmadmin 162, 2 Jul 28 15:19 raw2
crw-rw---- 1 grid asmadmin 162, 3 Jul 28 15:19 raw3
crw-rw---- 1 grid asmadmin 162, 4 Jul 28 15:19 raw4
crw-rw---- 1 grid asmadmin 162, 5 Jul 28 15:19 raw5
crw-rw---- 1 grid asmadmin 162, 6 Jul 28 15:19 raw6
crw-rw---- 1 grid asmadmin 162, 7 Jul 28 15:19 raw7
crw-rw---- 1 grid asmadmin 162, 8 Jul 28 15:19 raw8
crw-rw---- 1 root disk 162, 0 Jul 28 15:19 rawctl
2 安装Grid
节点1用GRID用执行:
[[email protected]]$ ./runI*
注:在上图的SCAN name中,填写在/etc/hosts中定义的scan名字在配置网络增强界面时,规划好的集群名、SCAN名,SCAN端口,不勾选ConfigureGNS(GNS需要DHCP服务器配合,本次部署无DHCP服务器):
本例中我们使用的是/etc/hosts解析,所以直接填写scanip,即可。
Next:
注:执行上述脚本千万要注意顺序
先在节点1和节点2执行:
/u01/app/oraInventory/orainstRoot.sh
其次在节点1和节点2执行:
/u01/app/11.2.0/grid/root.sh
如下图:
执行成功后点继续:
如有上述两个错误可以忽略。
点击Close安装完成。
3 安装数据库软件
这里只安装数据库软件,之后再用dbca命令建立集群实例。安装完database软件后,需要建立ASM磁盘组。
使用oracle用户登录进行安装。
选择不接收更新,Next:
选择只安装数据库软件,Next:
选择real application cluster database installlation,然后选中所有的节点,Next:
选择数据库版本:Enterprise Edition,Next:
选择安装目录,Next:
Next:
开始执行安装前检查
点击Ignore all继续安装。
点击Install进行安装:
安装进度大概至94%时,提示需要运行相关脚本,按要求顺序执行,正确执行完毕后点击:OK
关闭窗口,完成database的安装。
4 创建ASM磁盘组
在建库前需要先创建存储数据文件的ASM磁盘组。以grid用户登录,执行asmca命令:
弹出如下对话框:、
切换到Disk Group界面,点击Create:
这里我们只选择raw5作为数据文件存放位置,各现场根据自身情况选择。
完成后如上图:
继续选择create创建闪回恢复区存放位置,如下图:
这里选择raw3
创建完成后如下图:
5 DBCA创建数据库
使用oracle用户,运行dbca来建立RAC集群实例。
$dbca
选择建立RAC数据库,Next:
Next:
Next:
这里没选择闪回。
这里各地请按照自己实际物理内存来配置,选择自动内存管理
进程数调整至500
待完成后点击EXIT退出即可。
6 验证服务
6.1 客户端连接RAC
现在可以用SQL*PLUS连接到RAC,这时用户的连接可能被定向到任何一个节点,可以通过视图查看当前的连接实例。
通过SQL*PLUS连接RAC。
[[email protected]]$sqlplus sys/[email protected]
查看当前连接的实例。
SQL>select instance_name fromv$instance;
SGTMS1
6.2 验证Failover(故障转移)
(1)连接到RAC。
[[email protected]]#sqlplus sys/[email protected]
(2)确认用户当前连接的实例。
SQL>select instance_name fromv$instance;
SGTMS1
用户当前连接到SGTMS1这个实例,不要退出这个回话,第4步还是在这个回话中执行。
(3)关闭SGTMS1这个实例,或者把SGTMS1所在的这台主机关机。
SQL>shutdown abort;
(4)等待几秒钟,再次执行这个语句,还是在会话1中执行。
SQL>select instance_name fromv$instance;
SGTMS2
这时因为SGTMS1实例被关闭,用户连接自动被转移到SGTMS2这个实例上了。
6.3 验证LoadBalance(负载均衡)
这个验证需要两个脚本,一个是SHELL脚本test.sh,另一个是SQl脚本test.sql。
(1)SHELL脚本test.sh内容如下。
#!/bin/sh
#Usage: test SGTMS 4000
count=0
while [$count -lt $2] # Set up a loopcontrol
do
count=‘expr $count+1‘ #Increment the counter
sqlplus -s username/[email protected]$1 @test.sql
sleep 1
done
(2)SQL脚本test.sql内容如下。
col Instance_name for a20
select instance_name from v$instance
/
(3)准备好脚本后,就可以进行这个测试了。
./test.sh SGTMS 1000
(4)准备执行完后,查看每个实例建立的连接数量。
SQL> select inst_id,count(*) from gv$session group by inst_id;
SGTMS1 496
SGTMS2 504