ProxmoxVE 之 安裝oracle12C rac集羣


    最近公司使用到了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物理網絡中;

image.png

    2、一臺作爲共享存儲的pve虛擬機安裝openfiler,使用2塊磁盤,1塊32G安裝系統,1塊200G作爲共享磁盤,共享存儲openfiler通過iscsi提供共享存儲,實例節點上配置iscsi客戶端使用openfiler共享出來的iscsi存儲。配置如下:

image.png

注意存儲使用的是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用戶):

    https://www.oracle.com/technetwork/database/enterprise-edition/downloads/oracle12c-linux-12201-3608234.html

    下載openfiler的iso安裝鏡像:

    https://www.openfiler.com/community/download

    安裝的時候,注意將IP地址配置爲靜態地址:

image.png

    安裝完openfiler如下:

    image.png

    

    默認的用戶名密碼是: openfiler   password   ,登錄之後的界面如下:

image.png


在第二塊盤 /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信息:

image.png

image.png

image.png

image.png



接下來,吧iscsi服務打開:

image.png

image.png

image.png

image.png


image.png

注意,上面只開啓了一個網絡,如果兩個網絡都打開,會有多路徑的問題。


接下來,在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 

image.png

image.png

image.png

image.png


image.png


image.png

image.png

image.png


image.png

image.png

image.png

密碼: oracle  

image.png


image.png

image.png

image.png


image.png

image.png

yum install compat-libcap1 -y

yum install nfs-utils -y

image.png


image.png

image.png

image.png

image.png

好多個小時之後:

image.png


image.png


安裝完成。登錄grid賬號,使用  crs_stat -t 查看集羣狀態:

image.png


安裝數據庫軟件:

使用oracle賬號登錄,運行安裝程序  ./runInstaller :

image.png

image.png

image.png

image.png


image.png


image.png


image.png


image.png

image.png

image.png

image.png


image.png


至此,RAC的grid集羣以及數據庫軟件安裝完成。

接下來,還需要安裝數據庫實例CDB和PDB ,在接下來的博文中再繼續。


總結:

    安裝的過程還是有些複雜,主要涉及到了共享存儲、網絡、主機等的規劃,我一直覺得oracle設計的過於複雜,就單單安裝一個RAC就能擋住很多的人,搞得很高大上的樣子,其實真正使用的時候,設計得越複雜,那麼故障點就越多,其實一般的企業用戶,講真心話真的用不着rac高可用,好好利用好單機數據庫,做好定期備份和巡檢,要靠譜得多。

    在安裝前,需要做很多的準備工作,主要是準備軟件包,然後找到對應操作系統和數據庫版本的安裝指導 ,做好數據庫的規劃,這點很重要,規劃先行,不要一上來就開始安裝。

    在安裝過程中碰到一個問題,12C對ocr使用的磁盤對大小有要求,要求大於77G,這裏噁心了我一把,因爲這樣我的共享存儲,包括主機上的iscsi配置,以及udev綁定要全部重來,這裏很是花了我一些時間。文章中有些截圖或者內容還是當時設計的3個10G的磁盤作爲ocr表決磁盤,我就不改了,過程其實都是一樣的。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章