最近公司使用到了oracle12C的產品,原來對oracle11g2的RAC比較熟悉,12C版本有一個大的特性是數據庫容器和可插拔式數據庫,即CDB和PDB,還是需要熟悉一下。準備使用PVE環境搭建一套12C的rac 。
參考了下面這篇博客:
http://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,參考了下面這個網址:
http://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用戶):
下載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後重新建,重新做映射關係: 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 查看集羣狀態:
安裝數據庫軟件:
使用oracle賬號登錄,運行安裝程序 ./runInstaller :
至此,RAC的grid集羣以及數據庫軟件安裝完成。
接下來,還需要安裝數據庫實例CDB和PDB ,在接下來的博文中再繼續。
總結:
安裝的過程還是有些複雜,主要涉及到了共享存儲、網絡、主機等的規劃,我一直覺得oracle設計的過於複雜,就單單安裝一個RAC就能擋住很多的人,搞得很高大上的樣子,其實真正使用的時候,設計得越複雜,那麼故障點就越多,其實一般的企業用戶,講真心話真的用不着rac高可用,好好利用好單機數據庫,做好定期備份和巡檢,要靠譜得多。
在安裝前,需要做很多的準備工作,主要是準備軟件包,然後找到對應操作系統和數據庫版本的安裝指導 ,做好數據庫的規劃,這點很重要,規劃先行,不要一上來就開始安裝。
在安裝過程中碰到一個問題,12C對ocr使用的磁盤對大小有要求,要求大於77G,這裏噁心了我一把,因爲這樣我的共享存儲,包括主機上的iscsi配置,以及udev綁定要全部重來,這裏很是花了我一些時間。文章中有些截圖或者內容還是當時設計的3個10G的磁盤作爲ocr表決磁盤,我就不改了,過程其實都是一樣的。