想必你們在學習ORACLE 11g時,都想搭建一個RAC的實驗環境。在搭建RAC實驗環境時,會碰到諸如IP怎麼規劃、虛擬機環境下怎麼共享磁盤、ASM磁盤建立,以及安裝過程當中會遇到這樣那樣的問題。搭建一個完整的RAC實驗環境下來,少則一天,多則一週,浪費很多時間和精力,一遍又一遍從新系統,遇到一個又一個問題,相信初學者,搭建過RAC的同窗都會有這樣的體會。css
此次把搭建RAC的步驟完整的整理出來,以供你們參考,相互交流學習,文中若有錯誤,歡迎你們斧正。 html
VMware workstationnode
CentOS release 6.10linux
FreeNAS 11.2c++
p13390677_112040_Linux-x86-64_1of7.zip sql
p13390677_112040_Linux-x86-64_2of7.zip 數據庫
p13390677_112040_Linux-x86-64_3of7.zip vim
VM主機的內存2G(官方說至少1.5G,安裝grid檢查仍會警告不夠用,安裝過程可能出現失敗,建議最少2G)。 centos
硬盤30G。 api
網絡適配器2個。
網卡添加2個, 11.2開始至少須要4種IP地址。 RAC的IP規劃以下:
Hostname |
Type |
IP Address |
Interface |
racnode1 |
Public IP |
192.168.153.101 |
eth0 |
racnode1-vip |
Virtual IP |
192.168.153.201 |
eth0:1 |
racnode1-pip |
Private IP |
10.0.0.101 |
eth1 |
racnode2 |
Public IP |
192.168.153.102 |
eth0 |
racnode2-vip |
Virtual IP |
192.168.153.202 |
eth0:1 |
racnode2-pip |
Private IP |
10.0.0.102 |
eth1 |
scan-cluster |
SCAN IP |
192.168.153.100 |
eth0 |
說明:
Oracle RAC環境下每一個節點都會有多個IP地址,分別爲公共IP(Public IP) 、私有IP(Private IP)和虛擬IP(Virtual IP):
私有IP(Public IP)
Private IP address is used only for internal clustering processing(Cache Fusion).
專用(私有)IP地址只用於內部羣集處理,如心跳偵測,服務器間的同步數據用。
虛擬IP(Virtual IP)
Virtual IP is used by database applications to enable fail over when one cluster node fails.
當一個羣集節點出現故障時,數據庫應用程序經過虛擬IP地址進行故障切換。
當一個羣集節點出現故障時,數據庫應用程序(包括數據庫客戶端)經過虛擬IP地址切換到另外一個無端障節點,另外一個功能是均衡負載。
公共IP(Public IP)
Public IP adress is the normal IP address typically used by DBA and SA to manage storage, system and database.
公共IP地址
正常的(真實的)IP地址,一般DBA和SA使用公共IP地址在來管理存儲、系統和數據庫。
監聽IP(SCAN IP)
從Oracle 11g R2開始,Oracle RAC網絡對IP地址有特殊要求,新增了加監聽IP地址(SCAN IP),因此從Oracle 11g R2開始Oracle RAC網絡至少須要4種IP地址(前面介紹三種IP地址)。在Oracle 11g R2以前,若是數據庫採用了RAC架構,在客戶端的tnsnames中,須要配置多個節點的鏈接信息,從而實現諸如負載均衡、Failover等RAC的特性。所以,當數據庫RAC集羣須要添加或刪除節點時,須要及時對客戶端機器的tns進行更新,以避免出現安全隱患。
在Oracle 11g R2中,爲了簡化該項配置工做,引入了SCAN(Single Client Access Name)的特性。該特性的好處在於,在數據庫與客戶端之間,添加了一層虛擬的服務層,就是所謂的SCAN IP以及SCAN IP Listener,在客戶端僅須要配置SCAN IP的tns信息,經過SCAN IP Listener,鏈接後臺集羣數據庫。這樣,不論集羣數據庫是否有添加或者刪除節點的操做,均不會對Client產生影響。
按前面的IP規劃,來設置每一個節點的網卡的IP地址。
[root@racnode1 ~]# cd /etc/sysconfig/network-scripts/ ,根據自身網卡進行配置,示例:
racnode1:
1.編輯eth0網卡: #vi ifcfg-eth0 ,內容以下: DEVICE=eth0 TYPE=Ethernet UUID=43b4bc9f-052e-45ec-bca2-dbaeeef39c20 ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=none HWADDR=00:0C:29:FC:92:1F IPADDR=192.168.153.101 PREFIX=24 GATEWAY=192.168.153.2 DNS1=61.139.2.69 DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no NAME="System eth0" |
2.建立eth0:1 #cp ifcfg-eth0 ifcfg-eth0:1 #vi ifcfg-eth0:1,內容以下: DEVICE=eth0:1 TYPE=Ethernet UUID=43b4bc9f-052e-45ec-bca2-dbaeeef39c20 ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=none HWADDR=00:0C:29:FC:92:1F IPADDR=192.168.153.201 PREFIX=24 GATEWAY=192.168.153.2 DNS1=61.139.2.69 DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no NAME="System eth0:1" |
3.編輯eth1網卡: #vi ifcfg-eth1,內容以下: DEVICE=eth1 TYPE=Ethernet BOOTPROTO=none IPADDR=10.0.0.101 PREFIX=24 GATEWAY=10.0.0.1 DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no NAME="System eth1" UUID=1655f5de-c00e-454c-aa8f-501bf70fd60c ONBOOT=yes HWADDR=00:0C:29:FC:92:29 |
racnode2:
1.編輯eth0網卡: #vi ifcfg-eth0 ,內容以下: DEVICE=eth0 TYPE=Ethernet UUID=643e30b9-906e-4051-b972-483da6a33203 ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=none IPADDR=192.168.153.102 PREFIX=24 GATEWAY=192.168.153.2 DNS1=61.139.2.69 DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no NAME="System eth0" HWADDR=00:0C:29:C9:A7:2D |
2.建立eth0:1 #cp ifcfg-eth0 ifcfg-eth0:1 #vi ifcfg-eth0:1,內容以下: DEVICE=eth0:1 TYPE=Ethernet UUID=643e30b9-906e-4051-b972-483da6a33203 ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=none IPADDR=192.168.153.202 PREFIX=24 GATEWAY=192.168.153.2 DNS1=61.139.2.69 DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no NAME="System eth0:1" |
3.編輯eth1網卡: #vi ifcfg-eth1,內容以下: DEVICE=eth1 HWADDR=00:0C:29:C9:A7:37 TYPE=Ethernet BOOTPROTO=none IPADDR=10.0.0.102 PREFIX=24 GATEWAY=10.0.0.1 DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no NAME=eth1 UUID=1207dcc1-7a39-45b0-b604-f38e5c90934d ONBOOT=yes LAST_CONNECT=1546520521 |
racnode一、racnode2配置同樣
# vim /etc/hosts ,修改內容以下:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
#racnode1
192.168.153.101 racnode1
192.168.153.201 racnode1-vip
10.0.0.101 racnode1-pip
#racnode2
192.168.153.102 racnode2
192.168.153.202 racnode2-vip
10.0.0.102 racnode2-pip
#scan-ip
192.168.153.100 scan-cluster
[root@localhost ~]# hostname racnode1 ,修改主機名
[root@localhost ~]# hostname racnode2 ,修改主機名
安裝RAC,須要創建相應的用戶和組。在racnode一、racnode2上進行用戶和組的建立:
Group Name |
Group ID |
Group Info |
Oracle User |
Grid User |
oinstall |
1000 |
Inventory Group |
Y |
Y |
dba |
1200 |
OSDBA Group |
Y |
|
oper |
1201 |
OSOPER Group |
Y |
|
asmadmin |
1300 |
OSASM |
Y |
|
asmdba |
1301 |
OSDBA for ASM |
Y |
Y |
asmoper |
1302 |
OSOPER for ASM |
Y |
root 下執行操做:建立組、用戶,並設置用戶密碼
groupadd -g 1000 oinstall
groupadd -g 1200 dba
groupadd -g 1201 oper
groupadd -g 1300 asmadmin
groupadd -g 1301 asmdba
groupadd -g 1302 asmoper
useradd -u 1100 -g oinstall -G asmadmin,asmdba,asmoper,oper,dba grid
useradd -u 1101 -g oinstall -G dba,oper,asmdba oracle
passwd grid
passwd oracle
在racnode一、racnode2上進行目錄的建立和受權:
root 下執行如下操做:
mkdir -p /u01/app/11.2.0/grid
mkdir -p /u01/app/grid
mkdir /u01/app/oracle
chown -R grid:oinstall /u01
chown oracle:oinstall /u01/app/oracle
chmod -R 775 /u01/
racnode1:
[grid@racnode1 ~]$ vim .bash_profile
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_SID=+ASM1
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/11.2.0/grid
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
umask 022
[grid@racnode1 ~]$ source .bash_profile
racnode2:
[grid@racnode2 ~]$ vim .bash_profile
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_SID=+ASM2
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/11.2.0/grid
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
umask 022
[grid@racnode2 ~]$ source .bash_profile
(2)配置用戶環境變量:oracle用戶
racnode1:
[oracle@racnode1 ~]$ vim .bash_profile
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_SID=orcl1
export ORACLE_UNQNAME=orcl
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
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
[oracle@racnode1 ~]$ source .bash_profile
racnode2:
[oracle@racnode2 ~]$ vim .bash_profile
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_SID=orcl2
export ORACLE_UNQNAME=orcl
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
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
[oracle@racnode2 ~]$ source .bash_profile
racnode1: ssh-keygen -t rsa #一路回車 ssh-keygen -t dsa #一路回車 |
racnode2: ssh-keygen -t rsa #一路回車 ssh-keygen -t dsa #一路回車 |
先racnode1、再racnode2上執行過上述兩條命令後,再回到racnode1再繼續執行下面的命令: cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys cat ~/.ssh/id_dsa.pub >>~/.ssh/authorized_keys ssh racnode2 cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys ssh racnode2 cat ~/.ssh/id_dsa.pub >>~/.ssh/authorized_keys scp ~/.ssh/authorized_keys racnode2:~/.ssh/authorized_keys chmod 600 .ssh/authorized_keys 兩個節點互相ssh經過一次 ssh racnode1 date ssh racnode2 date ssh racnode1-vip date ssh racnode2-vip date ssh racnode1-pip date ssh racnode2-pip date |
在racnode1和racnode2上都要執行
[root@ ~]# vim /etc/sysctl.conf ,在最後添加如下內容:
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
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 = 1048586
net.ipv4.tcp_wmem = 262144 262144 262144
net.ipv4.tcp_rmem = 4194304 4194304 4194304
[root@ ~]# sysctl -p 當即生效
[root@ ~]# vim /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
[root@ ~]# vim /etc/pam.d/login,在session required pam_namespace.so下面插入:
session required pam_limits.so
[root@ ~]# service ntpd status
[root@ ~]# chkconfig ntpd off
[root@ ~]# cp /etc/ntp.conf /etc/ntp.conf.bak
[root@ ~]# rm -rf /etc/ntp.conf
[root@ ~]# cp /etc/profile /etc/profile.bak
[root@ ~]# vim /etc/profile,在文件最後添加如下內容:
if [ $USER = "ORACLE" ] || [ $USER = "GRID" ];then
if [ $SHELL = "/bin/ksh" ];then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi
本次搭建:在VMware 虛擬機上安裝和配置FreeNAS 11.2,請自行下載所需版本。
【FreeNAS-11.2-RELEASE.iso】
下載地址:https://download.freenas.org/11.2/STABLE/RELEASE/x64/FreeNAS-11.2-RELEASE.iso
3.2.1 打開虛擬機電源。進入安裝界面,敲擊回車開始安裝。
3.2.2 選擇第一個"Install/Upgrade",點擊OK。
3.2.3 提示內存小於8G。此處做爲虛擬測試,可忽略此項錯誤提示。直接點擊Yes。
3.2.4 選擇安裝在哪一個磁盤上。此處選擇20G的磁盤做爲系統安裝盤。光標上下移動,空格鍵爲選擇。而後點擊OK。
3.2.5 此處爲警告,告知安裝位置及清空磁盤數據。直接點擊OK。
3.2.6 設置root的密碼。
3.2.7 選擇引導類型。此處選擇 BIOS 類型。
3.2.8 開始安裝。等待一段時間後,即安裝完畢。
3.2.9 安裝完畢後,彈出提示告知安裝完畢。直接點擊OK。
3.2.10 安裝完畢後須要重啓。選擇第三個"Reboot System"。點擊OK。
3.2.11 系統在將重啓後,繼續安裝一些組件。請等待最終安裝完畢。
3.2.12 安裝完畢後,以下圖。參照提示,可根據實際須要去修改配置。
管理地址也已列出。如:http://192.168.153.230
至此,FreeNAS 系統安裝完畢。
3.3.1 瀏覽器登陸: 默認用戶爲root , 密碼爲安裝系統時所設置的密碼。
3.3.2 登陸後以下,根據實際須要進行配置。
3.3.3 根據oracle 11gR2 RAC環境所需的共享存儲,進行配置。
第1步、 配置iscsi服務,打開iscsi並開機勾選自啓動。
第2步、 依次進入菜單: Sharing – Block(ISCSI),設置Target Global Configuration。
Base Name 可自定義,此處默認。其餘可不填寫。 點擊SAVE保存。
第3步、 設置 Portals :
點擊ADD添加,填寫IP地址和端口號,而後SAVE保存。
設置後,以下圖。
第4步、設置 Initiators :
點擊ADD添加,Initiators和Authorized Networks 都選擇 ALL ,點擊SAVE保存。
設置後,以下圖。
第5步、 設置 Authorized Access :
點擊ADD添加,此處Group Id、User和Sercret的值能夠任意填寫,此處分別設置爲一、grid和gridasm ,並點擊SAVE保存。
設置後,以下圖。
第6步、設置 Targets :
Target Name 可隨意填寫,此處爲 asm 。選擇 Portal Group ID 、Initiator Group ID ,便是上面所設置的 Group ID。此處爲1。其餘選項默認便可。 點擊SAVE保存。
設置後,以下圖。
第7步、設置 Extents :
點擊ADD添加,設置Extent name名稱;選擇Extent type,分爲磁盤或者分區,此處選擇磁盤。選擇磁盤da一、da二、da三、da4等。 選擇LUN RPM磁盤轉速。其餘默認便可。點擊SAVE保存。
依次將所需添加的設備添加完畢後,以下圖所示。
第8步、設置Associated Targets :
點擊ADD添加,選擇Target、選擇Extent,便是上步設置的asm 、crs、data一、data二、fra等。
設置後,以下圖。
racnode各節點,查看系統是否安裝iscsi軟件包,以centos6.x爲例
[root@ ~]# rpm -qa | grep iscsi
iscsi-initiator-utils-6.2.0.873-27.el6_9.x86_64
如未安裝,請執行 yum install -y iscsi-initiator-utils 進行安裝客戶端。
查找iSCSI設備,發現共享存儲:
[root@ ~]# iscsiadm -m discovery -t sendtargets -p 192.168.153.230
192.168.153.230:3260,1 iqn.2005-10.org.freenas.ctl:asm
# fdisk /dev/sdb
根據提示輸入 n、 p、 w 等
# 同理,重複步驟對 sdc sdd sde 完成分區。
分區完畢後,fdisk -l查看以下:
UEK能夠從http://public-yum.oracle.com/下載安裝:
http://www.rpmfind.net/linux/centos/6.10/updates/x86_64/Packages/kmod-oracleasm-2.0.8-16.el6_10.x86_64.rpm
http://download.oracle.com/otn_software/asmlib/oracleasmlib-2.0.12-1.el6.x86_64.rpm
http://public-yum.oracle.com/repo/OracleLinux/OL6/latest/x86_64/getPackage/oracleasm-support-2.1.11-2.el6.x86_64.rpm
[root@ ~]# yum install kmod-oracleasm
[root@ ~]# rpm -ivh oracleasmlib-2.0.12-1.el6.x86_64.rpm
[root@ ~]# rpm -ivh oracleasm-support-2.1.8-1.el6.x86_64.rpm
1.6.1 配置並裝載ASM核心模塊,在一個節點操做便可。
[root@racnode1 ~]# oracleasm configure -i ,根據提示輸入:
Configuringthe Oracle ASM library driver.
Thiswill configure the on-boot properties of the Oracle ASM library
driver. The following questions will determinewhether the driver is
loadedon boot and what permissions it will have. The current values
willbe shown in brackets ('[]'). Hitting<ENTER> without typing an
answerwill keep that current value. Ctrl-Cwill abort.
Defaultuser to own the driver interface []: grid
Defaultgroup to own the driver interface []: asmadmin
StartOracle ASM library driver on boot (y/n) [n]: y
Scanfor Oracle ASM disks on boot (y/n) [y]: y
WritingOracle ASM library driver configuration: done
[root@racnode1 ~]# oracleasm init
Creating/dev/oracleasm mount point: /dev/oracleasm
Loadingmodule "oracleasm": oracleasm
MountingASMlib driver filesystem: /dev/oracleasm
1.6.2 建立ASM磁盤
[root@racnode1 ~]# oracleasm createdisk CRSVOL1 /dev/sdb1
Writingdisk header: done
Instantiatingdisk: done
[root@racnode1 ~]# oracleasm createdisk DATAVOL1 /dev/sdc1
Writingdisk header: done
Instantiatingdisk: done
[root@racnode1 ~]# oracleasm createdisk DATAVOL2 /dev/sdd1
Writingdisk header: done
Instantiatingdisk: done
[root@racnode1 ~]# oracleasm createdisk FRAVOL1 /dev/sde1
Writingdisk header: done
Instantiatingdisk: done
[root@racnode1 ~]# oracleasm listdisks
CRSVOL1
DATAVOL1
DATAVOL2
FRAVOL1
使用oracleasm-discover查找ASM磁盤,運行該命令查看是否能找到剛建立的4個磁盤。
[root@racnode1 ~]# oracleasm-discover
UsingASMLib from /opt/oracle/extapi/64/asm/orcl/1/libasm.so
[ASMLibrary - Generic Linux, version 2.0.4 (KABI_V2)]
Discovereddisk: ORCL:CRSVOL1 [2096753 blocks (1073537536 bytes), maxio 512]
Discovereddisk: ORCL:DATAVOL1 [41940960 blocks (21473771520 bytes), maxio 512]
Discovereddisk: ORCL:DATAVOL2 [41940960 blocks (21473771520 bytes), maxio 512]
Discovereddisk: ORCL:FRAVOL1 [62912480 blocks (32211189760 bytes), maxio 512]
使用oracleasm scandisks 掃描asm磁盤
[root@racnode1 ~]# oracleasm scandisks
Reloading disk partitions: done
Cleaning any stale ASM disks...
Scanning system for ASM disks...
[root@racnode1 ~]# yum -y install binutils compat-libstdc++ elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers kernel-headers ksh libaio libaio-devel libgcc libgomp libstdc++ libstdc++-devel numactl-devel sysstat unixODBC unixODBC-devel compat-libstdc++* libXp
[root@racnode1 ~]# rpm -ivh pdksh-5.2.14-30.x86_64.rpm (這個包須要下載)
[root@racnode2 ~]# 同上
請使用grid用戶 ,racnode一、racnode2都要執行一下這個腳本。
[grid@racnode1 ~]$ cd /opt/grid/ 切換到軟件上傳目錄
[grid@racnode1 grid]$ ./runcluvfy.sh stage -pre crsinst -n racnode1,racnode2 -fixup -verbose
結果如:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Performing pre-checks for cluster services setup
Checking node reachability...
Check: Node reachability from node "racnode1"
Destination Node Reachable?
------------------------------------ ------------------------
racnode1 yes
racnode2 yes
Result: Node reachability check passed from node "racnode1"
Checking user equivalence...
Check: User equivalence for user "grid"
Node Name Status
------------------------------------ ------------------------
racnode2 passed
racnode1 passed
Result: User equivalence check passed for user "grid"
(中間部分省略粘貼)
(中間部分省略粘貼)
(中間部分省略粘貼)
Checking the file "/etc/resolv.conf" to make sure only one of domain and search entries is defined
File "/etc/resolv.conf" does not have both domain and search entries defined
Checking if domain entry in file "/etc/resolv.conf" is consistent across the nodes...
domain entry in file "/etc/resolv.conf" is consistent across nodes
Checking if search entry in file "/etc/resolv.conf" is consistent across the nodes...
search entry in file "/etc/resolv.conf" is consistent across nodes
Checking DNS response time for an unreachable node
Node Name Status
------------------------------------ ------------------------
racnode2 passed
racnode1 passed
The DNS response time for an unreachable node is within acceptable limit on all nodes
File "/etc/resolv.conf" is consistent across nodes
Check: Time zone consistency
Result: Time zone consistency check passed
Pre-check for cluster services setup was successful.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
確保兩個節點racnode一、racnode2都已經啓動,而後以grid用戶登陸,開始Oracle Grid Infrastructure安裝 【請在圖形界面下】
[grid@racnode1 ~]$ cd /opt/grid/ 切換到軟件上傳目錄
[grid@racnode1 grid]$ ./runInstaller
第1步:選擇"skip software updates".
第2步:默認便可。選擇"Install and Configure Oracle Grid Infrastructure for a Cluster".
第3步:選擇高級安裝
第4步: 選擇English
第5步:去掉Configure GNS,設置Cluster Name,Scan Name,ScanPort:1521.
注意:將SCAN Name與/etc/hosts文件一致。 咱們這裏應是: scan-cluster ,Cluster Name能夠自定義。
第6步:選擇Add,添加節點
Public Hostname輸入racnod2, Virtual Hostname輸入racnode2-vip
最終結果以下:
驗證ssh等效性
1) 若是前置未設置ssh等效性:選擇ssh connectivty,輸入OS password:grid(grid用戶密
碼),點擊setup,等待便可,成功則下一步。而後點擊"T est".
2) 若是前面已經設置了ssh等效性:能夠點擊"T est",或直接下一步
點擊"setup"後
點擊"OK"
點擊"Test"
點擊OK
若是點擊"Next",出現[INS-40912]錯誤:
【這個問題的解答】這是個虛擬IP,當前你應該ping不通。目前你還沒安裝,暫時不會綁到網卡上。
這個應該在RAC安裝完,啓動成功後,纔會隨機往兩臺機器上的其中一個網卡綁定。
當其中一臺機器壞了,自動飄移到另外一臺。
【解決辦法】ifconfig eth0:1 down 或者 ifdown eth0:1 而後,點擊"Next"
第7步:選擇網卡2:eth1,InterfaceType: Private,點擊"Next"
第8步:默認便可."Oracle Automatic Storage Management(Oracle ASM)"
第9步:建立ASM磁盤組。若未發現磁盤,則點擊change Discovery Path,輸入磁盤所在地址。
第10步:設置密碼,若是密碼設置相對簡單,會彈出提示,直接繼續便可。
第11步—第14步:默認便可.
安裝前檢查,有些警告提示能夠忽略。 若有其它錯誤,根據具體錯誤提示進行分析配置。點下一步出現。
第15步: 默認便可,點擊 install 開始安裝。
第16步:安裝進程。
提示執行腳本。
必定要以root賬戶執行,而且不能同時執行。
先執行racnode1 /u01/app/oraInventory/orainstRoot.sh,
再執行racnode2 /u01/app/oraInventory/orainstRoot.sh
而後,先執行racnode1 /u01/app/11.2.0/grid/root.sh
再執行 racnode2 /u01/app/11.2.0/grid/root.sh
第17步:安裝完畢,點擊close。 至此rac軟件安裝完畢。接下來要進行驗證。
以racnode1爲例粘貼結果,racnode2執行結果此處不粘貼了。
[root@racnode1 ~]# su - grid
[grid@racnode1 ~]$ crsctl check crs
CRS-4638: Oracle High Availability Services is online
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
檢查Clusterware資源:[grid@racnode1 ~]$ crs_stat -t -v
Name Type R/RA F/FT Target State Host
----------------------------------------------------------------------
ora.CRS.dg ora....up.type 0/5 0/ ONLINE ONLINE racnode1
ora.DATA.dg ora....up.type 0/5 0/ ONLINE ONLINE racnode1
ora.FRA.dg ora....up.type 0/5 0/ ONLINE ONLINE racnode1
ora....ER.lsnr ora....er.type 0/5 0/ ONLINE ONLINE racnode1
ora....N1.lsnr ora....er.type 0/5 0/0 ONLINE ONLINE racnode1
ora.asm ora.asm.type 0/5 0/ ONLINE ONLINE racnode1
ora.cvu ora.cvu.type 0/5 0/0 ONLINE ONLINE racnode2
ora.gsd ora.gsd.type 0/5 0/ OFFLINE OFFLINE
ora....network ora....rk.type 0/5 0/ ONLINE ONLINE racnode1
ora.oc4j ora.oc4j.type 0/1 0/2 ONLINE ONLINE racnode2
ora.ons ora.ons.type 0/3 0/ ONLINE ONLINE racnode1
ora....SM1.asm application 0/5 0/0 ONLINE ONLINE racnode1
ora....C1.lsnr application 0/5 0/0 ONLINE ONLINE racnode1
ora. racnode1.gsd application 0/5 0/0 OFFLINE OFFLINE
ora. racnode1.ons application 0/3 0/0 ONLINE ONLINE racnode1
ora. racnode1.vip ora....t1.type 0/0 0/0 ONLINE ONLINE racnode1
ora....SM2.asm application 0/5 0/0 ONLINE ONLINE racnode2
ora....C2.lsnr application 0/5 0/0 ONLINE ONLINE racnode2
ora. racnode2.gsd application 0/5 0/0 OFFLINE OFFLINE
ora. racnode2.ons application 0/3 0/0 ONLINE ONLINE racnode2
ora. racnode2.vip ora....t1.type 0/0 0/0 ONLINE ONLINE racnode2
ora.scan1.vip ora....ip.type 0/0 0/0 ONLINE ONLINE racnode1
檢查集羣節點
[grid@racnode1 ~]$ olsnodes -n
racnode1 1
racnode2 2
檢查兩個節點上的Oracle TNS監聽器進程:
[grid@racnode1 ~]$ ps -ef|grep lsnr|grep -v 'grep'
grid 94448 1 0 15:04 ? 00:00:00 /u01/app/11.2.0/grid/bin/tnslsnr LISTENER -inherit
grid 94485 1 0 15:04 ? 00:00:00 /u01/app/11.2.0/grid/bin/tnslsnr LISTENER_SCAN1 -inherit
[grid@racnode1 ~]$ ps -ef|grep lsnr|grep -v 'grep'|awk '{print $9}'
LISTENER
LISTENER_SCAN1
確認針對Oracle Clusterware文件的Oracle ASM功能:
[grid@racnode1 ~]$ srvctl status asm -a
ASM is running on racnode1,racnode2
ASM is enabled.
檢查Oracle集羣註冊表(OCR):
[grid@racnode1 ~]$ ocrcheck
Status of Oracle Cluster Registry is as follows :
Version : 3
Total space (kbytes) : 262120
Used space (kbytes) : 2624
Available space (kbytes) : 259496
ID : 1555425658
Device/File Name : +CRS
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@racnode1 ~]$ crsctl query css votedisk
## STATE File Universal Id File Name Disk group
-- ----- ----------------- --------- ---------
1. ONLINE 0d90b0c368684ff5bff8f2094823b901 (ORCL:CRSVOL1) [CRS]
Located 1 voting disk(s).
確保兩個節點racnode一、racnode2都已經啓動,而後以oracle用戶登陸,安裝請在圖形界面下
進入軟件安裝包的目錄
[oracle@racnode1 database]$ ./runInstaller
第1步:不勾選I wish to …… ,而後點next。
第2步:選擇跳過軟件更新,點擊next。
第3步: 選擇僅安裝數據庫軟件,點擊next。
第4步: 選擇所有節點,並測試ssh互信。
點擊SSH Connectivity… ,輸入oracle的密碼,點擊test 測試經過以下提示:
點擊OK,而後點擊next。
第5步: 選擇語言
第6步: 選擇安裝的數據庫類型,此處選擇企業版。
第7步: 默認便可
第8步: 默認便可
第9步: 安裝前檢查,此時檢查結果有一條,該條忽略便可。勾選ignore all。點擊next。若有其它報錯,根據實際狀況進行排查處理。
第10步: 默認便可,點擊 install 開始安裝
第11步: 安裝過程當中須要執行腳本
先在racnode1執行,執行完畢以後,再在racnode2中執行。
也能夠在安裝ORACLE軟件以前建立ASM磁盤組。下面開始建立ASM磁盤組。
命令 asmca 啓動圖形配置 。 點擊Create ,建立磁盤組。
Disk Group Name 命名爲DATA;
Redundancy選擇 External (None);;
disks勾選 DATAVOL一、DATAVOL2;
點擊OK,提示建立成功。
同理,建立FRA組。 另外最初安裝grid的時候已經配置過CRS。最終結果以下:
其中,點擊Mount ALL ,掛載全部磁盤。點擊Yes。確認掛載。
第1步: 切換到oracle用戶,以oracle用戶運行命令 dbca 。彈出開始畫面。
選擇Oracle Real Application Cluster(RAC)database,點擊next。
選擇Create a Database,建立一個數據庫。點擊next。
第2步: 選擇General Purpose or Transaction Processing
第3步:選擇Configuration Type:Admin-Managed. Global Database Name:testdb. SID Prefix:testdb.
點擊"Select ALL". 這裏必定要選擇所有節點.
第4步: 配置Enterprise Managert 和 Automatic Maintenance Tasks.
第5步:設置密碼。"Use the Same Administrative Password for All Accounts"
提示密碼過於簡單,點擊Yes 。
第6步:在"Databse Area",點擊"Browse",選擇+DATA.
要求設置ASMSNMP密碼
第7步:設置FRA和歸檔。定義快速恢復區(FRA)大小時,通常用整個卷的大小的90%
點擊"Browse",選擇 FRA
第8步:設置Sample Schemas和Custom Scripts.通常不勾選"Sample Schemas"
第9步:設置內存、SGA和PGA、字符集、鏈接模式。
選擇Typical,SGA and PGA,先用默認的744MB. 後面根據狀況也能夠調整。
第10步:點擊"Next"
第11步:開始建立數據庫。選擇"Create Database"
建立過程當中。
彈出下圖,提示Database creation complete.和相應的提示信息。
點Exit,退出。數據庫建立完成。
RAC安裝到此完成。
不少說法:Oracle 自身bug, 若是啓動失敗 root先執行
/bin/dd if=/var/tmp/.oracle/npohasd of=/dev/null bs=1024 count=1
用oracl用戶執行srvctl命令
語法:srvctl stop database -d dbname [-o immediate]
做用:能夠一次性關閉dbname的全部實例
[oracle@racnode1 ~]$ srvctl stop database -d racdb -中止全部節點上的實例
而後查看狀態:
[oracle@racnode1 ~]$ srvctl status database -d racdb
Instance racnode1 is not running on node racnode1
Instance racnode2 is not running on node racnode2
[root@racnode1 oracle]# cd /u01/grid/11.2.0/grid/bin
[root@racnode1 bin]# ./crsctl stop has -f
[root@racnode1 bin]# ./crsctl stop crs -f
本命令只能關閉當前節點的CRS服務,所以須要在RAC的全部節點上執行,啓動也同樣。has與crs等同
[root@racnode1 oracle]# cd /u01/grid/11.2.0/grid/bin
[root@racnode1 bin]# ./crsctl stop cluster ----中止本節點集羣服務
[root@racnode1 bin]# ./crsctl stop cluster -all ---中止全部節點服務
也能夠以下控制所停節點:
[root@racnode1 bin]# crsctl stop cluster -n racnode1 racnode2
CRS-2677: Stop of 'ora.cssd' on 'racnode1' succeeded
CRS-2677: Stop of 'ora.cssd' on 'racnode2' succeeded
。。。。。。。。。。。省略日誌輸出。。。。。。。。。。。。。。
你若是想一條命令把全部的進程所有中止可使用上述命令。若是不指定參數的話對當前節點有效,若是指定參數的話對相關參數節點有效。
[root@racnode1 bin]# crsctl check cluster
詳細輸出
[root@racnode1 bin]# crs_stat -t -v
只檢查本節點的集羣狀態
[root@racnode1 bin]# crsctl check crs
單一節點啓動
[root@racnode2 ~]# crsctl start has
[root@racnode2 ~]# crsctl start crs
[root@racnode2 ~]# crsctl check crs
CRS-4638: Oracle High Availability Services is online
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
全部節點啓動
[root@racnode1 bin]# crsctl start cluster -n racnode1 racnode2
CRS-4123: Oracle High Availability Services has been started.
[root@racnode1 bin]# crsctl start cluster -all
[root@racnode2 ~]# crsctl check cluster
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
此命令會在後臺啓動全部RAC CRS相關進程
[root@racnode2 ~]# crs_stat -t -v
CRS-0184: Cannot communicate with the CRS daemon.
由於start has啓動的crs進程比較多所以會啓動的比較慢,個人機器等待了5分鐘,在沒有徹底啓動成功以前會報上述錯誤,須要耐心等待一段時間後執行下面命令便可查看到全部CRS相關進程服務已經啓動。
[root@racnode2 ~]# crs_stat -t -v
Name Type R/RA F/FT Target State Host
----------------------------------------------------------------------
ora.DATA.dg ora....up.type 0/5 0/ ONLINE ONLINE racnode1
ora....ER.lsnr ora....er.type 0/5 0/ ONLINE ONLINE racnode1
ora....N1.lsnr ora....er.type 0/5 0/0 ONLINE ONLINE racnode2
ora....N2.lsnr ora....er.type 0/5 0/0 ONLINE ONLINE racnode1
ora....N3.lsnr ora....er.type 0/5 0/0 ONLINE ONLINE racnode1
ora.asm ora.asm.type 0/5 0/ ONLINE ONLINE racnode1
ora.cvu ora.cvu.type 0/5 0/0 ONLINE ONLINE racnode1
ora.gsd ora.gsd.type 0/5 0/ OFFLINE OFFLINE
ora....network ora....rk.type 0/5 0/ ONLINE ONLINE racnode1
ora.oc4j ora.oc4j.type 0/1 0/2 ONLINE ONLINE racnode1
ora.ons ora.ons.type 0/3 0/ ONLINE ONLINE racnode1
ora....SM1.asm application 0/5 0/0 ONLINE ONLINE racnode1
ora....C1.lsnr application 0/5 0/0 ONLINE ONLINE racnode1
ora.racnode1.gsd application 0/5 0/0 OFFLINE OFFLINE
ora.racnode1.ons application 0/3 0/0 ONLINE ONLINE racnode1
ora.racnode1.vip ora....t1.type 0/0 0/0 ONLINE ONLINE racnode1
ora....SM2.asm application 0/5 0/0 ONLINE ONLINE racnode2
ora....C2.lsnr application 0/5 0/0 ONLINE ONLINE racnode2
ora.racnode2.gsd application 0/5 0/0 OFFLINE OFFLINE
ora.racnode2.ons application 0/3 0/0 ONLINE ONLINE racnode2
ora.racnode2.vip ora....t1.type 0/0 0/0 ONLINE ONLINE racnode2
ora....ry.acfs ora....fs.type 0/5 0/ ONLINE ONLINE racnode1
ora.scan1.vip ora....ip.type 0/0 0/0 ONLINE ONLINE racnode2
ora.scan2.vip ora....ip.type 0/0 0/0 ONLINE ONLINE racnode1
ora.scan3.vip ora....ip.type 0/0 0/0 ONLINE ONLINE racnode1
說明:
英文解釋
ora.gsd is OFFLINE by default ifthere is no 9i database in the cluster.
ora.oc4j is OFFLINE in 11.2.0.1 as DatabaseWorkload Management(DBWLM) is unavailable. these can be ignored in11gR2 RAC.
中文解釋
ora.gsd是集羣服務中用於與9i數據庫進行通訊的一個進程,在當前版本中爲了向後兼容才保存下來,狀態爲OFFLINE不影響CRS的正常運行與性能,咱們忽略便可
ora.oc4j是在11.2.0.2以上版本中有效的服務進程,用於DBWLM的資源管理,所以在11.2.0.1如下版本並無使用
oracl用戶執行srvctl命令:
語法:srvctl start|stop|status database -d dbname [-o immediate]
做用:能夠一次性啓動dbname的全部實例
[oracle@racnode1 ~]$ srvctl start database -d racdb -啓動全部節點上的實例
而後查看狀態:
[oracle@racnode1 ~]$ srvctl status database -d racdb
在root下執行命令,請配置環境變量,可省略完整路徑。
export ORACLE_HOME=/u01/grid/product/11gr2
export PATH=$ORACLE_HOME/bin:$PATH
(1).詳細輸出資源全名稱並檢查狀態
crsctl status resource -t
crsctl status resource
(2).經常使用srvctl命令
指定dbname上某個實例
srvctl start|stop|status instance -d <dbname> -i <instance_name>
(3).顯示RAC下全部實例配置與狀態
srvctl status|config database -d <dbname>
(4).顯示全部節點的應用服務(VIP,GSD,listener,ONS)
srvctl start|stop|status nodeapps -n<node_name>
(5).ASM進程服務管理
srvctl start|stop|status|config asm -n <nodename>[-i <asm_inst_name>] [-o<oracle_home>]
srvctl config asm -a
srvctl status asm -a
(6).能夠獲取全部的環境信息:
srvctl getenv database -d <dbname> [-i<instance_name>]
(7).設置全局環境和變量:
srvctl setenv database -d<dbname> -t LANG=en
(8).在OCR中刪除已有的數據庫信息
srvctl remove database -d <dbname>
(9).向OCR中添加一個數據庫的實例:
srvctl add instance -d <dbname> -i<instance_name> -n <node1>
srvctl add instance -d <dbname> -i<instance_name> -n <node2>
(10).檢查監聽的狀態
srvctl status listener
srvctl config listener -a
(11)SCAN配置信息
srvctl config scan
(12)SCAN listener狀態信息
srvctl status scan
小結:crsctl命令是一個集羣級別命令,能夠對全部集羣資源進行統一啓動、中止等管理操做
srvctl命令是一個服務級別命令,能夠對單一服務資源進行統一啓動、中止等管理操做
查看數據庫實例
#su - oracle
[oracle@racnode1 ~]$ sqlplus / as sysdba
SQL> select instance_name,status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
orcl2 OPEN
查看datafile、logfile、controfile
SQL> select TS#,STATUS,NAME from v$datafile;
TS# STATUS NAME
---------- --------------------- ---------------------------------
0 SYSTEM +DATA/testdb/datafile/system.256.911229287
1 ONLINE +DATA/orcl/datafile/sysaux.257.911229291
2 ONLINE +DATA/ orcl /datafile/undotbs1.258.911229293
4 ONLINE +DATA/ orcl /datafile/users.259.911229293
6 ONLINE +DATA/ orcl /datafile/example.264.911229559
5 ONLINE +DATA/ orcl /datafile/undotbs2.265.911230235
查看logfile:
SQL> desc v$logfile;
Name Type Nullable Default Comments
--------------------- ------------- -------- ------- --------
GROUP# NUMBER Y
STATUS VARCHAR2(7) Y
TYPE VARCHAR2(7) Y
MEMBER VARCHAR2(513) Y
IS_RECOVERY_DEST_FILE VARCHAR2(3) Y
SQL> select GROUP#,STATUS,MEMBER from v$logfile;
GROUP# STATUS MEMBER
---------- ------------------------------------------ -------
2 +FRA/orcl/onlinelog/group_2.262.997887279
2 +CRS/orcl/onlinelog/group_2.258.997887279
1 +FRA/orcl/onlinelog/group_1.261.997887277
1 +CRS/orcl/onlinelog/group_1.257.997887277
3 +FRA/orcl/onlinelog/group_3.265.997887443
3 +CRS/orcl/onlinelog/group_3.259.997887443
4 +FRA/orcl/onlinelog/group_4.266.997887443
4 +CRS/orcl/onlinelog/group_4.260.997887445
8 rows selected
查看controlfile:
SQL> desc v$controlfile;
Name Type Nullable Default Comments
--------------------- ------------- -------- ------- --------
STATUS VARCHAR2(7) Y
NAME VARCHAR2(513) Y
IS_RECOVERY_DEST_FILE VARCHAR2(3) Y
BLOCK_SIZE NUMBER Y
FILE_SIZE_BLKS NUMBER Y
SQL> select NAME,STATUS from v$controlfile;
NAME STATUS
------------------------------------------------ -------
+FRA/orcl/controlfile/current.260.997887273
+CRS/orcl/controlfile/current.256.997887273
查看ASM實例
[grid@racnode1 ~]$ sqlplus / as sysasm
SQL> select instance_name,status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
+ASM1 STARTED
[grid@racnode2 ~]$ sqlplus / as sysasm
SQL> select instance_name,status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
+ASM2 STARTED
[grid@racnode1 ~]$ sqlplus / as sysasm
查看集羣負載狀況:
SQL> select inst_id, count(*) from gv$session group by inst_id;
INST_ID COUNT(*)
---------- ----------
1 41
2 39
查看用戶在哪一個節點:
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
orcl2
查看RAC集羣名稱:
[root@racnode1 ~]# /u01/app/11.2.0/grid/bin/cemutlo -n
racnode-cluster
其餘:crs 等同 has ["crsctl start crs" = "crsctl start has"]
/u01/app/11.2.0/grid/bin/crsctl start crs -- root啓動集羣實例
/u01/app/11.2.0/grid/bin/crsctl stop crs -- root關閉集羣實例
srvctl start database -d orcl -- oracle啓動數據庫
srvctl stop database -d orcl -- oracle關閉數據庫
crsctl status resource -t -- root、grid 查看資源狀態
/u01/app/11.2.0/grid/bin/crs_stat -t -v -- oracle10g查看資源命令,11g仍可用。
asmcmd經常使用命令格式
[grid@racnode1 ~]$ asmcmd
ASMCMD> help
查看asm磁盤組
[grid@racnode1 ~]$ asmcmd -p
ASMCMD [+] > exit
若是沒有配置DNS(只在hosts文件裏標明),檢測/etc/resolv.conf會失敗的,能夠忽略該警告,直接 ignore 便可,不影響安裝,或配置dns服務,從新檢測。
ssh互信配置
忽略便可
這個警告,點擊"more details"查看以下:
選擇Ignore All.
找不到共享庫。
racnode1:
# yum install compat-libcap1*
racnode2:
# yum install compat-libcap1*
而後, racnode1 執行root.sh
而後, racnode2 執行root.sh
提示:INS-32091,Software Installation was successful.But some configuration assistants failed,were
cancelled or skipped. Are you sure you want to continue?
選擇"Yes"。
Oracle安裝過程檢查報錯
解決:以grid用戶給asmsnmp設置密碼。而後再點擊上圖的"Retry"。