ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)

时间:2024-03-29 09:13:18

一、   安装前准备

1.     2台或多台linux服务器

2.     每台服务器一个公用ip一个私有ip

3.     公有ip:其他主机访问  2台主机最好同一ip段

4.     私有ip:2台或多台虚拟机互访  2台主机最好同一ip段

5.     注意:网卡名称相同。

6.     Oracle安装包,grid安装包,相关插件安装包(已准备)。

7.     2个虚拟机共享多块磁盘。

8.     本地环境ip: 192.168.2.159

9.      本地主机安装Xmanger 安装以后本地才会弹出远程安装oracle相关集群软件的界面

 

二、   以下配置以centos7+oracle11g+ vmware配置

a)     安装2个虚拟略:注意服务器硬盘最好高于40g,oracle安装好以后就会占用10个左右内存3g

b)     示例虚拟机1   主机名rac001    公有ip 192.168.2.187 私有ip  192.168.9.128

c)     示例虚拟机2   主机名rac002    公有ip 192.168.2.238 私有ip  192.168.9.129

1.    配置本地hosts文件(2台主机都要配置)

如下列1:ip  列2:别名 列3:主机名称(个人理解的,不同系统顺序可能不同)

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

#public ip 公有ip

192.168.2.187           rac001   rac001.svc.com

192.168.2.238           rac002   rac002.svc.com

#virtual ip

192.168.9.128           rac001-priv   rac001-priv.svc.com

192.168.9.129           rac002-priv   rac002-priv.svc.com

#private ip

192.168.2.230           rac001-vip   rac001-vip.svc.com

192.168.2.232           rac002-vip   rac002-vip.svc.com

#scan ip 

192.168.2.233           rac-scan   rac-scan.svc.com

192.168.2.234           rac-scan   rac-scan.svc.com

192.168.2.235           rac-scan   rac-scan.svc.com

 

2.    配置主机网络:(2台虚拟机都要配置)

vim  /etc/sysconfig/network-scripts/网卡对应的配置文件名

如下:我的虚拟机网卡名,公有ip网卡名 ens33 私有网卡名ens37

DEVICE= ens33

TYPE=Ethernet

UUID= 55e7e524-f748-48d1-a46c-051760f75aa7 //网卡的唯一标识

ONBOOT=yes

NM_CONTROLLED=yes

BOOTPROTO=none

IPADDR=192.168.2.187      //共有地址,即IP配置中的rac001

PREFIX=24

DEFROUTE=yes

IPV4_FAILURE_FATAL=yes

IPV6INIT=no

NAME="System eth0"

HWADDR=00:0C:29:7B:73:66  //mac地址

NETMASK=255.255.255.0    //子网掩码

GATEWAY=192.168.2.129  //本地主机ip

USERCTL=no

        完成后重启网络:# service network restart

    测试本地主机window ip与虚拟机能否ping通

    # ping 192.168.2.129

配置私有网卡(如没有则创建文件)

vim /etc/sysconfig/network-scripts/网卡对应的配置文件名

HWADDR=00:0c:29:85:ca:6b   //eth1网卡的mac地址

DEVICE=eth1

ONBOOT=yes

BOOTPROTO=static

IPADDR=192.168.10.1    //IP配置中的rac001-priv

NETMASK=255.255.255.0

重启网络

    #ifup eth1

    #service network restart

    此时配置的ip之间可以互相ping通,但是外网无法ping通,这时因为没有配置dns

配置dns

        查看本地主机window的dns服务器

    按window+r的 输入cmd

    命令行# ipconfig  –all

   查看DNS服务器地址

    虚拟机下添加查到的dns服务器地址

    # vim /etc/resolv.conf 添加dns

nameserver 10.16.10.6

nameserver 10.16.10.8

   或者使用公共的dns服务器

nameserver  114.114.114.114

nameserver  8.8.8.8

   测试ping外网

   #pingwww.baidu.com

   OK网络配置完成

    注意:有时候会遇到一个比较诡异的情况,配置的dns,在每次重启网卡的时候,都会消失,导致外网无法访问,解决方法:(我没遇到)

# chkconfig NetworkManager off

# chkconfig network on

#service NetworkManager stop

# service network start

# service network restart

 

3.    下载安装rac依赖包(2台虚拟机都要)

        

yum install -y expect* iscsi* binutils* compat-libstdc++* expat* elfutils-libelf* gcc* glibc* ksh* libgcc*

yum install -y pdksh* libgomp* compat-db* libXp* libaio* cpp* setarch* sysstat* libstdc++* make-3*

yum install -y unixODBC

yum install -y unixODBC-devel

yum install -y oracleasm*

rpm –ivh  /oracleasmlib-2.0.4-1.el4.x86_64 (百度下载,上传到服务器)

rpm -ivh --force --nodeps  /rac-pakge/*.rpm (百度下载,上传到服务器)

--force强制安装   --nodeps 跳过依赖

 

以下是所需软件包,已准备好

expat-1.95.7 (x86_64)   有

pdksh-5.2.14        缺(yum搜不到,手动安装)

sysstat-5.0.5    有

gcc-3.4.6        缺

libgcc-3.4.6 (x86_64)

libgcc-3.4.6 (i386) 缺(yum搜不到,手动安装)

libaio-0.3.105 (x86_64)

libaio-0.3.105 (i386) 缺(yum搜不到,手动安装)

libaio-devel-0.3.105 (x86_64) 缺

libaio-devel-0.3.105 (i386) 缺(yum搜不到,手动安装)

gcc-c++-3.4.6 缺

glibc-2.3.4-2.41 (x86_64)

glibc-2.3.4-2.41 (i686) 缺

glibc-headers-2.3.4

glibc-devel-2.3.4 (x86_64)

glibc-common-2.3.4

elfutils-libelf-devel-0.97 缺

elfutils-libelf-0.97 (x86_64) 

compat-libstdc++-33-3.2.3 (x86_64) 缺

compat-libstdc++-33-3.2.3 (i386)  缺(yum搜不到,手动安装)

compat-libcap1.x86_64  缺

binutils-2.15.92.0.2

libstdc++-devel-3.4.6 (x86_64)

libstdc++-3.4.6 (x86_64)

libstdc++-3.4.6 (i386) (yum搜不到,手动安装)

make-3.80

unixODBC-2.2.11 (x86_64)   缺(yum搜不到,手动安装)

unixODBC-devel-2.2.11 (x86_64)    缺(yum搜不到,手动安装)

unixODBC-libs-2.2.11-10.el5.i386  缺(yum搜不到,手动安装)

unixODBC-devel-2.2.11 (i386) 缺(yum搜不到,手动安装)

unixODBC-2.2.11 (i386) 缺(yum搜不到,手动安装)

oracleasmlib-2.0.4-1.el4.x86_64缺

kmod-oracleasm-2.0.8-6.el6_7.x86_64 (yum可安装)

oracleasm-support-2.1.8-1.el6.x86_64缺

4.    创建用户和组和安装目录(2台虚拟机都要配置)

# groupadd oinstall

# groupadd dba

# groupadd oper

# groupadd asmdba

# groupadd asmoper

# groupadd asmadmin

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

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

1.      设置用户密码(2台虚拟机都要配置)

#passwd oracle

#passwd grid

2.      创建安装目录

# mkdir /u01

# mkdir /u01/grid

# mkdir /u01/oracle

# mkdir /u01/gridbase

3.      修改文件归属(2台虚拟机都要配置)

# chown -R grid:oinstall /u01

# chown -R oracle:oinstall /u01/oracle

4.      授权(2台虚拟机都要配置)

# chmod -R g+w /u01

5.    配置环境变量(2台虚拟机都要配置)

两个节点都做,注意两节点的ORACLE_SID不能相同,前缀cludb相同,后面的数字依次排序。

切换到oracle用户:

# su  –  oracle

# vim  ~/.bash_profile

末尾增加:

ORACLE_BASE=/u01/oracle   安装后的oracle目录

ORACLE_HOME=/u01/oracle/db  安装后的oracle目录

ORACLE_SID=cludb1 

PATH=$ORACLE_HOME/bin:$PATH

LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH

DISPLAY=192.168.2.129:0.0

export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH LD_LIBRARY_PATH DISPLAY

切换grid用户:

# su  –  grid

# vim  ~/.bash_profile

末尾增加:

ORACLE_BASE=/u01/gridbase  安装后的grid目录

ORACLE_HOME=/u01/11.2.0/grid安装后的grid目录

PATH=$ORACLE_HOME/bin:$PATH

LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH

DISPLAY=192.168.2.129:0.0

export ORACLE_BASE ORACLE_HOME PATH LD_LIBRARY_PATH DISPLAY

注:DISPLAY 是本地主机的ip,本地安装Xmanager,rac安装界面将在本地显示

配置好了,执行命令source  ~/.bash_profile使其配置生效

 

6.    关闭不需要的服务(2台虚拟机都要配置)

Root用户:

 关闭SELINX

#vim /etc/selinux/config #编辑配置文件

#SELINUX=enforcing #注释掉

#SELINUXTYPE=targeted #注释掉

SELINUX=disabled #增加

 

关闭防火墙:注意不同系统的主机命令,不同(2台虚拟机都要配置)

注意:centos7关闭防火墙命令不一样,需要百度

#setup

根据图形化界面选择上下箭头选择【System Service】系统服务,找到iptables,ip6tables,sendmail,按空格键取消[]中的*号,按TAB键保存,并退出

 

7.    修改linux内核参数(以下是官方给出的最低配置2台主机都要配置)

Root用户:

#vim /etc/sysctl.conf

具体参数意义参考官方文档

fs.aio-max-nr = 1048576

fs.file-max = 6815744

kernel.shmall = 2097152

kernel.shmmax = 1073741824    这里修改要注意:kernel.shmallkernel.shmmni的积= kernel.shmmax

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128  centos7最后面参数无效

这里修改第一个参数和第4个参数的积=第二个参数

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

#vim /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

8.    设置节点时间同步(2台虚拟机都要配置)

Root用户:

        一般时间同步有linux的ntpd时间同步,还有就是oracle的时间同步,我们用 oracle 的时间同步,需要关闭ntpd服务

# /sbin/service  ntpd stop
# chkconfig ntpd off
# mv /etc/ntp.conf /etc/ntp.conf.original

还要删除以下文件(如果有的话):
# rm /var/run/ntpd.pid

 

 

9.    创建共享磁盘(多块!我创建的3块,虚拟机配置,不是虚拟机配置不一样)

创建磁盘:

在虚拟机rac001节点右击--【设置】---【添加】---【硬盘】

ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)

稍等片刻,一块磁盘创建完毕,重复上述动作两次,创建3块磁盘。

 

将创建的磁盘剪切至一个公共目录:

ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)

移除rac001节点中的上述创建的磁盘(因为已经剪切走了)

然后再重复上述创建磁盘的动作,在7步骤的时候不再选择【创建虚拟磁盘】,而是选择【使用现有虚拟磁盘】,然后选择移至公共目录下的磁盘文件sharedisk-1.vmdk,sharedisk-2.vmdk,sharedisk-3.vmdk,创建三块磁盘,保存后,更新三块磁盘的高级属性,分别选择scsi1:1,scsi1:2,scsi1:3.

ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)

节点rac002同样如此。

 

 

磁盘创建好了以后修改各虚拟机的配置文件

    rac001.vmx,rac002.vmx(关闭虚拟机后才能修改 )

disk.locking = "FALSE"

diskLib.dataCacheMaxSize = "0"

diskLib.dataCacheMaxReadAheadSize = "0"

diskLib.dataCacheMinReadAheadSize = "0"

diskLib.dataCachePageSize = "4096"

diskLib.maxUnsyncedWrites = "0"

scsi1:1.deviceType="disk"

scsi1:2.deviceType="disk"

scsi1:3.deviceType="disk"

 

1.     分区(虚拟机1操作)

 

Root用户:

# cd /dev/

# ls -l sd*

将看到sdb,sdc,sdd,这三块就是添加的磁盘

对硬盘进行分区

# fdisk sdb

按m键,此时有多个选项供选择

ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)

按n键(创建新分区)

按p键(创建主分区,另有e键是扩展分区)

按1键(分区数字从1开始,即sdb1,sdc1等)

按1键(分区从第一个柱面开始)

回车 (结束柱面选择 默认,即全部柱面只分在一个区)

按w键(将操作写入分区表)

依次对sdb sdc sdd

2.     创建磁盘

(虚拟机1操作)

Root用户:

#oracleasm configure  -i

然后输入用户grid

输入组dba

输入y

输入y

# oracleasm init

创建磁盘DISK01,DISK02,DISK03

oracleasm createdisk DISK001 sdb1

oracleasm createdisk DISK002 sdc1

oracleasm createdisk DISK003 sdd1

查看磁盘:

# oracleasm listdisks

DISK01

DISK02

DISK03

虚拟机2

注:如果已开启则重启

Root用户:

# oracleasm  configure  -i

输入grid

输入dba

输入y

输入y

#oracleasm init

 

重启

#reboot

#oracleasm listdisks

节点2也能看到DISK01,DISK02,DISK03了

 

10.2台或多台主机之间的互信(分别用grid和oracle用户)(2台主机都要执行)

 

注:grid,Oracle用户都需要添加相互信息,下面以grid为例

Grid用户:

在节点rac001和rac002节点分别执行

#ssh-****** -t rsa

然后一路回车

#cat  ~/.ssh/id_rsa.pub  >> ~/.ssh/authorized_keys

在节点rac001 上执行

# ssh rac002 cat ~/.ssh/id_rsa.pub  >> ~/.ssh/authorized_keys

在节点rac002上执行

# ssh rac001 cat ~/.ssh/id_rsa.pub  >> ~/.ssh/authorized_keys

 

如果秘钥的生成路径是按照上面一路默认的话,可以执行命令(rac002节点:ssh-copy-id  grid@rac001;rac001节点:ssh-copy-id grid@rac002)将本地公钥追加到authorized_keys上

测试:

在rac002,rac001上分别执行

#ssh rac001 date

#ssh rac002 date

只要不再提示输入密码就成功了

 

 

三、   安装Grid

1.     安装grid前检测

 

Grid用户:

将集群软件linux.x64_11gR2_grid.zip上传至/u01目录,并解压

将解压至grid目录,更改解压后文件属主

# chown –R grid:oinstall grid

进入加压后的目录

#cd /u01/grid

执行安装前检查操作

# ./runcluvfy.sh stage -pre crsinst -n rac001,rac002 -fixup -verbose

 

下面是检查过程

如果上面的依赖包全部正确安装的话,检查应该不会有问题

执行 集群服务设置 的预检查

 

正在检查节点的可访问性...

 

检查: 节点 "rac001" 的节点可访问性

  目标节点                                  是否可访问?                 

  ------------------------------------  ------------------------

  rac001                                是                      

  rac002                                是                      

结果:节点 "rac001" 的节点可访问性检查已通过

 

 

正在检查等同用户...

 

检查: 用户 "grid" 的等同用户

  节点名                                   注释                     

  ------------------------------------  ------------------------

  rac002                                通过                     

  rac001                                通过                     

结果:用户 "grid" 的等同用户检查已通过

 

正在检查节点的连接性..

………………….

可能会出现的问题:

1),用户 "grid" 的等同用户检查失败解决方法:

在失败的节点执行#ssh rac001/rac002 date

2) 交换空间内存不够

   #dd if=/dev/zero of=swapfile bs=1024 count=1500000

1024单位byte,增加1.5G内存大小

   # mkswap swapfile  

   # swapon swapfile

交换内存开机自动挂载

  # vim /etc/fstab

 加入

 /home/swapfile  swap  swap  defaults  0 0

 

如果检查成功则开始安装操作

失败则执行相应的检测生成的修复文件(失败提示上有)

 

2.     开始安装(虚拟机1安装)

 

Grid用户:

只在第一个节点执行安装命令

export DISPLAY=192.168.2.159:0.0

export LANG=en_US.UTF-8

# ./runInstaller

 

等待一会将会在本地主机出现安装界面

ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)

我们这里选择高级安装,点击“next”

ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)

选择“English”,点击“Next”

ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)

这里要填写scan name,对应我们的/etc/hosts里写的名字,不选择GNS,点击“next”

ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)

点击Add将其他节点加进来,点击SSH Connectivity 输入grid用户密码 点击Test测试,成功后点击next

ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)

ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)

ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)

 

ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)

ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)

ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)

ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)

ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)

 ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)

ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)

ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)

执行脚本

1)所有节点均需执行

2)以下错误均是安装时候出过 的错误,执行脚本前请先查看以下信息,以防再次犯错

 

所有节点上执行

# /u01/oraInventory/oraInstRoot.sh

# /u01/grid/root.sh

【错误信息1】

在执行root.sh脚本时候,出现错误:

/u01/grid/bin/clscfg.bin: error while loading shared libraries: libcap.so.1: cannot open shared object file: No such file or directory

Failed to create keys in the OLR, rc = 127, 32512

OLR configuration failed

共享库libcap.so.1 找不到,因为缺少包compat-libcap1.x86_64.rpm(前文依赖包中有此包,若已安装,则不会出现此错误),yum安装:

# yum install -y compat-libcap1.x86_64

安装完毕后,需要将之前失败的配置删除再重新执行脚本:

# /u01/grid/crs/install/rootcrs.pl -delete -force -verbose

【错误信息2】

再次执行root.sh脚本,有遇到错误:

CRS-4124: Oracle High Availability Services startup failed.

CRS-4000: Command Start failed, or completed with errors.

ohasd failed to start: 对设备不适当的 ioctl 操作

ohasd failed to start at /u01/grid/crs/install/rootcrs.pl line 443.

经过查找得知这是11.2.0.1版本一个经典的BUG,据说这个错误只在linux 6.1下,且Oracle 版本为11.2.0.1的时候出现,11.2.0.3就不再有这个bug了。

解决方法(注意:一定要2个节点分开执行,不能同时执行)

在执行root.sh脚本时候,当出现Adding daemon to inittab的时候,在另一个窗口执行下面命令:

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

如果出现

/bin/dd: opening`/var/tmp/.oracle/npohasd': No such file or directory

的时候该文件还没生成就继续执行,直到能执行为止。

 

脚本执行完毕后,点击安装界面的OK,继续下一步,如果出现下面的错误,可以忽略,问题是由于scan-cluster使用/etc/hosts文件来解析造成的,直接跳过,不影响。如果是用dns来解析的话应该不会报此错误

ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)

点击OK--next

ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)

安装完成 点击Close关闭即可。

 

执行过程如果root.sh脚本执行失败,重新执行如下:

如果节点一成功,节点二失败

节点二执行

# /u01/grid/crs/install/rootcrs.pl -verbose -deconfig -force

# /u01/grid/root.sh

 

3.     安装成功返回信息(节点2可能不一样)

Configure Oracle Grid Infrastructure for a Cluster ... succeeded

Updating inventory properties for clusterware

Starting Oracle Universal Installer...

 

Checking swap space: must be greater than 500 MB.   Actual 7423 MB    Passed

The inventory pointer is located at /etc/oraInst.loc

The inventory is located at /u01/oraInventory

'UpdateNodeList' was successful

节点2成功可能返回

Preparing packages for installation...

cvuqdisk-1.0.7-1

Configure Oracle Grid Infrastructure for a Cluster ... succeeded

Updating inventory properties for clusterware

Starting Oracle Universal Installer...

 

Checking swap space: must be greater than 500 MB.   Actual 7423 MB    Passed

The inventory pointer is located at /etc/oraInst.loc

The inventory is located at /u01/oraInventory

 

 

4.     完成后检查

执行:# crs_stat –t –v

报错:CRS-0184: Cannot communicate with the CRS daemon

       然后 用grid启动命令# crsctl start crs 报

CRS-4563: Insufficient user privileges.

CRS-4000: Command Start failed, or completed with errors.

那就换root启动,结果报

CRS-4640: Oracle High Availability Services is already active

CRS-4000: Command Start failed, or completed with errors.

 

解决方法:所有节点执行# dd if=/var/tmp/.oracle/npohasd of=/dev/null bs=1024 count=1

          然后执行# crs_start –all

         #crsctl check crs     //检查crs 发现已经online了

CRS-4638: Oracle High Availability Services is online

CRS-4537: Cluster Ready Services is online

CRS-4529: Cluster Synchronization Services is online

CRS-4533: Event Manager is online

    再次执行#crs_stat –t –v
     ora.DATA.dg    ora....up.type ONLINE    ONLINE    rac001      

ora....ER.lsnr ora....er.type ONLINE    ONLINE    rac001      

ora....N1.lsnr ora....er.type ONLINE    ONLINE    rac001      

ora.asm        ora.asm.type   ONLINE    ONLINE    rac001      

ora.eons       ora.eons.type  ONLINE    ONLINE    rac001      

ora.gsd        ora.gsd.type   OFFLINE   OFFLINE              

ora....network ora....rk.type ONLINE    ONLINE    rac001      

ora.oc4j       ora.oc4j.type  OFFLINE   OFFLINE              

ora.ons        ora.ons.type   ONLINE    ONLINE    rac001      

ora....SM1.asm application    ONLINE    ONLINE    rac001      

ora....01.lsnr application    ONLINE    ONLINE    rac001      

ora.rac001.gsd  application    OFFLINE   OFFLINE              

ora.rac001.ons  application    ONLINE    ONLINE    rac001      

ora.rac001.vip  ora....t1.type ONLINE    ONLINE    rac001      

ora....SM2.asm application    ONLINE    ONLINE    rac002      

ora....02.lsnr application    ONLINE    ONLINE    rac002      

ora.rac002.gsd  application    OFFLINE   OFFLINE              

ora.rac002.ons  application    ONLINE    ONLINE    rac002      

ora.rac002.vip  ora....t1.type ONLINE    ONLINE    rac002      

ora.scan1.vip  ora....ip.type ONLINE    ONLINE    rac001  

 

四、   安装数据库

1.     安装数据库软件(随便某一虚拟机安装)

 

任一节点安装:

# cd  /u01

将linux.x64_11gR2_database.zip上传至/u01,解压,将解压后的目录并改归属

#chown –R oracle:oinstall linux.x64_11gR2_database

#chmod 777 /u01/oraclePage/database/runInstaller

#chmod 777 /u01/oraclePage/database/install/unzip

# chmod 777 /u01//database/install/.oui

开始安装

# su – oracle

export DISPLAY=192.168.2.159:0.0

export LANG=en_US.UTF-8

# cd /u01/oraclePage/database/

# ./runInstaller -ignoreInternalDriverError

参数-ignoreInternalDriverError的作用是忽略内部驱动导致cluster认证失败,下文有错误信息

ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)

上图Next的时候,可能出现错误(在添加信任时如果oracle用户已添加则不会报此错)

[INS-06006] Passwordless SSH connectivity not set up between the following node(rac001,rac002).

解决方法:在rac001rac002节点上用oracle用户添加互相信任,并执行ssh rac001 datessh rac002 date

ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)

点击Next

ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)

报错[INS-20702],内部驱动错误导致cluster工具验证失败,取消重新安装添加-ignoreInternalDriverError参数

ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)

以上是检测,只有grid安装好了就不用管,选择Ignore All

 

等待安装完成,将生成的root.sh脚本在每一个节点上用root用户执行,执行完毕后点击OK,安装完成,并close关闭安装页签

 

2.     创建数据库(顺便某一虚拟机执行都行)

 

# dbca

ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)

弹出如下界面后,我们选择第一项集群模式Oralce Real Applicatoin…,然后next

ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)

默认Create a Database,然后Next

ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)

选择默认General Purpose… 然后next

 

 ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)

这里Global Database Name和SID prefix为cludb,在前文节点环境变量中配置的cludb1,cludb2前缀cludb,然后选择所有节点(图片仅是参考),然后Next

 ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)

默认即可,然后Next

 ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)

设置密码,所有用户均设置一致的密码,防止记混,也可以设置不同密码。然后Next

ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)

默认选择ASM存储类型 然后Next,然后会弹出窗口指定ASM密码,填写密码,然后继续

ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)

闪回区配置默认,也可以不选择,以后修改spfile文件,然后Next

ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)

样例schemal可装可不装,然后Next

ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)

字符可以选择ZHS16GBK-GBK-bit Simplified Chinese,其他默认即可,然后Next

ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)

配置页面如下,然后Next

ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)

开始创建数据库 然后Finish,等待安装完成…

ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)

安装挺慢的,等待ing…可能会等很久,与系统与配置与网速都有关系

ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)

创建完成,Password Managerment可以解锁oracle默认账户,解锁scott(可略) 点击Exit

数据库创建完成.

五、   相关检测

1.     检测集群状态(grid用户)

 

# su - grid

# crs_stat –t

ORACLE集群配置(注:根据网上资料自行搭建成功步奏总结)

此图为后来再次搭建时所补,只为了看到不同节点ONLINE状态(所以主机名不是rac1,rac2)

 

2.     检测集群数据库(Oracle用户,各个虚拟机分别执行)

 

$  srvctl config database -d cludb

Database unique name: cludb

Database name: cludb

Oracle home: /u01/oracle/db

Oracle user: oracle

Spfile: +DATA/cludb/spfilecludb.ora

Domain:

Start options: open

Stop options: immediate

Database role: PRIMARY

Management policy: AUTOMATIC

Server pools: cludb

Database instances: cludb1,cludb2,cludb3

Disk Groups: DATA

Services:

Database is administrator managed

 

 

3.     检测数据库示例状态

$ srvctl status database -d cludb

Instance cludb1 is running on node centos6srv01

Instance cludb2 is running on node centos6srv02

Instance cludb3 is running on node centos6srv03

检查本地配置的环境变量,以防sid不匹配

$ env |grep ORACLE

//注意与上面的Instance相同,笔者笔误配置不同导致连上数据库后查询就报ora-01034

ORACLE_SID=cludb1    注意这里与之前oracle环境变量配置有关,配置的什么就是什么。每台主机的序号都不相同

ORACLE_BASE=/u01/oracle

ORACLE_HOME=/u01/oracle/db

 

六、   安装后的数据库操作配置

1.     登陆数据库 oracle用户执行

系统用户  sqlplus / as sysdba

普通用户sqlplus  然后根据提示输入用户名和密码

2.     创建表空间与单例oracle不一样,如下

create tablespace OA datafile '+DATA/OA.dbf' size 800m autoextend on;

 

3.     JDBC连接字符串:(示例)

Connection conn = DriverManager.getConnection(

    "jdbc:oracle:thin:@(DESCRIPTION ="

    + "(ADDRESS = (PROTOCOL = TCP)(HOST = 10.16.122.210)(PORT = 1521)) "

    + "(ADDRESS = (PROTOCOL = TCP)(HOST = 10.16.122.212)(PORT = 1521))"

    + "(ADDRESS = (PROTOCOL = TCP)(HOST = 10.16.122.213)(PORT = 1521)) "

    + "(ADDRESS = (PROTOCOL = TCP)(HOST = 10.16.122.211)(PORT = 1521)) "

    + "(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = cludb))) ", "system", "123456");

 

 

 

七、   集群维护

 

实例管理

$ srvctl status instance    -d cludb -i cludb1

$ srvctl stop   instance    -d cludb -i cludb1

$ srvctl start  instance    -d cludb -i cludb1

监听管理

$ srvctl status listener    -n rac001

$ srvctl stop   listener    -n rac001

$ srvctl start  listener    -n rac001

 

集群管理命令crsctl

停止集群:

$ su - grid

$ srvctl stop database -d cludb

$ su - root

# /u01/grid/bin/crsctl stop crs  //停止crs 同时停止asm磁盘组 root用户

启动集群

$ /u01/grid/bin/crsctl start crs

$ /u01/grid/bin/srvctl start database -d cludb

注意:在启动crs时候,若报

CRS-4124: Oracle HighAvailability Services startup failed.

CRS-4000: Command Startfailed, or completed with errors.

可在每个节点执行命令:

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

(11.2.0.1才会有这个bug)

 

八、   虚拟机共享磁盘不足(注意,不是用的虚拟机,方式不一样)

由于测试过程中发现共享硬盘不够用,需要增加共享硬盘,创建共享硬盘过程略(前文已有),

然后登陆(grid)

SQL> sqlplus / as sysasm

报:

SQL*Plus: Release 11.2.0.1.0 Production on Sun Jun 12 13:08:07 2016

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

ERROR:

ORA-01031: insufficient privileges

此时需要导入环境变量(grid用户)

$ export ORACLE_SID=+ASM1

$ export ORACLE_HOME=/u01/grid

$ export PATH=$ORACLE_HOME/bin:$PATH

再次登陆即可

SQL> sqlplus / as sysasm

Connected. 

 

查看用户

SQL>  select * from v$pwfile_users;

 

USERNAME              SYSDB SYSOP SYSAS

------------------------------ ----- ----- -----

SYS                    TRUE  TRUE  TRUE

ASMSNMP               TRUE  FALSE FALSE

查看磁盘组

SQL> select  STATE,REDUNDANCY,TOTAL_MB,FREE_MB,NAME,FAILGROUP from v$asm_disk;

 

STATE    REDUNDA   TOTAL_MB    FREE_MB NAME

-------- ------- ---------- ---------- ------------------------------

FAILGROUP

------------------------------

NORMAL   UNKNOWN       5114      101 DISK1

DISK1

NORMAL   UNKNOWN       5114      135 DISK2

DISK2

NORMAL   UNKNOWN       5114      129 DISK3

DISK3

STATE    REDUNDA   TOTAL_MB    FREE_MB NAME

-------- ------- ---------- ---------- ------------------------------

FAILGROUP

------------------------------

NORMAL   UNKNOWN       5114      132 DISK4

DISK4

增加磁盘

SQL> alter diskgroup DATA add disk 'ORCL:DISK5' name DISK5;

Diskgroup altered. //添加成功

 

注:DATA为安装asm集群时候的磁盘组的名字,如果没有更改则默认是DATA

   DISK5为新建的共享磁盘