上面左边是个人我的微信,如需进一步沟通,请加微信。 右边是个人公众号“Openstack私有云”,若有兴趣,请关注。css
最近公司使用到了oracle12C的产品,原来对oracle11gR2的RAC比较熟悉,12C版本有一个大的特性是数据库容器和可插拔式数据库,即CDB和PDB,仍是须要熟悉一下。准备使用PVE环境搭建一套12C的rac 。html
参考了下面这篇博客:
node
https://blog.51cto.com/sery/2156860linux
硬件配置规划以下:web
一、两台做为实例节点的pve虚拟机,每台虚拟机使用4核8G,2块磁盘,1块32G,1块100G,其中16G做为swap交换分区使用,2块网卡桥接到pve物理网络中;shell
二、一台做为共享存储的pve虚拟机安装openfiler,使用2块磁盘,1块32G安装系统,1块200G做为共享磁盘,共享存储openfiler经过iscsi提供共享存储,实例节点上配置iscsi客户端使用openfiler共享出来的iscsi存储。配置以下:数据库
注意存储使用的是ide cache=writethrough ,开始的时候选择scsi,安装openfiler的时候认不到磁盘。centos
三、数据库的安装规划。在网上找到了官方提供的一个oracle12C RAC的安装指导,可是是针对rhel6的,个人环境是centos7,参考了下面这个网址:
bash
https://blog.51cto.com/ld0381/1923207 微信
安装规划以下:
a、存储规划:
一、 GRID集群组件磁盘组
+dggrid: 1个,由三个10G磁盘组成normal (注意,ocr磁盘在12C中须要大于77G)
二、 数据库安装磁盘组
+dgsystem:用于数据库基本表空间,控制文件,参数文件等
+dgrecovery:用于归档与闪回日志空间
+dgdata:用户数据库业务表空间
b、IP规划:
oraclenode1:
publicip : ens18 :192.168.1.32
vip:192.168.1.36
privateip :ens19 :192.168.170.32
oraclenode2:
publicip : ens18 :192.168.1.33
vip:192.168.1.37
privateip :ens19 :192.168.170.33
scanip :192.168.1.38
c、软件版本:
操做系统:CentOS 7.2
数据库:ORACLE12c R2
集群管理软件:ORACLEGRID 12.2.0.1
d、主机名规划:
#public ip
192.168.1.32 oraclenode1
192.168.1.33 oraclenode2
#private ip
192.168.170.32 oraclenode1pri
192.168.170.32 oraclenode2pri
#vip ip
192.168.1.36 oraclenode1vip
192.168.1.37 oraclenode2vip
#scan ip
192.168.1.38 oraclenodescan
e、用户及用户组规划:
groupadd -g 60001 oinstall
groupadd -g 60002 dba
groupadd -g 60003 oper
groupadd -g 60004 backupdba
groupadd -g 60005 dgdba
groupadd -g 60006 kmdba
groupadd -g 60007 asmdba
groupadd -g 60008 asmoper
groupadd -g 60009 asmadmin
useradd -u 61001 -g oinstall -G asmadmin,asmdba,dba,asmoper grid
useradd -u 61002 -g oinstall -G dba,backupdba,dgdba,kmdba,asmadmin,oper,asmdba oracle
echo "grid" | passwd --stdin grid
echo "oracle" | passwd --stdin oracle
f、目录规划:
mkdir -p /data/oracle/app/grid
mkdir -p /data/oracle/app/12.2.0.1/grid
chown -R grid:oinstall /data/oracle
mkdir -p /data/oracle/app/oraInventory
chown -R grid:oinstall /data/oracle/app/oraInventory
mkdir -p /data/oracle/app/oracle
chown -R oracle:oinstall /data/oracle/app/oracle
chmod -R 775 /data/oracle
从上面的存储规划上能够看到,共享磁盘须要有6个lun,其中3个10G做为OCR+voting(注意,ocr磁盘在12C中须要大于77G),3个lun分别存放系统表空间50G、归档及闪回日志空间50G、用户数据空间50G
首先作好安装源的准备,主要有centos7的安装镜像,oracle 12C R2安装源,以及openfiler的ISO安装镜像。
在oracle官网下载安装文件(须要先注册oracle用户):
下载openfiler的iso安装镜像:
https://www.openfiler.com/community/download
安装的时候,注意将IP地址配置为静态地址:
安装完openfiler以下:
默认的用户名密码是: openfiler password ,登陆以后的界面以下:
在第二块盘 /dev/sdb 上面划分扩展逻辑分区,建立3个10G(注意,ocr磁盘在12C中须要大于77G),3个50G的分区,而后建立pv,以下:
[root@openfiler ~]# fdisk /dev/sdb Command (m for help): p Disk /dev/sdb: 214.7 GB, 214748364800 bytes 255 heads, 63 sectors/track, 26108 cylinders, total 419430400 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00089483 Device Boot Start End Blocks Id System /dev/sdb1 63 16771859 8385898+ 83 Linux /dev/sdb2 16771860 18876374 1052257+ 82 Linux swap / Solaris Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4, default 3): Using default value 3 First sector (18876375-419430399, default 18876375): Using default value 18876375 Last sector, +sectors or +size{K,M,G} (18876375-419430399, default 419430399): Using default value 419430399 Command (m for help): p Disk /dev/sdb: 214.7 GB, 214748364800 bytes 255 heads, 63 sectors/track, 26108 cylinders, total 419430400 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00089483 Device Boot Start End Blocks Id System /dev/sdb1 63 16771859 8385898+ 83 Linux /dev/sdb2 16771860 18876374 1052257+ 82 Linux swap / Solaris /dev/sdb3 18876375 419430399 200277012+ 83 Linux Command (m for help): t Partition number (1-4): 3 Hex code (type L to list codes): 8e Changed system type of partition 3 to 8e (Linux LVM) Command (m for help): p Disk /dev/sdb: 214.7 GB, 214748364800 bytes 255 heads, 63 sectors/track, 26108 cylinders, total 419430400 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00089483 Device Boot Start End Blocks Id System /dev/sdb1 63 16771859 8385898+ 83 Linux /dev/sdb2 16771860 18876374 1052257+ 82 Linux swap / Solaris /dev/sdb3 18876375 419430399 200277012+ 8e Linux LVM Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: Re-reading the partition table failed with error 16: Device or resource busy. The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8) Syncing disks. [root@openfiler ~]# partprobe [root@openfiler ~]# [root@openfiler ~]# pvcreate /dev/sdb3 Physical volume "/dev/sdb3" successfully created
注意上面,用fdisk建立完分区后,须要用 partprobe 命令更新一下分区信息,才能使pvcreate认到。以上操做完以后,能够在web界面上看到下面的pv信息:
接下来,吧iscsi服务打开:
注意,上面只开启了一个网络,若是两个网络都打开,会有多路径的问题。
接下来,在rac主机上安装iscsi客户端: yum install -y iscsi-initiator-utils 在rac主机上查找iscsi服务端: [root@localhost ~]# iscsiadm -m discovery -t sendtargets -p 192.168.1.31 192.168.1.31:3260,1 iqn.2006-01.com.openfiler:tsn.eb490bf65b71 在rac主机上login服务端: [root@localhost ~]# iscsiadm -m node -T iqn.2006-01.com.openfiler:tsn.eb490bf65b71 -l Logging in to [iface: default, target: iqn.2006-01.com.openfiler:tsn.eb490bf65b71, portal: 192.168.1.31,3260] Login to [iface: default, target: iqn.2006-01.com.openfiler:tsn.eb490bf65b71, portal: 192.168.1.31,3260] successful. [root@localhost ~]# 使用fdisk -l 验证是否挂载了共享的lun: [root@oraclenode1 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 32G 0 disk ├─sda1 8:1 0 500M 0 part /boot └─sda2 8:2 0 31.5G 0 part ├─centos-root 253:0 0 29.5G 0 lvm / └─centos-swap 253:1 0 2G 0 lvm [SWAP] sdb 8:16 0 100G 0 disk sdc 8:32 0 48.9G 0 disk sdd 8:48 0 48.9G 0 disk sde 8:64 0 48.9G 0 disk sdf 8:80 0 83G 0 disk sr0 11:0 1 1024M 0 rom
因为是使用的虚拟机,所以在前面一系列繁琐的安装前准备,配置相关参数都是同样的,因此前面同样的操做状况下,先只对一台虚拟机进行安装,后面对这个虚拟机进行克隆,克隆后修改IP地址和主机名等不一致的参数。
接下来,分别上传安装包,进行数据库的安装。详细的步骤就不赘述了,参考本文最上面的那个网址。
asm磁盘管理部分,参考了官方文档:
下载并安装asmlib包:
https://www.oracle.com/technetwork/server-storage/linux/asmlib/rhel7-2773795.html
下载了两个包:
oracleasmlib-2.0.12-1.el7.x86_64.rpm
oracleasm-support-2.1.11-2.el7.x86_64.rpm
使用yum localinstall 命令安装,解决依赖问题。
配置asm:
[root@oraclenode1 software]# oracleasm configure -i Configuring the Oracle ASM library driver. This will configure the on-boot properties of the Oracle ASM library driver. The following questions will determine whether the driver is loaded on boot and what permissions it will have. The current values will be shown in brackets ('[]'). Hitting <ENTER> without typing an answer will keep that current value. Ctrl-C will abort. Default user to own the driver interface []: grid Default group to own the driver interface []: asmadmin Start Oracle ASM library driver on boot (y/n) [n]: y Scan for Oracle ASM disks on boot (y/n) [y]: y Writing Oracle ASM library driver configuration: done
https://www.cndba.cn/Expect-le/article/1819
准备ASM磁盘:
使用udev绑定磁盘: KERNEL=="sd*",ENV{DEVTYPE}=="disk",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode",RESULT=="14f504e46494c45523263575331752d466a34362d64385876", RUN+="/bin/sh -c 'mknod /dev/asmdiskc b $major $minor; chown grid:asmadmin /dev/asmdiskc; chmod 0660 /dev/asmdiskc'" KERNEL=="sd*",ENV{DEVTYPE}=="disk",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode",RESULT=="14f504e46494c455246314d47436e2d6432317a2d7039576d", RUN+="/bin/sh -c 'mknod /dev/asmdiskd b $major $minor; chown grid:asmadmin /dev/asmdiskd; chmod 0660 /dev/asmdiskd'" KERNEL=="sd*",ENV{DEVTYPE}=="disk",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode",RESULT=="14f504e46494c45524b374e4435422d63316f692d7667344d", RUN+="/bin/sh -c 'mknod /dev/asmdiske b $major $minor; chown grid:asmadmin /dev/asmdiske; chmod 0660 /dev/asmdiske'" KERNEL=="sd*",ENV{DEVTYPE}=="disk",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode",RESULT=="14f504e46494c45527061503038772d716467662d4a303479", RUN+="/bin/sh -c 'mknod /dev/asmdiskf b $major $minor; chown grid:asmadmin /dev/asmdiskf; chmod 0660 /dev/asmdiskf'" KERNEL=="sd*",ENV{DEVTYPE}=="disk",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode",RESULT=="14f504e46494c455274475033336f2d4e39746f2d75436d70", RUN+="/bin/sh -c 'mknod /dev/asmdiskg b $major $minor; chown grid:asmadmin /dev/asmdiskg; chmod 0660 /dev/asmdiskg'" KERNEL=="sd*",ENV{DEVTYPE}=="disk",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode",RESULT=="14f504e46494c45524c427661724a2d69746c322d67705363", RUN+="/bin/sh -c 'mknod /dev/asmdiskh b $major $minor; chown grid:asmadmin /dev/asmdiskh; chmod 0660 /dev/asmdiskh'" 上面的RESULT== 内容,经过命令: /usr/lib/udev/scsi_id -g -u /dev/sd$i 获取 其中sd$i ,i=c d e f g h 参考了这个网址: https://www.cndba.cn/Expect-le/article/1819 将上面的内容复制到文件/etc/udev/rules.d/99-oracle-asmdevices.rules 中。 执行生效: /sbin/udevadm trigger --type=devices --action=change 检查ASM磁盘: ls -ltr /dev/asm* 若是找不到文件,重启系统:reboot 若是重装,使用dd if=/dev/sdc of=/dev/sdc 擦除lun的数据,不然使用过的lun处于member状态,若是容量很大,建议仍是直接删除lun后从新建,从新作映射关系: 一、发现 [root@localhost ~]# iscsiadm -m discovery -t st -p 192.168.1.31 192.168.1.31:3260,1 iqn.2006-01.com.openfiler:tsn.eb490bf65b71 二、卸载: iscsiadm -m node -T iqn.2006-01.com.openfiler:tsn.eb490bf65b71 -u 三、删除: iscsiadm -m node -T iqn.2006-01.com.openfiler:tsn.eb490bf65b71 -o delete 四、在openfiler删除volumn,新建volumn,从新map(略) 五、发现 [root@localhost ~]# iscsiadm -m discovery -t st -p 192.168.1.31 192.168.1.31:3260,1 iqn.2006-01.com.openfiler:tsn.eb490bf65b71 六、login登陆: iscsiadm -m node -T iqn.2006-01.com.openfiler:tsn.eb490bf65b71 -l 七、验证: lsblk
安装以前,须要先安装图形组件:
yum -y groups install "X Window System" "Fonts"
安装了xmanager,设置xshell,这里不赘述。
运行解压出来的grid安装包的gridSetup.sh 脚本 : ./gridSetup.sh
密码: oracle
yum install compat-libcap1 -y
yum install nfs-utils -y
好多个小时以后:
安装完成。登陆grid帐号,使用 crs_stat -t 查看集群状态:
使用ocrcheck 检查ocr状态,使用crsctl query css votedisk 检查votedisk的状态,以下:
[root@oraclenode2 tmp]# su - grid Last login: Mon Jan 14 11:18:07 CST 2019 [grid@oraclenode2 ~]$ ocrcheck Status of Oracle Cluster Registry is as follows : Version : 4 Total space (kbytes) : 409568 Used space (kbytes) : 2032 Available space (kbytes) : 407536 ID : 1486039673 Device/File Name : +GRID Device/File integrity check succeeded Device/File not configured Device/File not configured Device/File not configured Device/File not configured Cluster registry integrity check succeeded Logical corruption check bypassed due to non-privileged user [grid@oraclenode2 ~]$ crsctl query css votedisk ## STATE File Universal Id File Name Disk group -- ----- ----------------- --------- --------- 1. ONLINE 8e6efe7ec1b74f02bf229f9bd02ceb92 (/dev/asmdiskc) [GRID] Located 1 voting disk(s). [grid@oraclenode2 ~]$
ocr和votedisk状态正常!
安装数据库软件:
使用oracle帐号登陆,运行安装程序 ./runInstaller :
至此,RAC的grid集群以及数据库软件安装完成。
接下来,还须要安装数据库实例CDB和PDB ,在接下来的博文中再继续。
总结:
安装的过程仍是有些复杂,主要涉及到了共享存储、网络、主机等的规划,我一直以为oracle设计的过于复杂,就单单安装一个RAC就能挡住不少的人,搞得很高大上的样子,其实真正使用的时候,设计得越复杂,那么故障点就越多,其实通常的企业用户,讲真心话真的用不着rac高可用,好好利用好单机数据库,作好按期备份和巡检,要靠谱得多。
在安装前,须要作不少的准备工做,主要是准备软件包,而后找到对应操做系统和数据库版本的安装指导 ,作好数据库的规划,这点很重要,规划先行,不要一上来就开始安装。
在安装过程当中碰到一个问题,12C对ocr使用的磁盘对大小有要求,要求大于77G,这里恶心了我一把,由于这样个人共享存储,包括主机上的iscsi配置,以及udev绑定要所有重来,这里非常花了我一些时间。文章中有些截图或者内容仍是当时设计的3个10G的磁盘做为ocr表决磁盘,我就不改了,过程其实都是同样的。