ProxmoxVE之安装oracle12Crac集群
公司主营业务:成都网站设计、成都做网站、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联建站是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联建站推出漳平免费做网站回馈大家。
上面左边是我的个人微信,如需进一步沟通,请加微信。 右边是我的公众号“Openstack私有云”,如有兴趣,请关注。
最近公司使用到了oracle12C的产品,原来对oracle11gR2的RAC比较熟悉,12C版本有一个大的特性是数据库容器和可插拔式数据库,即CDB和PDB,还是需要熟悉一下。准备使用PVE环境搭建一套12C的rac 。
参考了下面这篇博客:
https://blog.51cto.com/sery/2156860
硬件配置规划如下:
1、两台作为实例节点的pve虚拟机,每台虚拟机使用4核8G,2块磁盘,1块32G,1块100G,其中16G作为swap交换分区使用,2块网卡桥接到pve物理网络中;
2、一台作为共享存储的pve虚拟机安装openfiler,使用2块磁盘,1块32G安装系统,1块200G作为共享磁盘,共享存储openfiler通过iscsi提供共享存储,实例节点上配置iscsi客户端使用openfiler共享出来的iscsi存储。配置如下:
注意存储使用的是ide cache=writethrough ,开始的时候选择scsi,安装openfiler的时候认不到磁盘。
3、数据库的安装规划。在网上找到了官方提供的一个oracle12C RAC的安装指导,但是是针对rhel6的,我的环境是centos7,参考了下面这个网址:
https://blog.51cto.com/ld0381/1923207
安装规划如下:
a、存储规划:
1、 GRID集群组件磁盘组
+dggrid: 1个,由三个10G磁盘组成normal (注意,ocr磁盘在12C中需要大于77G)
2、 数据库安装磁盘组
+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用户):
https://www.oracle.com/technetwork/database/enterprise-edition/downloads/oracle12c-linux-12201-3608234.html
下载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 ('[]'). Hittingwithout 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后重新建,重新做映射关系: 1、发现 [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 2、卸载: iscsiadm -m node -T iqn.2006-01.com.openfiler:tsn.eb490bf65b71 -u 3、删除: iscsiadm -m node -T iqn.2006-01.com.openfiler:tsn.eb490bf65b71 -o delete 4、在openfiler删除volumn,新建volumn,重新map(略) 5、发现 [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 6、login登录: iscsiadm -m node -T iqn.2006-01.com.openfiler:tsn.eb490bf65b71 -l 7、验证: 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表决磁盘,我就不改了,过程其实都是一样的。
当前题目:ProxmoxVE之安装oracle12Crac集群
路径分享:http://scyanting.com/article/gjjdpi.html