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

2023-05-16

一、   安装前准备

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节点右击--【设置】---【添加】---【硬盘】

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

 

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

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

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

节点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键,此时有多个选项供选择

按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-keygen -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

 

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

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

选择“English”,点击“Next”

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

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

 

 

执行脚本

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来解析的话应该不会报此错误

点击OK--next

安装完成 点击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认证失败,下文有错误信息

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

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

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


点击Next


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


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

 

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

 

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

 

# dbca


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

默认Create a Database,然后Next

选择默认General Purpose… 然后next

 

 

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

 

默认即可,然后Next

 

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

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

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

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

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

配置页面如下,然后Next

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

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

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

数据库创建完成.

五、   相关检测

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

 

# su - grid

# crs_stat –t

此图为后来再次搭建时所补,只为了看到不同节点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为新建的共享磁盘

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 是否可以从子查询中获取多个值?

    有没有办法让子查询在oracle db中返回多列 我知道这个特定的sql会导致错误 但它很好地总结了我想要的 select a x select b y b z from b where b v a v from a 我想要这样的结果 a
  • SKIP加锁和nowait的区别

    pl sql 中 SKIP 锁定游标和 nowait 游标之间的区别 我认为我找到的这张图片是描述差异的最佳例子 详细说明 http viralpatel net blogs oracle skip locked
  • 使用 Oracle Sql Developer 生成 DDL 以包含外键

    我尝试了一些使用 SQL Developer 从 Oracle 数据库生成 DDL 的选项 但没有一个符合目的 快速 DDL 选项会产生没有外键约束的 DDL 我很喜欢这种格式 表上的编辑导致 DDL 包括我无法摆脱的存储和日志记录 只是想
  • 我应该使用 JDBC getNString() 而不是 getString() 吗?

    我们正在构建一个由 Oracle 数据库支持的 Java 应用程序 我们使用 JDBC 驱动程序 访问该数据库ojdbc6 jar and orai18n jar 数据库模式主要使用以下方式存储文本列NVARCHAR2数据类型 The JD
  • 如何在 Oracle 中按组填充缺失日期并更改计数值

    这是对我之前发布的问题的轻微修改 如何在 Oracle 中按组填写缺失的日期 https stackoverflow com questions 63002363 how do i fill in missing dates by grou
  • 如何为“%abc%”搜索创建文本索引?

    我想对查询进行索引x like abc 如果我有一个如下表 create table t data varchar 100 我想创建一个索引以便能够有效地执行以下操作 select from t where contains abc 和这个
  • 如何在oracle中预测和转义单引号'

    假设我有一个列值aaa gh它会在 oracle 中抛出错误 提示 sql 命令未正确结束 我的问题是如果我不知道有多少 在我的价值范围内 我如何才能安全地逃脱它们 最好的方法是使用引用字符串文字技术 http lalitkumarb wo
  • 匹配可能存在或可能不存在的组

    我的正则表达式需要解析一个如下所示的地址 BLOOKKOKATU 20 A 773 00810 HELSINKI SUOMI 1 2 3 4 第一组 第二组和第三组将始终存在于地址中 第 4 组可能不存在 我编写了一个正则表达式来帮助我获得
  • Oracle 奇怪的 SUM 行为

    我有两个查询 据我了解 这两个查询应该提供相同的结果 但事实并非如此 显然我在这里遗漏了一些重要的观点 我希望你能帮助我 查询 我认为这是错误的 SELECT SUM a amount AS A SUM 10 727 470 FROM bi
  • ORA-12154: TNS: 无法解析指定的连接标识符

    当我安装服务器版本和现有的 Oracle 10g 客户端版本时 问题就开始了 背景 安装了 Oracle 客户端版本 10g 位于 c oracle 以连接到位于其他国家 地区的数据库 所以我们只能连接到它并且对它的访问权限有限 路径 gt
  • oracle嵌套表的最大行数是多少

    CREATE TYPE nums list AS TABLE OF NUMBER Oracle 嵌套表中最大可能的行数是多少 UPDATE CREATE TYPE nums list AS TABLE OF NUMBER CREATE OR
  • Oracle 事务在 C++ 和 Java 之间的传播

    我们有一个现有的 C 应用程序 我们将逐步将其替换为新的基于 Java 的系统 在我们用 Java 完全重新实现所有内容之前 我们期望 C 和 Java 必须相互通信 RMI SOAP 消息传递等 我们尚未决定 现在我的经理认为我们需要 J
  • 如何从oracle存储过程中提取out变量?

    我有存储过程 其中有很多输出变量 所以我这样调用存储过程 export const infoHR3 async gt try const sql Declare ln order qty NUMBER ln in proc qty hr N
  • 从 CTE 插入

    WITH DTL AS SELECT CMPI CODE CMN CDTY MTRL CMI WT FACTOR CMI CNTRCT RATE PL PRESENT PRICE TRM CODE ROUND NVL PRESENT PRI
  • 金融 - 计算到期收益率

    我读了this https stackoverflow com questions 1173555 open source financial library specifically yield to maturity发布关于 net 库
  • Oracle中如何选择前100行?

    我的要求是获取每个客户的最新订单 然后获取前100条记录 我编写了一个如下查询来获取每个客户的最新订单 内部查询工作正常 但我不知道如何根据结果获得前 100 名 SELECT FROM SELECT id client id ROW NU
  • 如何在Oracle中将“(Ab56.12345)some_string”的一个字符串列拆分为两列“Ab.12345”,“some_string”

    正如问题一样 如何拆分一个字符串列 Ab56 12345 some string到两列Ab56 12345and some string在甲骨文中 注意 并非所有列都 Ab56 12345 some string 部分列仅some stri
  • Postgresql存储过程中基于会话的全局变量?

    在 Oracle 的 PL SQL 中 我可以使用包定义创建基于会话的全局变量 对于 Postgresql 的 PLpg SQL 这似乎是不可能的 因为没有包 只有独立的过程和函数 以下是 PL SQL 将 g spool key 声明为全
  • Oracle PL/SQL 将行类型作为构造函数参数传递

    是否可以将 table rowtype 作为构造函数中的参数传递 我有这样的东西 这有效 CREATE OR REPLACE TYPE shape AS OBJECT name VARCHAR2 30 area NUMBER CONSTRU
  • 从 C# 使用 Odbc 调用 Oracle 包函数

    我在 Oracle 包中定义了一个函数 CREATE OR REPLACE PACKAGE BODY TESTUSER TESTPKG as FUNCTION testfunc n IN NUMBER RETURN NUMBER as be

随机推荐