oracle rac 19c搭建步骤
记录oracle rac 19c的搭建步骤
·
文章目录
- oracle rac搭建分两个部分,一是基础软件包grid的安装,二是数据库软件包oracle的安装。oracle数据软件包安装比较通用,grid软件包在rac环境下才安装。grid软件官方文档Grid Infrastructure Installation Guide 19c.pdf。软件从oracle 官方下载,分别下载LINUX.X64_193000_grid_home.zip 和LINUX.X64_193000_db_home.zip,两个软件包。
环境准备
- 目标是搭建一个具有2节点,3个磁盘组的oracle rac,使用2个虚拟作为rac的节点,9个raw文件作为共享磁盘组。
虚机节点准备
安装OS
- 我们使用centos作为节点的OS,19c官方文档中版本是Red Hat Enterprise Linux 7.5: 3.10.0-862.11.6.el7.x86_64 or later,我们安装centos7.8,满足要求。
准备磁盘
- 主机侧使用qemu-img创建好数据库磁盘、系统盘、home目录磁盘、grid软件安装目录磁盘,举例:
qemu-img create -f raw /home/Hyman/oracle_database/asmdisk0.raw 20G
- 数据库磁盘
asmdisk0/1/2作为数据库磁盘组DATADG,asmdisk3/4/5作为集群磁盘组OCRDG,asmdisk6/7/8作为日志磁盘组REDODG。
- home目录磁盘、系统盘、grid软件安装盘
准备网络
- 网络需要至少两个,一个可以访问公网,用于安装yum源,一个用于rac集群通信网络。公网网络使用libvirt默认的default net,xml配置如下:
<interface type='network'>
<mac address='0c:da:41:22:21:54'/>
<source network='default'/>
<model type='virtio'/>
</interface>
- 私有网络使用ovs,首先创建ovs桥:
ovs-vsctl add-br br-int
- 私有网络xml配置如下:
<interface type='bridge'>
<mac address='fa:16:3b:2a:2f:f1'/>
<source bridge='br-int'/>
<virtualport type='openvswitch'/>
<model type='virtio'/>
</interface>
准备xml
- virsh define hy_c7_node3.xml定义hy_c7_node3虚机作为rac节点rac3,hy_c7_node3.xml。
- virsh start hy_c7_node3启动虚机,类似地,使用hy_c7_node4.xml定义hy_c7_node4启动虚机,两个节点使用同一组数据库磁盘。
配置用户
创建用户和组
- oracle rac软件在安装和使用过程中需要限制起权限,因此需要为其专门创建具有相应权限的用户和组,同时设置这些用户的工作目录等。
- 创建用户和组:
groupadd -g 11001 oinstall
groupadd -g 11002 dba
groupadd -g 11003 oper
groupadd -g 11004 backupdba
groupadd -g 11005 dgdba
groupadd -g 11006 kmdba
groupadd -g 11007 asmdba
groupadd -g 11008 asmoper
groupadd -g 11009 asmadmin
groupadd -g 11010 racdba
useradd -u 11011 -g oinstall -G dba,asmdba,backupdba,dgdba,kmdba,racdba,oper oracle
useradd -u 11012 -g oinstall -G asmadmin,asmdba,asmoper,dba grid
- 创建工作目录:
mkdir -p /u01/app/19.0.0/grid
mkdir -p /u01/app/grid
mkdir -p /u01/app/oracle
mkdir -p /u01/app/oracle/product/19.0.0/db_1
chown -R grid:oinstall /u01/app/grid
chown -R grid:oinstall /u01/app/19.0.0/grid
chown -R oracle:oinstall /u01/app/oracle
chmod -R 775 /u01/
mkdir -p /u01/app/oraInventory
chown -R grid:oinstall /u01/app/oraInventory
设置环境变量
- rac3节点:
cat>>/home/grid/.bash_profile<<EOF
export PATH
#SID用作集群对外的service ID,从1开始
export ORACLE_SID=+ASM1;
export ORACLE_BASE=/u01/app/grid;
export ORACLE_HOME=/u01/app/19.0.0/grid;
export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS";
export PATH=.:\$PATH:\$HOME/bin:\$ORACLE_HOME/bin
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=\$ORACLE_HOME/JRE:\$ORACLE_HOME/jlib:\$ORACLE_HOME/rdbms/jlib
EOF
cat>>/home/oracle/.bash_profile<<EOF
export PATH
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=\$ORACLE_BASE/product/19.0.0/db_1
export ORACLE_SID=orcl1
export PATH=\$ORACLE_HOME/bin:\$PATH
export LD_LIBRARY_PATH=\$ORACLE_HOME/bin:/bin:/usr/bin:/usr/local/bin
export CLASSPATH=\$ORACLE_HOME/JRE:\$ORACLE_HOME/jlib:\$ORACLE_HOME/rdbms/jlib
EOF
- rac4节点:
cat>>/home/grid/.bash_profile<<EOF
export PATH
#SID用作集群对外的service ID,从1开始
export ORACLE_SID=+ASM2;
export ORACLE_BASE=/u01/app/grid;
export ORACLE_HOME=/u01/app/19.0.0/grid;
export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS";
export PATH=.:\$PATH:\$HOME/bin:\$ORACLE_HOME/bin
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=\$ORACLE_HOME/JRE:\$ORACLE_HOME/jlib:\$ORACLE_HOME/rdbms/jlib
EOF
cat>>/home/oracle/.bash_profile<<EOF
export PATH
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=\$ORACLE_BASE/product/19.0.0/db_1
export ORACLE_SID=orcl2
export PATH=\$ORACLE_HOME/bin:\$PATH
export LD_LIBRARY_PATH=\$ORACLE_HOME/bin:/bin:/usr/bin:/usr/local/bin
export CLASSPATH=\$ORACLE_HOME/JRE:\$ORACLE_HOME/jlib:\$ORACLE_HOME/rdbms/jlib
EOF
设置资源上限
cat>>/etc/security/limits.conf<<EOF
# End of file
grid soft nproc 16384
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
grid soft stack 10240
grid hard stack 32768
oracle soft nproc 16384
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
oracle hard memlock 4194304
oracle soft memlock 4194304
EOF
配置网络
- oracle网络至少配置两类,一类是公网,可以让客户端访问,一类是私有网络,rac节点之前可以相互访问,只要能完成这两个功能,就可以设置成oracle的网络。在虚拟化场景下,我们把libvirt default网络通过dhcp分给虚机的地址作为私有网络,把静态IP作为公有网络,这样公有网络可以固定下来。
配置hostname
hy_c7_node3: hostnamectl set-hostname rac3
hy_c7_node4: hostnamectl set-hostname rac4
配置hosts
- 在hy_c7_node3和hy_c7_node4分别配置/etc/hosts:
cat >>/etc/hosts<<EOF
#节点rac3通过dhcp分配得到的IP
192.168.125.129 rac3-private
#节点rac4通过dhcp分配得到的IP
192.168.125.33 rac4-private
#节点rac3静态IP,持久化到network-script目录下开机自动配置
10.0.0.3 rac3
#节点rac4静态IP,持久化到network-script目录下开机自动配置
10.0.0.4 rac4
#节点rac3的虚拟IP,在oracle grid软件安装被配置,通过安装是作为虚拟的IP,grid安装通过clusterNodes配置项指定
10.0.0.5 rac3-vip
#节点rac4的虚拟IP,在oracle grid软件安装被配置,通过安装是作为虚拟的IP,grid安装通过clusterNodes配置项指定
10.0.0.6 rac4-vip
#集群的Single Client Access Name,客户端通过scan-ip访问集群,可以配置多个,在oracle grid软件安装时被配置
10.0.0.7 scan-ip
10.0.0.8 scan-ip
10.0.0.9 scan-ip
EOF
- 在两个节点配置静态IP,编辑网卡配置文件:
cat >>/etc/sysconfig/network-scripts/ifcfg-eth1<<EOF
DEVICE=eth1
TYPE=Ethernet
IPADDR=10.0.0.3
PREFIX=24
BOOTPROTO=none
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
NAME=eth1
ONBOOT=yes
EOF
cat >>/etc/sysconfig/network-scripts/ifcfg-eth1<<EOF
DEVICE=eth1
TYPE=Ethernet
IPADDR=10.0.0.4
PREFIX=24
BOOTPROTO=none
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
NAME=eth1
ONBOOT=yes
EOF
设置NOZEROCONF
cat >>/etc/sysconfig/network<<EOF
NOZEROCONF=yes
EOF
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
配置存储
home目录磁盘
- rac3、rac4分别执行:
mkfs.ext4 /dev/vdf
mkdir /home/data
[root@rac3 ~]# blkid /dev/vdf
/dev/vdf: UUID="90cb0aca-623a-4e92-8759-85e260368334" TYPE="ext4"
mount /dev/vdf /home/data/
/etc/fstab添加一行如下,开机自动挂载/home/data:
UUID=90cb0aca-623a-4e92-8759-85e260368334 /home/data ext4 defaults 0 0
grid软件安装磁盘
- rac3、rac4分别执行:
mkfs.ext4 /dev/vde
mkdir /u01
[root@rac3 ~]# blkid /dev/vde
/dev/vde: UUID="053a36da-8d1c-47bc-be8f-911e3704d025" TYPE="ext4"
mount /dev/vde /u01
/etc/fstab添加一行如下,开机自动挂载/u01:
UUID=053a36da-8d1c-47bc-be8f-911e3704d025 /u01 ext4 defaults 0 0
使能swap分区
- rac3、rac4分别执行:
mkdir -p /home/data/swap
dd if=/dev/zero of=/home/data/swap/swapfile bs=2G count=8
mkswap /home/data/swap/swapfile
swapon /home/data/swap/swapfile
/etc/fstab添加一行如下,开机自动挂载swap:
/usr/swap/swapfile swap swap defaults 0 0
使能shmem
- rac3、rac4分别执行:
/etc/fstab添加一行如下,开机自动挂载shmem:
tmpfs /dev/shm tmpfs defaults,size=8G 0 0
- 以上所有配置完成后,rac3 /etc/fstab增加了如下内容:
UUID=053a36da-8d1c-47bc-be8f-911e3704d025 /u01 ext4 defaults 0 0
UUID=90cb0aca-623a-4e92-8759-85e260368334 /home/data ext4 defaults 0 0
/home/data/swap/swapfile swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults,size=8G 0 0
数据库磁盘
- rac3、rac4分别使用fdisk工具对vdb、vdc … 分区,添加udev规则建立到磁盘的软连接,磁盘的用户和组分别设置为grid和asmadmin,让grid软件可以访问并使用:
[root@rac3 ~]# cat /etc/udev/rules.d/99-oracle-asmdevices.rules
KERNEL=="vdb1", SYMLINK+="asmdisk001", MODE="0660", OWNER="grid", GROUP="asmadmin"
KERNEL=="vdc1", SYMLINK+="asmdisk002", MODE="0660", OWNER="grid", GROUP="asmadmin"
KERNEL=="vdd1", SYMLINK+="asmdisk003", MODE="0660", OWNER="grid", GROUP="asmadmin"
KERNEL=="vde1", SYMLINK+="asmdisk004", MODE="0660", OWNER="grid", GROUP="asmadmin"
KERNEL=="vdh1", SYMLINK+="asmdisk005", MODE="0660", OWNER="grid", GROUP="asmadmin"
KERNEL=="vdi1", SYMLINK+="asmdisk006", MODE="0660", OWNER="grid", GROUP="asmadmin"
KERNEL=="vdj1", SYMLINK+="asmdisk007", MODE="0660", OWNER="grid", GROUP="asmadmin"
KERNEL=="vdk1", SYMLINK+="asmdisk008", MODE="0660", OWNER="grid", GROUP="asmadmin"
KERNEL=="vdl1", SYMLINK+="asmdisk009", MODE="0660", OWNER="grid", GROUP="asmadmin"
MISC
系统资源配置
cat>>/etc/sysctl.conf<<EOF
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 18446744073692774399
kernel.shmmax = 18446744073692774399
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 = 1048576
EOF
cat>>/etc/security/limits.d/20-nproc.conf<<EOF
* - nproc 16384
EOF
节点免密配置
- 节点3:
su - grid
ssh-keygen
ssh-copy-id rac4
ssh rac4
su - oracle
ssh-keygen
ssh-copy-id rac4
ssh rac4
- 节点4:
su - grid
ssh-keygen
ssh-copy-id rac3
ssh rac3
su - oracle
ssh-keygen
ssh-copy-id rac3
ssh rac3
登录配置
cat >>/etc/pam.d/login<<EOF
#ORACLE SETTING
session required pam_limits.so
EOF
禁止NTP服务
systemctl stop ntpd.service
systemctl disable ntpd.service
mv /etc/ntp.conf /etc/ntp.conf.orig
禁止selinux
sed -i 's/=enforcing/=disabled/g' /etc/selinux/config
setenforce 0
getenforce
软件安装
软件包安装
- 根据oracle rac 19c官方安装指导书,对于centos 7,安装grid软件需要先安装依赖包,如下:
yum install -y bc binutils compat-libcap1 compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel fontconfig-devel glibc glibc-devel ksh libaio libaio-devel libX11 libXau libXi libXtst libXrender libXrender-devel libgcc libstdc++ libstdc++-devel libxcb make smartmontools sysstat ipmiutil net-tools nfs-utils python python-configshell python-rtslib python-six targetcli gcc-c++
- 其它工具包:
yum install -y iscsi-initiator-utils-iscsiuio iscsi-initiator-utils pciutils rdma-core libibverbs libibumad ibacm librdmacm libtool-ltdl unixODBC libarchive cmake unixODBC-devel rdma-core-devel gdb unzip nslookup bind java tmux tree
grid软件安装
准备软件包
su - grid
cp LINUX.X64_193000_grid_home.zip $ORACLE_HOME
cd $ORACLE_HOME
unzip LINUX.X64_193000_grid_home.zip
编辑静默安装配置文件
- ${ORACLE_HOME}/install/response/gridsetup.rsp。内容如下:
gridsetup.rsp
环境预检查
- 使用grid安装包中的脚本检查环境是否正常:
${ORACLE_HOME}/runcluvfy.sh stage -pre crsinst -n rac3,rac4 -verbose
- 使用executePrereqs选项提前检查安装依赖项:
${ORACLE_HOME}/gridSetup.sh -executePrereqs -silent -responseFile $ORACLE_HOME/install/response/gridsetup.rsp
- 以下三个报错可以忽略,因为我们没有配置DNS解析域名,如果/etc/resolv.conf中有配置nameserver但是没有解析到配置文件指定的主机名,会有下面的提示。最终安装软件会根据/etc/hosts中的配置信息查找主机名对应的IP。因此这里可以忽略。
- /etc/resolv.conf的报错
- DNS/GNS未配置
- SCAN IP无法通过DNS解析到
安装
- 在rac3节点安装grid软件,该软件是oracle rac安装的核心软件,安装过程中会配置网络,grid软件只需要在一个节点上安装,其它节点会被集群软件纳入管理:
${ORACLE_HOME}/gridSetup.sh -ignorePrereq -silent -responseFile ${ORACLE_HOME}/install/response/gridsetup.rsp
- 安装完成后,按照提示,使用root用户分别在rac3、rac4节点依次执行如下脚本:
/u01/app/oraInventory/orainstRoot.sh
/u01/app/19.0.0/grid/root.sh
- 脚本执行完成后,在rac3节点执行脚本安装配置工具:
${ORACLE_HOME}/gridSetup.sh -executeConfigTools -silent -responseFile ${ORACLE_HOME}/install/response/gridsetup.rsp
集群状态检查
- grid软件安装完成后,检查集群的状态:
[root@rac4 ~]# su - grid
[grid@rac4 ~]$ crsctl stat res -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
ONLINE ONLINE rac3 STABLE
ONLINE ONLINE rac4 STABLE
ora.chad
ONLINE ONLINE rac3 STABLE
ONLINE ONLINE rac4 STABLE
ora.net1.network
ONLINE ONLINE rac3 STABLE
ONLINE ONLINE rac4 STABLE
ora.ons
ONLINE ONLINE rac3 STABLE
ONLINE ONLINE rac4 STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
1 ONLINE ONLINE rac3 STABLE
2 ONLINE ONLINE rac4 STABLE
3 ONLINE OFFLINE STABLE
ora.DATADG.dg(ora.asmgroup)
1 ONLINE ONLINE rac3 STABLE
2 ONLINE ONLINE rac4 STABLE
3 OFFLINE OFFLINE STABLE
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE rac4 STABLE
ora.LISTENER_SCAN2.lsnr
1 ONLINE ONLINE rac3 STABLE
ora.LISTENER_SCAN3.lsnr
1 ONLINE ONLINE rac3 STABLE
ora.OCRDG.dg(ora.asmgroup)
1 ONLINE ONLINE rac3 STABLE
2 ONLINE ONLINE rac4 STABLE
3 OFFLINE OFFLINE STABLE
ora.asm(ora.asmgroup)
1 ONLINE ONLINE rac3 Started,STABLE
2 ONLINE ONLINE rac4 Started,STABLE
3 OFFLINE OFFLINE STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
1 ONLINE ONLINE rac3 STABLE
2 ONLINE ONLINE rac4 STABLE
3 OFFLINE OFFLINE STABLE
ora.cvu
1 ONLINE ONLINE rac3 STABLE
ora.qosmserver
1 ONLINE ONLINE rac3 STABLE
ora.rac3.vip
1 ONLINE ONLINE rac3 STABLE
ora.rac4.vip
1 ONLINE ONLINE rac4 STABLE
ora.scan1.vip
1 ONLINE ONLINE rac4 STABLE
ora.scan2.vip
1 ONLINE ONLINE rac3 STABLE
ora.scan3.vip
1 ONLINE ONLINE rac3 STABLE
- 查看集群的磁盘组OCRDG:
[grid@rac3 ~]$ asmcmd
ASMCMD> lsdg
State Type Rebal Sector Logical_Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name
MOUNTED EXTERN N 512 512 4096 4194304 20472 20100 0 20100 0 Y OCRDG/
ASM增加数据库磁盘组
- 增加用户存储数据的磁盘组DATADG,该磁盘组由/dev/asmdisk001 /dev/asmdisk002 /dev/asmdisk003组成,在rac3上执行:
sqlplus / as sysasm
SQL> CREATE DISKGROUP DATADG external REDUNDANCY disk '/dev/asmdisk001','/dev/asmdisk002','/dev/asmdisk003' ATTRIBUTE 'au_size'='1M','compatible.asm'='19.0';
SQL> exit
[grid@rac3 ~]$ asmcmd
ASMCMD> lsdg
State Type Rebal Sector Logical_Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name
MOUNTED EXTERN N 512 512 4096 1048576 61437 52234 0 52234 0 N DATADG/
MOUNTED EXTERN N 512 512 4096 4194304 20472 20100 0 20100 0 Y OCRDG/
- 在rac4上使用该磁盘组:
sqlplus / as sysasm
SQL> alter diskgroup datadg mount;
SQL> exit
[grid@rac3 ~]$ asmcmd
ASMCMD> lsdg
State Type Rebal Sector Logical_Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name
MOUNTED EXTERN N 512 512 4096 1048576 61437 52234 0 52234 0 N DATADG/
MOUNTED EXTERN N 512 512 4096 4194304 20472 20100 0 20100 0 Y OCRDG/
database软件安装
准备安装包
su - oracle
cp LINUX.X64_193000_db_home.zip $ORACLE_HOME
cd $ORACLE_HOME
unzip LINUX.X64_193000_db_home.zip
编辑静默安装配置文件
- 切换到oracle用户,编辑以下配置文件:$ORACLE_HOME/install/response/db_install.rsp,内容如下:
db_install.rsp
安装数据库软件
- rac3执行安装脚本:
su - oracle
cd $ORACLE_HOME
./runInstaller -ignorePrereq -silent -responseFile ${ORACLE_HOME}/install/response/db_install.rsp
- rac3、rac4以root用户执行以下脚本:
/u01/app/oracle/product/19.0.0/db_1/root.sh
- 以上软件安装完成后,整个oracle rac集群软件的安装就完成了,之后的工作就是通过dbca工具创建数据库,创建数据库实例,建表等操作。
更多推荐
已为社区贡献1条内容
所有评论(0)