1. 程式人生 > >rhel7.4安裝oracle 11G 11.2.0.4.0 RAC

rhel7.4安裝oracle 11G 11.2.0.4.0 RAC

mes sid unit 下一步 路徑和 vim pen submenu shadow

一、操作系統

red hat 7.4
oracle數據庫版本
11.2.0.4
oracle grid版本
11.2.0.4
對應的文件
p13390677_112040_Linux-x86-64_1of7.zip - database software
p13390677_112040_Linux-x86-64_2of7.zip - database software
p13390677_112040_Linux-x86-64_3of7.zip - grid software

IP地址規劃:
DNS server:192.168.1.168
db node1:192.168.1.212 public
192.168.1.213 VIP

10.0.1.2 private
db node2:192.168.1.214 public
192.168.1.215 VIP
10.0.1.3 private
scan: 192.168.1.216

二、基本配置

1、修改主機名稱:
vi /etc/hostname配置文件

hostnamectl set-hostname <計算機名>
A: redhat-212
B: redhat-214

2、動態IP修改為靜態IP
cd /etc/sysconfig/network-scripts/
BOOTPROTO="static" #dhcp改為static

3、修改兩個rac節點網卡配置:
節點1:

cat /etc/sysconfig/network-scripts/ifcfg-ens192 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens192
UUID=2a2b7809-26ac-4fc6-95d0-124c7348171a
DEVICE=ens192
ONBOOT=yes
IPADDR=192.168.1.212
PREFIX=24
cat /etc/sysconfig/network-scripts/ifcfg-ens224 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens224
UUID=6da67cdc-933c-4bfe-a3b1-2896175be86b
DEVICE=ens224
ONBOOT=yes
IPADDR=10.0.1.2
PREFIX=24

節點2:

cat /etc/sysconfig/network-scripts/ifcfg-ens192 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens192
UUID=aeead365-1e33-41c3-b0e9-b147c4a2e688
DEVICE=ens192
ONBOOT=yes
IPADDR=10.0.1.3
PREFIX=24
cat /etc/sysconfig/network-scripts/ifcfg-ens224
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens224
UUID=e4fe8fed-6e97-43b4-aec6-80ce42588ead
DEVICE=ens224
ONBOOT=yes
IPADDR=192.168.1.214
PREFIX=24

#vim /etc/resolv.conf
nameserver 218.2.2.2

分別重啟一下網卡:
systemctl restart network.service

禁用該可預測命名規則。對於這一點,你可以在啟動時傳遞“net.ifnames=0 biosdevname=0 ”的內核參數。這是通過編輯/etc/default/grub並加入“net.ifnames=0 biosdevname=0 ”到GRUBCMDLINELINUX變量來實現的。

cat /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed ‘s, release .*$,,g‘ /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap net.ifnames=0 biosdevname=0 rhgb quiet"
GRUB_DISABLE_RECOVERY="true"

3、直接關閉防火墻
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall開機啟動

4、關閉selinux
#vim /etc/selinux/config
修改文件
SELINUX=disabled
臨時關閉
#setenforce 0

5、內部DNS解析兩個rac節點:
NODE1:

vim /etc/hosts   127.0.0.1這一行修改一下名字racdb1,末尾添加如下:
127.0.0.1   racdb1 localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.216  cluster clusterscan
192.168.1.212  redhat-212
192.168.1.214  redhat-214
192.168.1.213  redhat-212-vip
192.168.1.215  redhat-214-vip
10.0.1.2       raca-priv
10.0.1.3       racb-priv

NODE2:

vim /etc/hosts   127.0.0.1這一行修改一下名字racdb2,末尾添加如下
127.0.0.1   racdb2 localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.216  cluster clusterscan
192.168.1.212  redhat-212
192.168.1.214  redhat-214
192.168.1.213  redhat-212-vip
192.168.1.215  redhat-214-vip
10.0.1.2       raca-priv
10.0.1.3       racb-priv

三、openfiler來劃分存儲空間

這個軟件挺好用的,在vmware環境下安裝,其實就是個linux系統,我們創建vmdisk就行了。配置登陸一個網頁https://ip:446
在網絡存儲服務器 (openfiler1) 上執行以下安裝。
在兩個 Oracle RAC 節點上進行網絡配置之後,下一步是將 Openfiler 軟件安裝到網絡存儲服務器 (openfiler1)。稍後會將網絡存儲服務器配置為 iSCSI 存儲設備,以滿足 Oracle Clusterware 和 Oracle RAC 的所有共享存儲需求。
安裝 Openfiler步驟可參考oracle官網:
http://www.oracle.com/technetwork/cn/articles/hunter-rac11gr2-iscsi-083834-zhs.html

1、使用 Openfiler 配置 iSCSI 卷
OpenFiler設置 iSCSI / 邏輯卷卷名卷描述
racdb-crs1 racdb-ASM CRS Volume 1
racdb-crs2 racdb-ASM CRS Volume 2
racdb-crs3 racdb-ASM CRS Volume 3
racdb-data1 racdb-ASM Data Volume 1
racdb-data2 racdb-ASM Data Volume 2
racdb-data3 racdb-ASM Data Volume 3
racdb-fra1 racdb-ASM FRA Volume 1
racdb-fra2 racdb-ASM FRA Volume 2
racdb-fra3 racdb-ASM FRA Volume 3

2、ISCSI路徑名稱命名
iqn.2006-01.com.openfiler:racdb.crs1
iqn.2006-01.com.openfiler:racdb.crs2
iqn.2006-01.com.openfiler:racdb.crs3
iqn.2006-01.com.openfiler:racdb.data1
iqn.2006-01.com.openfiler:racdb.data2
iqn.2006-01.com.openfiler:racdb.data3
iqn.2006-01.com.openfiler:racdb.fra1
iqn.2006-01.com.openfiler:racdb.fra2
iqn.2006-01.com.openfiler:racdb.fra3

3、兩個節點安裝iscsi客戶端

#yum install -y iscsi-initiator-utils
#systemctl start iscsid.service
#service iscsid start

4、設置iscsi客戶端開機啟動

systemctl enable iscsid.service
systemctl enable iscsi.service

5、查看服務狀態

#systemctl list-unit-files |grep iscsi*
iscsi-shutdown.service                        static  
iscsi.service                                 enabled 
iscsid.service                                enabled 
iscsiuio.service                              disabled
iscsid.socket                                 enabled 
iscsiuio.socket                               enabled 

6、發現ISCSI服務端磁盤路徑

#iscsiadm -m discovery -t sendtargets -p openfiler1-priv 為你的openfiler的IP地址,我這裏地址是10.0.1.100
#iscsiadm -m discovery -t sendtargets -p 10.0.1.100
10.0.1.100:3260,1 iqn.2006-01.com.openfiler:racdb.fra3
10.0.1.100:3260,1 iqn.2006-01.com.openfiler:racdb.fra2
10.0.1.100:3260,1 iqn.2006-01.com.openfiler:racdb.fra1
10.0.1.100:3260,1 iqn.2006-01.com.openfiler:racdb.data3
10.0.1.100:3260,1 iqn.2006-01.com.openfiler:racdb.data2
10.0.1.100:3260,1 iqn.2006-01.com.openfiler:racdb.data1
10.0.1.100:3260,1 iqn.2006-01.com.openfiler:racdb.crs3
10.0.1.100:3260,1 iqn.2006-01.com.openfiler:racdb.crs2
10.0.1.100:3260,1 iqn.2006-01.com.openfiler:racdb.crs1

7、每個 Oracle RAC 節點都能夠從網絡存儲服務器中發現可用目標。下一步是手動登錄每個可用目標,這可以使用 iscsiadm 命令行接口完成。這需要在兩個 Oracle RAC 節點上運行。註意,我必須指定網絡存儲服務器的 IP 地址而非其主機名 (openfiler1-priv) — 我認為必須這麽做,因為上述發現使用 IP 地址顯示目標。
登陸ISCSI遠程磁盤
iscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.crs1 -p 10.0.1.100 -l
iscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.crs2 -p 10.0.1.100 -l
iscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.crs3 -p 10.0.1.100 -l
iscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.data1 -p 10.0.1.100 -l
iscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.data2 -p 10.0.1.100 -l
iscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.data3 -p 10.0.1.100 -l
iscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.fra1 -p 10.0.1.100 -l
iscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.fra2 -p 10.0.1.100 -l
iscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.fra3 -p 10.0.1.100 -l

8、設置開機啟動自動連接磁盤

iscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.crs1 -p 10.0.1.100 --op update -n node.startup -v automatic
iscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.crs2 -p 10.0.1.100 --op update -n node.startup -v automatic
iscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.crs3 -p 10.0.1.100 --op update -n node.startup -v automatic
iscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.data1 -p 10.0.1.100 --op update -n node.startup -v automatic
iscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.data2 -p 10.0.1.100 --op update -n node.startup -v automatic
iscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.data3 -p 10.0.1.100 --op update -n node.startup -v automatic
iscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.fra1 -p 10.0.1.100 --op update -n node.startup -v automatic
iscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.fra2 -p 10.0.1.100 --op update -n node.startup -v automatic
iscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.fra3 -p 10.0.1.100 --op update -n node.startup -v automatic

9、查看遠程磁盤路徑和關聯的磁盤路徑
#(cd /dev/disk/by-path; ls -l openfiler | awk ‘{FS=" "; print $9 " " $10 " " $11}‘)
ip-10.0.1.100:3260-iscsi-iqn.2006-01.com.openfiler:racdb.crs1-lun-0 -> ../../sdc
ip-10.0.1.100:3260-iscsi-iqn.2006-01.com.openfiler:racdb.crs2-lun-0 -> ../../sdd
ip-10.0.1.100:3260-iscsi-iqn.2006-01.com.openfiler:racdb.crs3-lun-0 -> ../../sde
ip-10.0.1.100:3260-iscsi-iqn.2006-01.com.openfiler:racdb.data1-lun-0 -> ../../sdf
ip-10.0.1.100:3260-iscsi-iqn.2006-01.com.openfiler:racdb.data2-lun-0 -> ../../sdg
ip-10.0.1.100:3260-iscsi-iqn.2006-01.com.openfiler:racdb.data3-lun-0 -> ../../sdh
ip-10.0.1.100:3260-iscsi-iqn.2006-01.com.openfiler:racdb.fra1-lun-0 -> ../../sdi
ip-10.0.1.100:3260-iscsi-iqn.2006-01.com.openfiler:racdb.fra2-lun-0 -> ../../sdj
ip-10.0.1.100:3260-iscsi-iqn.2006-01.com.openfiler:racdb.fra3-lun-0 -> ../../sdk

10、安裝udev設備管理器(rac_udev建立磁盤方式安裝grid)
#yum install -y udev
查看磁盤串號

-----------------------------------------------------------------------------------------------------------------
for disk in `ls /dev/sd*`
                  do
                    echo $disk
                    /usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=$disk
                  done   \\回車
-----------------------------------------------------------------------------------------------------------------
 /dev/sda
/dev/sda1
/dev/sda2
/dev/sdb
/dev/sdb1
/dev/sdc
14f504e46494c45527763443337452d557347312d514f3049
/dev/sdd
14f504e46494c4552715837527a472d78444f522d6e6b5774
/dev/sde
14f504e46494c45523045727559352d706674422d43666c59
/dev/sdf
14f504e46494c455262664b78684c2d51796e512d30464179
/dev/sdg
14f504e46494c45526c36533367792d6a6265712d45705648
/dev/sdh
14f504e46494c45524159783651312d4a4554742d4f74776f

在兩個 Oracle RAC 節點:
映射關聯磁盤

#vim /etc/udev/rules.d/99-oracle-asmdevices.rules
KERNEL=="sd?", ENV{ID_SERIAL}=="14f504e46494c45527763443337452d557347312d514f3049", SYMLINK+="asm_ocr_1_1",  OWNER="grid",  GROUP="asmadmin", MODE="0660"
KERNEL=="sd?", ENV{ID_SERIAL}=="14f504e46494c4552715837527a472d78444f522d6e6b5774", SYMLINK+="asm_ocr_1_2",  OWNER="grid",  GROUP="asmadmin", MODE="0660"
KERNEL=="sd?", ENV{ID_SERIAL}=="14f504e46494c45523045727559352d706674422d43666c59", SYMLINK+="asm_data_1_1",  OWNER="grid",  GROUP="asmadmin", MODE="0660"
KERNEL=="sd?", ENV{ID_SERIAL}=="14f504e46494c455262664b78684c2d51796e512d30464179", SYMLINK+="asm_data_1_2",  OWNER="grid",  GROUP="asmadmin", MODE="0660"
KERNEL=="sd?", ENV{ID_SERIAL}=="14f504e46494c45526c36533367792d6a6265712d45705648", SYMLINK+="asm_fra_1_1",  OWNER="grid",  GROUP="asmadmin", MODE="0660"
KERNEL=="sd?", ENV{ID_SERIAL}=="14f504e46494c45524159783651312d4a4554742d4f74776f", SYMLINK+="asm_fra_1_2",  OWNER="grid",  GROUP="asmadmin", MODE="0660"

加載rules文件(rac_udev建立磁盤方式安裝grid)
#udevadm control --reload-rules
#udevadm trigger

11、查看關聯路徑情況
#ls -l /dev/asm*
lrwxrwxrwx. 1 root root 3 12月 26 17:30 /dev/asm_data_1_1 -> sdf
lrwxrwxrwx. 1 root root 3 12月 26 17:30 /dev/asm_data_1_2 -> sdg
lrwxrwxrwx. 1 root root 3 12月 26 17:30 /dev/asm_fra_1_1 -> sdh
lrwxrwxrwx. 1 root root 3 12月 26 17:30 /dev/asm_fra_1_2 -> sdi
lrwxrwxrwx. 1 root root 3 12月 26 17:30 /dev/asm_ocr_1_1 -> sdc
lrwxrwxrwx. 1 root root 3 12月 26 17:30 /dev/asm_ocr_1_2 -> sdd
lrwxrwxrwx. 1 root root 3 1月 8 14:00 /dev/asm_ocr_1_3 -> sde

四、創建任務角色劃分操作系統權限組、用戶和目錄

1、創建用戶:
groupadd -g 1000 oinstall
groupadd -g 1200 asmadmin
groupadd -g 1201 asmdba
groupadd -g 1202 asmoper
groupadd -g 1300 dba
groupadd -g 1301 oper
2、創建組:
useradd -u 1100 -g oinstall -G asmadmin,asmdba,asmoper grid
useradd -u 1101 -g oinstall -G dba,oper,asmdba oracle
3、創建密碼:
passwd grid
passwd oracle
4、設置互信關系,這裏記住oracle和grid用戶都要設置互信
#su - grid
$ mkdir ~/.ssh(有則不創建)
兩個節點執行以下操作
ssh-keygen -t rsa
ssh-keygen -t dsa
這裏一步一步直接回車的
技術分享圖片

以下操作在一個節點上執行即可(id_rsa是密鑰,id_rsa.pub是公鑰)
cat ~/.ssh/id_rsa.pub >> ./.ssh/authorized_keys --公鑰存在authorized_keys文件中,寫到本機
cat ~/.ssh/id_dsa.pub >> ./.ssh/authorized_keys
ssh redhat-214 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys --第二個節點的公鑰寫到本機
ssh redhat-214 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
技術分享圖片
技術分享圖片
scp ~/.ssh/authorized_keys secdb2:~/.ssh/authorized_keys
技術分享圖片
兩個節點上分別驗證
ssh redhat-212 date
ssh redhat-214 date
ssh raca-priv date
ssh racb-priv date

#su - oracle
兩個節點執行以下操作:
ssh-keygen -t rsa
ssh-keygen -t dsa
技術分享圖片
以下操作在一個節點上執行即可
cat ~/.ssh/id_rsa.pub >> ./.ssh/authorized_keys --公鑰存在authorized_keys文件中,寫到本機
cat ~/.ssh/id_dsa.pub >> ./.ssh/authorized_keys
ssh redhat-214 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys --第二個節點的公鑰寫到本機
ssh redhat-214 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
技術分享圖片
scp ~/.ssh/authorized_keys redhat-214:~/.ssh/authorized_keys --上傳本機公鑰到第二個節點管理
技術分享圖片
兩個節點上分別驗證
ssh redhat-212 date
ssh redhat-214 date
ssh raca-priv date
ssh racb-priv date

5、為grid用戶設置環境變量
如下操作也需要在兩個節點上同樣進行,這裏需要註意的是grid用戶的SID和oracle用戶的SID,是不一樣的,這裏大家明白原理的話就不會出錯。
以 grid 用戶帳戶分別登錄到兩個 Oracle RAC 節點並創建以下登錄腳本 (.bash_profile):
註: 在為每個 Oracle RAC 節點設置 Oracle 環境變量時,確保為每個 RAC 節點指定唯一的 Oracle SID。對於此示例,我使用:
racnode1:ORACLE_SID=+ASM1
racnode2:ORACLE_SID=+ASM2
Node1:

[root@racnode1 ~]# su - grid
vi .bash_profile
export TMP=/tmp  
export TMPDIR=$TMP  
export ORACLE_SID=+ASM1  
export ORACLE_BASE=/u01/grid  
export ORACLE_HOME=/u01/app/grid/11.2.0  
export NLS_DATE_FORMAT=‘yyyy/mm/dd hh24:mi:ss‘  
export TNS_ADMIN=$ORACLE_HOME/network/admin  
export PATH=/usr/sbin:$PATH  
export PATH=$ORACLE_HOME/bin:$PATH  
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib  
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export LANG=en_US
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK 
umask 022 

Node2:

#su - grid
vi .bash_profile
export TMP=/tmp  
export TMPDIR=$TMP  
export ORACLE_SID=+ASM2  
export ORACLE_BASE=/u01/grid  
export ORACLE_HOME=/u01/app/grid/11.2.0  
export NLS_DATE_FORMAT=‘yyyy/mm/dd hh24:mi:ss‘  
export TNS_ADMIN=$ORACLE_HOME/network/admin  
export PATH=/usr/sbin:$PATH  
export PATH=$ORACLE_HOME/bin:$PATH  
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib  
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib  
export LANG=en_US  
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK  
umask 022

6、為 oracle 用戶設置環境變量
以 oracle 用戶帳戶分別登錄到兩個 Oracle RAC 節點並創建以下登錄腳本 (.bash_profile):
註: 在為每個 Oracle RAC 節點設置 Oracle 環境變量時,確保為每個 RAC 節點指定唯一的 Oracle SID。對於此示例,我使用:
racnode1:ORACLE_SID=orcl1
racnode2:ORACLE_SID=orcl2

#su - oracle
vi .bash_profile
export TMP=/tmp  
export TMPDIR=$TMP  
export ORACLE_HOSTNAME=rac1  
export ORACLE_SID=orcl1  
export ORACLE_BASE=/u01/app/oracle  
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1  
export ORACLE_UNQNAME=orcl  
export TNS_ADMIN=$ORACLE_HOME/network/admin  
#export ORACLE_TERM=xterm  
export PATH=/usr/sbin:$PATH  
export PATH=$ORACLE_HOME/bin:$PATH  
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib  
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib  
export LANG=en_US  
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK  
export NLS_DATE_FORMAT=‘yyyy/mm/dd hh24:mi:ss‘  
umask 022

Node2:

#su - oracle
vi .bash_profile
export TMP=/tmp  
export TMPDIR=$TMP  
export ORACLE_HOSTNAME=rac2  
export ORACLE_SID=orcl2  
export ORACLE_BASE=/u01/app/oracle  
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1  
export ORACLE_UNQNAME=orcl  
export TNS_ADMIN=$ORACLE_HOME/network/admin  
#export ORACLE_TERM=xterm  
export PATH=/usr/sbin:$PATH  
export PATH=$ORACLE_HOME/bin:$PATH  
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib  
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib  
export LANG=en_US  
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK  
export NLS_DATE_FORMAT=‘yyyy/mm/dd hh24:mi:ss‘  
umask 022

7、創建 Oracle 基目錄路徑
最後一步是配置 Oracle 基路徑,要遵循最佳靈活體系結構 (OFA) 的結構及正確的權限。需要以 root 用戶身份在集群的兩個 Oracle RAC 節點上完成此任務。
本指南假設在根文件系統中創建 /u01 目錄。請註意,這樣做是為了簡便起見,不建議將其作為通用做法。通常會將 /u01 目錄作為配置了硬件或軟件鏡像功能的單獨文件系統供應。
#mkdir -p /u01/grid
#mkdir -p /u01/app/grid/11.2.0
#chown -R grid:oinstall /u01
#mkdir -p /u01/app/oracle
#chown oracle:oinstall /u01/app/oracle
#chmod -R 775 /u01
8、為 Oracle 軟件安裝用戶設置資源限制:
8.1 在每個 Oracle RAC 節點上,在 /etc/security/limits.conf 文件中添加以下幾行代碼(下面的示例顯示軟件帳戶所有者 oracle 和 grid):

#vi /etc/security/limits.conf
grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536

8.2 在每個 Oracle RAC 節點上,在 /etc/pam.d/login 文件中添加或編輯下面一行內容(如果不存在此行):

#vi /etc/pam.d/login
session    required     pam_limits.so

8.3 修改內核參數

#vim /etc/sysctl.conf 
fs.aio-max-nr = 1048576  
fs.file-max = 6815744  
kernel.shmall = 1073741824  
kernel.shmmax = 4398046511104  
kernel.shmmni = 4096  
kernel.sem = 250 32000 100 128  
net.ipv4.ip_local_port_range = 9000 65500  
net.core.rmem_default = 262144  
net.core.rmem_max = 4194304  
net.core.wmem_default = 262144  
net.core.wmem_max = 1048576

使sysctl生效
#sysctl -p
8.3 安裝相關的開發工具包
#yum -y install glibc \
glibc-devel \
glibc-headers \
libaio \
libaio-devel \
libgcc \
libstdc++ \
libstdc++-devel \
make \
sysstat \
unixODBC \
unixODBC-devel \
pdksh \
compat-libcap1 \
compat-libstdc++-33 \
elfutils-libelf-devel \
gcc \
gcc-c++ \
smartmontools \
pdksh \
compat-libstdc \
cvuqdisk

9、RHEL 7 安裝oracle rac 11.2.0.4執行root.sh報錯ohasd failed to start
報錯原因:
因為RHEL 7使用systemd而不是initd運行進程和重啟進程,而root.sh通過傳統的initd運行ohasd進程。

9.1、 解決方法:
在RHEL 7中ohasd需要被設置為一個服務,在運行腳本root.sh之前。
以root用戶創建服務文件
#touch /usr/lib/systemd/system/ohas.service
#chmod 777 /usr/lib/systemd/system/ohas.service

9.2、 將以下內容添加到新創建的ohas.service文件中

#vim /usr/lib/systemd/system/ohas.service
[Unit]
Description=Oracle High Availability Services
After=syslog.target

[Service]
ExecStart=/etc/init.d/init.ohasd run >/dev/null 2>&1 Type=simple
Restart=always

[Install]
WantedBy=multi-user.target

9.3、以root用戶運行下面的命令
#systemctl daemon-reload
#systemctl enable ohas.service
#systemctl start ohas.service

9.4、查看運行狀態
#systemctl status ohas.service

五、安裝GI集群軟件

1、連接操作中的 Xmanager
#su - grid
$ cd /home/grid/
$ unzip p13390677_112040_Linux-x86-64_3of7.zip

#yum install xhost + -y
#su - grid
$ export DISPLAY=ip:0.0 //ip為你本機ip
$ xhost +
$ export LANG=en_US
$ ./runInstaller

若需要添加中文語言包
#mkdir -p /usr/share/fonts/zh_CN/TrueType
將zysong.ttf文件放至/usr/share/fonts/zh_CN/TrueType目錄中

2、安裝截圖
出來下面安裝界面,選擇最下面的Skip software updates,然後選next
技術分享圖片
選擇第一個安裝和配置集群環境,next
技術分享圖片
選擇第二個高級安裝,next
技術分享圖片
選上添加簡體中文,next
技術分享圖片
此處集群名自己取,SCAN名需要和/etc/hosts中的scan ip別名一致,端口默認,不選GNS,next
技術分享圖片
添加busrac2節點
技術分享圖片
點next(上面設置互信關系一定執行過,不然這一步如果next會出錯的)
技術分享圖片
或如果沒有設置互信關系的話可以點SSH Connectivity,輸入grid用戶的密碼(註兩點節點grid用戶與密碼要一致),在點setup,最後next
技術分享圖片
技術分享圖片
這裏只需要確認一下網絡接口,安裝向導已經把我們填寫,next(這裏是自動識別到你服務器上IP是哪段的)
技術分享圖片
存儲選擇:選擇ASM,next
技術分享圖片
這裏讓我們創建asm disk group,給一個名字“ORC",建立OCR盤,選擇3塊盤 next(這裏要求至少3塊盤的,這裏圖片只是參考的)
技術分享圖片
技術分享圖片
設置密碼:next
技術分享圖片
這裏選擇第二項不使用IPMI
技術分享圖片
給ASM指定不同的組,next
技術分享圖片
這裏安裝向導會幫你填寫集群軟件的安裝路徑,我們繼續next,這裏我們需要註意的是oracle_Home不能是oracle_base的子目錄
技術分享圖片
技術分享圖片
技術分享圖片
以root身份執行腳本:root用戶執行兩個腳本,一個節點執行完後再執行第二個節點(root.sh執行可能會長一點)
技術分享圖片
我們會看到這個報錯,其實這個問題我查看了mos知識庫,說的比較含糊,可以忽略這個錯誤,不影響我們的安裝和未來的使用
技術分享圖片
直接finish了,這裏我們集群軟件安裝完成。
技術分享圖片

六、安裝oracle 11.2.0.4軟件

#su - oracle
$ export DISPLAY=ip:0.0 //ip為你本機ip
$ xhost +
$ export LANG=en_US
$ cd database
$ ./runInstaller
在解壓database運行安裝腳本,這裏和安裝grid一樣,啟動安裝向導
我們不填寫mos賬號,又不聯網沒意義,點擊next,這裏我們還是在rac1節點上安裝
技術分享圖片
技術分享圖片
我們這裏只安裝數據庫軟件,點擊next
技術分享圖片
這裏選擇集群安裝方式,有以下3種選項之一:
Single instance database installation(單實例數據庫安裝) 這一選項允許僅在本地節點上安裝單實例數據庫軟件。
Oracle Real Application Cluster database installation(Oracle RAC數據庫安裝) 這一選項允許在集群中的選定節點上選擇和安裝Oracle RAC二進制文件。
Oracle RAC One Node database installation 這個選項在選定節點上安裝Oracle RAC One Node數據庫二進制文件。
在這個界面上,選擇Oracle Real Application Cluster database installation選項。
選擇“select All”,點擊next
技術分享圖片
還是選擇語言為”English/Simplified Chinese“,點擊next
技術分享圖片
選擇”Enterprise Edition“ 點擊”next“
技術分享圖片
這裏是oracle_base和oracle_home,點擊next
技術分享圖片
這個對應到組就可以了,繼續next
技術分享圖片
這一步會check你的安裝環境,我們只要配置參數正確就沒問題,這裏基本上都是succeeded,點擊next(導致這個錯誤的原因是在/etc/hosts中配置了SCAN的地址,嘗試ping這個地址信息,如果可以成功,則這個錯誤可以忽略。我嘗試ping scan ip可以ping通,所以暫時也就忽略了這個錯誤。)
技術分享圖片
summary一下,我們就可以‘install‘了
技術分享圖片
這裏安裝會比較快
技術分享圖片
出現如下錯誤
技術分享圖片
查看日誌報錯如下:
#vi /u01/oraInventory/logs/installActions2018-01-10_02-56-55PM.log

INFO: collect2: error: ld returned 1 exit status

INFO: make[1]: *** [/u01/app/oracle/product/11.2.0/dbhome_1/sysman/lib/emdctl] Error 1

INFO: make[1]: Leaving directory `/u01/app/oracle/product/11.2.0/dbhome_1/sysman/lib‘

INFO: make: *** [emdctl] Error 2

INFO: End output from spawned process.
INFO: ----------------------------------
INFO: Exception thrown from action: make
Exception Name: MakefileException
Exception String: Error in invoking target ‘agent nmhs‘ of makefile ‘/u01/app/oracle/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk‘. See ‘/u01/oraInventory/logs/installActions2018-01-10_02-56-55PM.log‘ for details.
Exception Severity: 1

解決方法:
vi $ORACLE_HOME/sysman/lib/ins_emagent.mk

$vi /u01/app/oracle/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk
搜索以下行:
$(MK_EMAGENT_NMECTL)
改變為:
$(MK_EMAGENT_NMECTL) -lnnz11

然後點擊:retry,可以。
技術分享圖片
完成後同樣也要執行一個腳本,也是要在root用戶下去執行,分別兩個節點上
技術分享圖片
至此數據庫軟件已安裝完成。
技術分享圖片

七、創建ASM磁盤組

1、在安裝GI集群軟件的時候我們就配置過asm磁盤,現在我們還有一個disk分區沒有加入到asm磁盤組中,我們通過asmca來實現
$ su - grid
$ export DISPLAY=ip:0.0
運行命令asmca,我們看到下面配置向導。這裏可以看到我們之前配置過的disk group,我們點擊create後
技術分享圖片
來到這裏,我們給disk group起個名字,選擇redundancy Normal,勾選data_1_1和data_1_2,我們ok一下
技術分享圖片
會有一個10秒的等待創建磁盤組,完成後提示成功
技術分享圖片
選擇redundancy Normal,勾選fra_1_1和fra_1_2,我們ok一下
技術分享圖片
技術分享圖片
這裏我們就能看到有三個disk group了!!!退出即可。。
技術分享圖片

八、配置oracle database

我們直接su - oracle,運行dbca命令來配置數據庫
$ export DISPLAY=IP:0.0
$ export LANG=en_US
$ dbca
技術分享圖片
來到如下界面後,我們選擇第一項集群模式,然後next
技術分享圖片
這個就不用考慮了,直接選擇create a database,繼續next
技術分享圖片
這個也是選擇general purpose,繼續next
技術分享圖片
配置類型選擇admin-managed,Global database name和sid相同為test,最下面我們選擇”select all“,然後next
技術分享圖片
這裏我們還是選擇默認推薦的配置,EM和amt都選擇配置,繼續next
技術分享圖片
把sys、system、dbsnmp都給一個相同的密碼,這裏你自己給吧!!然後next
技術分享圖片
這裏我們選擇用存儲類型為asm,使用omf管理數據文件。
技術分享圖片
我安裝數據庫勾選OEM的時候,這個地方就要輸入ASMSNMP密碼的,設置好後點ok
技術分享圖片
這裏選擇閃回恢復區,看個人情況
技術分享圖片
或是我們這裏不選擇閃回恢復區,我這裏就不配置了,以後手動改spfile吧!!
技術分享圖片
不選擇裝sample schemas
技術分享圖片
或是裝上sample schemas,以後就有數據可以測試玩一把了!! 繼續next
技術分享圖片
這裏我們字符集會有所設置,ZHS16GBK-GBK,國際字符集默認的就行。其它的選項卡沒有特殊配置,在以後都可以去改spfile,我們繼續next
技術分享圖片
技術分享圖片
技術分享圖片
這個是數據庫的存儲配置頁面,我們看一下控制文件等等都要開始安裝了,next
技術分享圖片
繼續finish
技術分享圖片
技術分享圖片
等待吧,這個也是比較久的,如果SSD和cpu比較給力,速度基本上10分鐘吧!!
技術分享圖片
安裝完後,點擊exit
技術分享圖片
我們就退出安裝配置向導了!!!

九、檢查

1、檢查crs資源狀態

[grid@redhat212 ~]$ crs_stat -t
Name           Type           Target    State     Host        
------------------------------------------------------------
ora.DATADB.dg  ora....up.type ONLINE    ONLINE    redhat212   
ora.FRA.dg     ora....up.type ONLINE    ONLINE    redhat212   
ora....ER.lsnr ora....er.type ONLINE    ONLINE    redhat212   
ora....N1.lsnr ora....er.type ONLINE    ONLINE    redhat212   
ora.ORC.dg     ora....up.type ONLINE    ONLINE    redhat212   
ora.asm        ora.asm.type   ONLINE    ONLINE    redhat212   
ora.cvu        ora.cvu.type   ONLINE    ONLINE    redhat212   
ora.gsd        ora.gsd.type   OFFLINE   OFFLINE               
ora....network ora....rk.type ONLINE    ONLINE    redhat212   
ora.oc4j       ora.oc4j.type  ONLINE    ONLINE    redhat212   
ora.ons        ora.ons.type   ONLINE    ONLINE    redhat212   
ora.orcl.db    ora....se.type ONLINE    ONLINE    redhat212   
ora....SM1.asm application    ONLINE    ONLINE    redhat212   
ora....12.lsnr application    ONLINE    ONLINE    redhat212   
ora....212.gsd application    OFFLINE   OFFLINE               
ora....212.ons application    ONLINE    ONLINE    redhat212   
ora....212.vip ora....t1.type ONLINE    ONLINE    redhat212   
ora....SM2.asm application    ONLINE    ONLINE    redhat214   
ora....14.lsnr application    ONLINE    ONLINE    redhat214   
ora....214.gsd application    OFFLINE   OFFLINE               
ora....214.ons application    ONLINE    ONLINE    redhat214   
ora....214.vip ora....t1.type ONLINE    ONLINE    redhat214   
ora.scan1.vip  ora....ip.type ONLINE    ONLINE    redhat212 

我們看到ora.gsd、ora.214(RAC2).gsd是offline狀態,其實兩個進程對我們的數據庫是沒有任何影響的,我們把他們打開就行了
2、查看節點的狀態

[grid@redhat212 ~]$ srvctl status nodeapps -n redhat212
VIP redhat212-vip is enabled
VIP redhat212-vip is running on node: redhat212
Network is enabled
Network is running on node: redhat212
GSD is disabled
GSD is not running on node: redhat212
ONS is enabled
ONS daemon is running on node: redhat212

3、開啟節點

[grid@redhat212 ~]$ srvctl enable nodeapps
PRKO-2415 : VIP is already enabled on node(s): redhat212,redhat214
PRKO-2416 : Network resource is already enabled.
PRKO-2417 : ONS is already enabled on node(s): redhat212,redhat214
開節點後在查看節點狀態
[grid@redhat212 ~]$ srvctl status nodeapps
VIP redhat212-vip is enabled
VIP redhat212-vip is running on node: redhat212
VIP redhat214-vip is enabled
VIP redhat214-vip is running on node: redhat214
Network is enabled
Network is running on node: redhat212
Network is running on node: redhat214
GSD is enabled
GSD is not running on node: redhat212
GSD is not running on node: redhat214
ONS is enabled
ONS daemon is running on node: redhat212
ONS daemon is running on node: redhat214

4、啟動節點

$ srvctl start nodeapps
PRKO-2421 : Network resource is already started on node(s): redhat212,redhat214
PRKO-2420 : VIP is already started on node(s): redhat212
PRKO-2420 : VIP is already started on node(s): redhat214
PRKO-2422 : ONS is already started on node(s): redhat212,redhat214

5、我們在來查看一下所有的組件是否online

$ crs_stat -t
Name           Type           Target    State     Host        
------------------------------------------------------------
ora.DATADB.dg  ora....up.type ONLINE    ONLINE    redhat212   
ora.FRA.dg     ora....up.type ONLINE    ONLINE    redhat212   
ora....ER.lsnr ora....er.type ONLINE    ONLINE    redhat212   
ora....N1.lsnr ora....er.type ONLINE    ONLINE    redhat212   
ora.ORC.dg     ora....up.type ONLINE    ONLINE    redhat212   
ora.asm        ora.asm.type   ONLINE    ONLINE    redhat212   
ora.cvu        ora.cvu.type   ONLINE    ONLINE    redhat212   
ora.gsd        ora.gsd.type   ONLINE   ONLINE   redhat212               
ora....network ora....rk.type ONLINE    ONLINE    redhat212   
ora.oc4j       ora.oc4j.type  ONLINE    ONLINE    redhat212   
ora.ons        ora.ons.type   ONLINE    ONLINE    redhat212   
ora.orcl.db    ora....se.type ONLINE    ONLINE    redhat212   
ora....SM1.asm application    ONLINE    ONLINE    redhat212   
ora....12.lsnr application    ONLINE    ONLINE    redhat212   
ora....212.gsd application    ONLINE   ONLINE    redhat212             
ora....212.ons application    ONLINE    ONLINE    redhat212   
ora....212.vip ora....t1.type ONLINE    ONLINE    redhat212   
ora....SM2.asm application    ONLINE    ONLINE    redhat214   
ora....14.lsnr application    ONLINE    ONLINE    redhat214   
ora....214.gsd application    ONLINE   ONLINE      redhat214          
ora....214.ons application    ONLINE    ONLINE    redhat214   
ora....214.vip ora....t1.type ONLINE    ONLINE    redhat214   
ora.scan1.vip  ora....ip.type ONLINE    ONLINE    redhat212 

我們這裏安裝完畢!!!

6、集群信息grid和oracle用戶都可以執行
查看集群狀態 crs_stat -t
查看集群資源信息 srvctl config database -d orcl -a
查看連接信息 srvctl config database -d orcl -t
技術分享圖片
查看ASM信息 srvctl config listener -n node2
技術分享圖片

十、關於RAC數據庫與監聽啟動與停止命令

在其中一個節點執行即可:
RAC啟動數據庫監聽,進入grid用戶來啟停端口
#su - grid
$ srvctl start|stop|status listener

RAC啟動數據庫,進入oracle用戶
#su - oracle
$ sqlplus sys/**** as sysdba
SQL> select status from v$instance; //查看數據庫狀態
SQL>startup; //啟動數據庫
SQL>shutdown immediate; //停數據庫

十一、添加表空間步驟:

ssh root 進入 192.168.1.212 
su  - oracle
source .bash_profile
sqlplus /nolog
connect /as sysdba

SQL>CREATE SMALLFILE TABLESPACE "TEST" DATAFILE ‘+DATADB/ORCL/DATAFILE/test001.dbf‘ SIZE 1024M AUTOEXTEND ON NEXT 500M MAXSIZE UNLIMITED LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;

添加TEST表空間中的存儲test001.dbf文件在ASM的+DATADB/ORCL/DATAFILE/目錄下,初始大小為1G,自動500MB擴展不舍限制。

番外

這裏還要強調一下11.2.0.1版本的一個bug,就是客戶端無法通過scan連接到數據庫解決方法如下:
[oracle@redhat212 ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Wed Mar 19 11:29:58 2014
Copyright (c) 1982, 2009, Oracle.  All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
SQL> show parameter local_listener

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
local_listener                       string      (DESCRIPTION=(ADDRESS_LIST=(AD
                                                 DRESS=(PROTOCOL=TCP)(HOST=redhat212
                                                 -vip)(PORT=1521))))
SQL> show parameter remot_listener;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
remote_dependencies_mode             string      TIMESTAMP
remote_listener                      string      clusterscan:1521
remote_login_passwordfile            string      EXCLUSIVE
remote_os_authent                    boolean     FALSE
remote_os_roles                      boolean     FALSE
result_cache_remote_expiration       integer     0
SQL> alter system set local_listener=‘(DESCRIPTION=(ADDRESS_LIST=(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.216)(PORT = 1521))))‘ sid=‘orcl1‘;    

System altered.

SQL> alter system set remote_listener=‘clusterscan:1521‘;

System altered.

SQL> alter system register;

System altered.

最後配置客戶端tnsname.ora文件指向scan listener

#tnsnames.ora.rac1 Network Configuration File: /u01/app/11.2.0/grid/network/admin/tnsnames.ora.rac1
#Generated by Oracle configuration tools.
TEST =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.216)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )

rhel7.4安裝oracle 11G 11.2.0.4.0 RAC