上面左邊是個人我的微信,如需進一步溝通,請加微信。 右邊是個人公衆號「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表決磁盤,我就不改了,過程其實都是同樣的。