相信在大家運維的過程中,甲方爸爸的要求那是多種多樣的,掌握些經常用到的技術還是必要的,本篇教學是本人在一系列痛苦的煎熬後寫出了這篇較為詳細的ORACLE 11G RAC文件,根據本篇教程本人也是部署了很多的生產環境。閒話少敘,接下來就是正文了。。。。。
本篇涉及到的oracle grid 等軟體包在百度雲上,連結直接就是下面這個。
連結:https://pan.baidu.com/s/1uty4loIDZlKdi5rRIbIolA
提取碼:n5hw
一,硬體環境
1,1,中標麒麟作業系統、兩臺虛擬主機。
1,2,IP地址規劃:管理ip(ip) 2個 使用者管理叢集使用的ip
私有ip (privip) 2個 用於雙節點間通訊
業務ip(vip) 2個 業務ip,通過訪問scanip後訪問vip
訪問ip(scanip)1個 對外表現為業務ip
1.3,硬碟規劃: 一個仲裁磁碟 OCR_VOTE(可選則三個)
資料磁碟 DATA (tyyw搭建時劃分了兩個data在asmca介面組成一個data組)
閃回磁碟 FRA (700G以下就可以)
1.4 環境配置
物理主機需要進行bond繫結 最好為4塊網絡卡分別兩塊網絡卡一組,兩塊光纖卡需要做冗餘bond如下圖。
1.5,如物理主機劃分儲存lun,則需要安裝多路徑軟體(儲存廠商提供)。
注:多路徑軟體會發生fdisk多識別磁碟現象,注意注意
二,軟體環境
三,配置hosts 檔案
3.1 rac1 注hosts檔案不要有大寫出現,後期不能識別
3.2 rac2
#eth0
192.168.8.51 rac1.wln.com rac1
192.168.8.52 rac2.wln.com rac2
#viptual
192.168.8.53 rac1-vip.wln.com rac1-vip
192.168.8.54 rac2-vip.wln.com rac2-vip
#eth1 priv
18.1.30.51 rac1-priv.wln.com rac1-priv
18.1.30.52 rac2-priv.wln.com rac2-priv
#scan
192.168.8.55 rac-scan.wln.com rac-scan
建議節點一做完hosts檔案後直接scp節點二防止出錯
注意:/etc/hosts 檔案兩節點一定要一致 寫全7個ip (2個節點ip(eth0 public)2個vip,2個priv(eth1),scan)寫上域名,寫上主機名(主機名一定要小寫)配置完/etc/hosts不需用重啟網絡卡
四,檢查依賴包
4.1配置yum源,批量安裝軟體包
yum -y install binutils-* compat-libstdc++-* compat-libstdc++-* elfutils-libelf-* elfutils-libelf-devel-* gcc-* gcc-c++-* glibc-* glibc-* glibc-common-* glibc-devel-* glibc-devel-* glibc-headers-* ksh-* libaio-* libaio-* libaio-devel-* libaio-devel-* libgcc-* libgcc-* libstdc++-* libstdc++-* libstdc++-devel* make-* sysstat-* unixODBC-* compat-libcap1
以上操作均在所有節點執行。
五,安裝工作
以下配置均在所有節點執行
5.1 修改主機名稱
[root@rac1 ~]# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=rac1
5.2 配置使用者,組,目錄和許可權
groupadd oinstall
groupadd dba
groupadd oper
groupadd asmadmin
groupadd asmdba
groupadd asmoper
useradd -g oinstall -G dba,asmdba,asmadmin,asmoper grid
useradd -g oinstall -G dba,oper,asmdba oracle
echo -n qwer1234|passwd --stdin grid
echo -n qwer1234|passwd --stdin oracle
mkdir -p /u01/app/11.2.0/grid
mkdir -p /u01/app/grid
mkdir -p /u01/app/oracle
chown -R grid:oinstall /u01
chown grid:oinstall /u01/app/11.2.0/grid
chown grid:oinstall /u01/app/grid
chown -R oracle:oinstall /u01/app/oracle
chmod -R 775 /u01/
注意:兩個節點建立的使用者,組,目錄,許可權,一定要一致,做完之後檢查,不能有誤,否者會引起後續建立資料庫找磁碟組識別不出來
5.3 修改系統核心引數
1 sed -i 's/kernel.shmmax/#kernel.shmmax/g' /etc/sysctl.conf
2. sed -i 's/kernel.shmall/#kernel.shmall/g' /etc/sysctl.conf
3.vim /etc/sysctl.conf
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 1073741824
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
4.sysctl –p
注意:修改核心引數直接配置檔案末尾加入就可以不需要修改原來核心檔案
5.4 配置/etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
grid soft stack 10240
5.5 配置/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
####
六,配置使用者環境變數
6.1配置節點1使用者
A grid使用者
vim /home/grid/.bash_profile
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_HOSTNAME=rac1.wln.com
export ORACLE_SID=+ASM1
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/11.2.0/grid
export NLS_DATE_FORMAT="yy-mm-dd HH24:MI:SS"
export PATH=$ORACLE_HOME/bin:$PATH
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
B oracle 使用者
vim /home/oracle/.bash_profile
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_HOSTNAME=rac1.wln.com
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_UNQNAME=prod
export ORACLE_SID=prod1
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 NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
6.2 配置節點2使用者
A grid使用者
Vim /home/grid/.bash_profile
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_HOSTNAME=rac2.wln.com
export ORACLE_SID=+ASM2
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/11.2.0/grid
export NLS_DATE_FORMAT="yy-mm-dd HH24:MI:SS"
export PATH=$ORACLE_HOME/bin:$PATH
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
B oracle使用者
Vim /home/oracle/.bash_profile
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_HOSTNAME=rac2.wln.com
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_UNQNAME=prod
export ORACLE_SID=prod2
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 NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
七. 配置使用者等效性
7.1 grid 使用者等效性
以下均已grid使用者執行
注意:等效性配置與後面grid叢集安裝有直接關係
按照順序進行操作,否則會提示沒有檔案或目錄的錯誤
以grid戶執行操作
rac1
ssh-keygen -t rsa
ssh-keygen -t dsa
rac2
ssh-keygen -t rsa
ssh-keygen -t dsa
#以上用預設配置,一路回車即可
rac1
cat ~/.ssh/*.pub >> ~/.ssh/authorized_keys
ssh grid@rac2 cat ~/.ssh/*.pub >> ~/.ssh/authorized_keys
rac2
cat ~/.ssh/*.pub >> ~/.ssh/authorized_keys
ssh grid@rac1 cat ~/.ssh/*.pub >> ~/.ssh/authorized_keys
#建立等效性
rac1,rac2 雙節點執行
ssh rac1 date
ssh rac1-priv date
ssh rac2 date
ssh rac2-priv date
雙節點出現下圖表示成功
7.2 oracle 使用者等效性
一下oracle使用者執行操作
rac1
ssh-keygen -t rsa
ssh-keygen -t dsa
rac2
ssh-keygen -t rsa
ssh-keygen -t dsa
#以上用預設配置,一路回車即可
rac1
cat ~/.ssh/*.pub >> ~/.ssh/authorized_keys
ssh oracle@rac2 cat ~/.ssh/*.pub >> ~/.ssh/authorized_keys
rac2
cat ~/.ssh/*.pub >> ~/.ssh/authorized_keys
ssh oracle@rac1 cat ~/.ssh/*.pub >> ~/.ssh/authorized_keys
#建立等效性
rac1,rac2 雙節點執行
ssh rac1 date
ssh rac1-priv date
ssh rac2 date
ssh rac2-priv date
八,配置ntp服務
8.1 節點1
主資料庫伺服器配置: 如該內網有時間同步伺服器則使用內網時間同步服務
編輯/etc/ntp.conf
server 127.127.1.0
fudge 127.127.1.0 stratum 8
啟動ntpserver service ntpd start
新增到系統自啟動 chkconfig --level 12345 ntpd on
8.2 節點2
編輯/etc/ntp.conf
server 內網時間同步伺服器ip iburst
雙節點檢視時間同步效果
ntpq -p
九.安裝並配置 ASM 驅動或裸裝置
9.1 檢查核心
[root@rac1 ~]# uname -r
2.6.18-164.el5
Oracle ASMlib 下載地址:
下載以下 rpm 包(注意 rpm 包版本和 Linux 核心版本一致):
9.2 安裝 oracleasm 包(雙節點執行)
安裝以下安裝包 按照順序執行安裝否則會導致安裝失敗
注意:如果沒有與核心版本相同的安裝包,則採用裸裝置安裝方式→
1,rpm-ivh oracleasm-support-2.1.7-1.el5.x86_64.rpm
2, rpm -ivh kmod-oracleasm-2.0.6.rh1-3.el6_5.x86_64.rpm
3, rpm -ivh oracleasmlib-2.0.4-1.el5.x86_64.rpm
4,rpm -ivh oracleasm-2.6.18-164.el5-2.0.5-1.el5.x86_64.rpm --force --nodeps
9.2.1初始化 asmlib(在所有節點執行)
節點 2 省略
A [root@rac1 ~]# 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 []: oinstall
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
B [root@rac1 ~]# oracleasm init
Creating /dev/oracleasm mount point: /dev/oracleasm
Loading module "oracleasm": oracleasm
Mounting ASMlib driver filesystem: /dev/oracleasm
9.2.2 磁碟分割槽(節點 1 執行)
[root@rac1 ~]# fdisk /dev/sdb 分割槽不需要格式化
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-261, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-261, default 261):
Using default value 261
Command (m for help):
Command (m for help): w
The partition table has been altered!
sdb、sdc、sdd執行相同操作
9.2.3 建立 asm 磁碟,在節點 1 執行
A. [root@rac1 ~]# oracleasm createdisk OCR_VOTE /dev/sdb1
Writing disk header: done
Instantiating disk: done
[root@rac1 ~]# oracleasm createdisk DATA /dev/sdc1
Writing disk header: done
Instantiating disk: done
[root@rac1 ~]# oracleasm createdisk FRA /dev/sdd1
Writing disk header: done
Instantiating disk: done
B. [root@rac1 ~]# oracleasm scandisks
Reloading disk partitions: done
Cleaning any stale ASM disks...
Scanning system for ASM disks...
[root@rac1 ~]# oracleasm listdisks
DATA
FRA
OCR_VOTE
9.2.4節點 2 掃描識別 ASM 磁碟
[root@rac2 ~]# oracleasm scandisks
Reloading disk partitions: done
Cleaning any stale ASM disks...
Scanning system for ASM disks...
Instantiating disk "OCR_VOTE"
Instantiating disk "DATA"
Instantiating disk "FRA"
[root@rac2 ~]# oracleasm listdisks
DATA
FRA
OCR_VOTE
9.3 製作裸裝置
如果沒有asm安裝包 可以採用裸裝置的安裝方式 下面採用裸裝置的方式進行操作
[root@rac1 ~]# fdisk /dev/sdb 分割槽不需要格式化
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-261, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-261, default 261):
Using default value 261
Command (m for help):
Command (m for help): w
The partition table has been altered!
開始用裸裝置命令製作裸裝置 虛擬機器環境下兩個節點都需要操作
9.3.1 製作裸裝置
[root@rac1 ~]# raw /dev/raw/raw1 /dev/sdb1
/dev/raw/raw1: bound to major 8, minor 17
[root@rac1 ~]# raw /dev/raw/raw2 /dev/sdc1
/dev/raw/raw2: bound to major 8, minor 33
[root@rac1 ~]# raw /dev/raw/raw3 /dev/sdd1
/dev/raw/raw3: bound to major 8, minor 49
[root@rac1 oracle]# raw -qa
/dev/raw/raw1: bound to major 8, minor 17
/dev/raw/raw2: bound to major 8, minor 33
/dev/raw/raw3: bound to major 8, minor 49
9.3.2 自動掛載檔案
[root@rac1 oracle]# vim /etc/rc.local
新增如下內容:
raw /dev/raw/raw1 /dev/sdb1
raw /dev/raw/raw2 /dev/sdc1
raw /dev/raw/raw3 /dev/sdd1
9.3.3 將裸裝置檔案和分割槽裝置檔案進行繫結
[root@rac1 oracle]# vim /etc/udev/rules.d/60-raw.rules
編輯檔案新增如下內容:
ACTION=="add", KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="sdc1", RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", KERNEL=="sdd1", RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add",KERNEL=="raw[1-3]",OWNER=="grid",GROUP=="asmadmin",MODE=="660"
9.3.4重新啟動伺服器
reboot
start_udev 啟動裸裝置
十. 安裝 cvuqdisk 軟體包 (雙節點執行操作)
cvuqdisk軟體包用於發現共享儲存,在grid 安裝軟體的rpm目錄中,在所有節點執行;
[root@rac1 grid]# cd /wln/grid/rpm
[root@rac1 grid]# export CVUQDISK_GRP=oinstall
[root@rac1 rpm]# rpm -ivh cvuqdisk-1.0.7-1.rpm
Preparing... #################################### [100%]
1:cvuqdisk #################################### [100%
十一.安裝前檢查
[grid@rac1 grid]$ pwd
/wln/grid
[grid@rac1 grid]$ ./runcluvfy.sh stage -post hwos -n rac1,rac2 -verbose
十二. 安裝 Grid Infrastructure
[grid@rac1 grid]$ pwd
/wln/grid
[grid@rac1 grid]$ ./runInstaller
12.1 安裝 grid
選擇跳過更新
為叢集安裝
高階安裝
預設
Configure GNS 對鉤去掉,SCAN Name 選擇和/etc/hosts 中一致的名字
新增節點2
預設
選擇ASM儲存
建立磁碟組 選擇仲裁磁碟
配置 ASM System 口令(此處用 oracle 會報密碼不符合推薦標準的錯誤)
不使用智慧平臺管理介面
預設
使用預設的安裝位置
選擇清單目錄
檢驗,問題忽略即可
安裝即可
執行root指令碼
以 root 使用者按順序執行
1.[root@rac1 ~]# /u01/app/oraInventory/orainstRoot.sh
2.[root@rac2 ~]# /u01/app/oraInventory/orainstRoot.sh
3.[root@rac1 ~]# /u01/app/11.2.0/grid/root.sh 時間較長,耐心等待
4.[root@rac2 ~]# /u01/app/11.2.0/grid/root.sh
12.2 確認叢集軟體安裝成功
在grid使用者下 使用 crs_stat -t 與 crs_stat -t -v
[grid@rac1 ~] crs_stat -t
[grid@rac1 ~]crs_stat -t -v
十三.建立 ASM 磁碟組
本次任務將建立 2 個 asm 磁碟組,分別為:DATA,FRA。其中 DATA 將存放資料庫 檔案;FRA 存放閃迴文件. 可以選擇多個磁碟進行劃分組
如:有連個ams磁碟DATA,DATA1 可以選擇在建立磁碟組時選擇兩個
在 grid 使用者下,執行 asmca,啟動 asm 磁碟組建立嚮導
建立 FRA 磁碟組和 DATA 操作相同
確認 stat 為 2 of 2 時,退出 asmca
十四.安裝 oracle11gr2 database 軟體
以 oracle 使用者登入到節點一,切換到軟體安裝目錄,執行安裝
[oracle@rac1 database]$ ./runInstaller
跳過軟體更新
選擇雙節點
加入中文
預設
進入安裝過程自動進行安裝檢查 忽略安裝即可
執行指令碼以 root 使用者,在兩個節點上執行指令碼 執行順序: 1.rac1 2.rac
十五.建立資料庫
選擇 ASM 儲存方式,並選擇相應的磁碟組,
選擇閃回磁碟組,取消勾選歸檔,next
選擇 Sample Schemas(用於學習)
選擇自動記憶體管理,記憶體段 40%
十六.叢集管理
###########實際操作是發現root命令下沒有crsctl命令#############
16.1 RAC 的啟動與關閉
oracle rac 預設會開機自啟動,如需維護時可使用以下命令:
關閉:
crsctl stop cluster 停止本節點叢集服務
crsctl stop cluster –all 停止所有節點服務
開啟
crsctl start cluster 開啟本節點叢集服務
crsctl start cluster –all 開啟所有節點服務
注:以上命令需以 root 使用者執行
############################################################
16.2 RAC 檢查執行狀況
以 grid 使用者執行
[grid@rac1 ~]$ crsctl check cluster
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
16.3 Database 檢查例狀態
[oracle@rac1 ~]$ srvctl status database -d prod
Instance rac1 is running on node rac1
Instance rac2 is running on node rac2
16.4 檢查節點應用狀態及配置
[oracle@rac1 ~]$ srvctl status nodeapps
VIP rac1-vip is enabled
VIP rac1-vip is running on node: rac1
VIP rac2-vip is enabled
VIP rac2-vip is running on node: rac2
Network is enabled
Network is running on node: rac1
Network is running on node: rac2
GSD is disabled
GSD is not running on node: rac1
GSD is not running on node: rac2
ONS is enabled
ONS daemon is running on node: rac1
ONS daemon is running on node: rac2
eONS is enabled
eONS daemon is running on node: rac1
eONS daemon is running on node: rac2
[oracle@rac1 ~]$ srvctl config nodeapps -a -g -s -l
-l option has been deprecated and will be ignored.
VIP exists.:rac1
VIP exists.: /rac1-vip/182.168.8.53/255.255.255.0/eth0
VIP exists.:rac2
VIP exists.: /rac2-vip/182.168.8.54/255.255.255.0/eth0 GSD exists.
ONS daemon exists. Local port 6100, remote port 6200
Name: LISTENER
Network: 1, Owner: grid
Home: <CRS home>
/u01/app/11.2.0/grid on node(s) rac2,rac1 End points: TCP:1521
16.5 檢視資料庫配置
[oracle@rac1 ~]$ srvctl config database -d prod -a
Database unique name: prod
Database name: prod
Oracle home: /u01/app/oracle/product/11.2.0/db_1
Oracle user: oracle
Spfile: +DATA/prod/spfileprod.ora
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools: prod
Database instances: prod1,prod2
Disk Groups: DATA,FRA
Services:
Database is enabled
Database is administrator managed
16.6 檢查 ASM 狀態及配置
[oracle@rac1 ~]$ srvctl status asm
ASM is running on rac1,rac2
[oracle@rac1 ~]$ srvctl config asm -a
ASM home: /u01/app/11.2.0/grid
ASM listener: LISTENER
ASM is enabled.
16.7 檢查 TNS 的狀態及配置
[oracle@rac1 ~]$ srvctl status listener
Listener LISTENER is enabled
Listener LISTENER is running on node(s): rac1,rac2
[oracle@rac1 ~]$ srvctl config listener -a
Name: LISTENER
Network: 1, Owner: grid
Home: <CRS home>
/u01/app/11.2.0/grid on node(s) rac2,rac1
End points: TCP:1521
16.8 檢查 SCAN 的狀態及配置
[oracle@rac1 ~]$ srvctl status scan
SCAN VIP scan1 is enabled
SCAN VIP scan1 is running on node rac1
[oracle@rac1 ~]$ srvctl config scan
SCAN name: rac-scan, Network: 1/182.168.8.0/255.255.255.0/eth0
SCAN VIP name: scan1, IP: /rac-scan.xl.com/182.168.8.55
16.9 檢查 VIP 的狀態及配置
[oracle@rac1 ~]$ srvctl status vip -n rac1
VIP rac1-vip is enabled
VIP rac1-vip is running on node: rac1
[oracle@rac1 ~]$ srvctl status vip -n rac2
VIP rac2-vip is enabled
VIP rac2-vip is running on node: rac2
[oracle@rac1 ~]$ srvctl config vip -n rac1
VIP exists.:rac1
VIP exists.: /rac1-vip/182.168.8.53/255.255.255.0/eth0
[oracle@rac1 ~]$ srvctl config vip -n rac2
VIP exists.:rac2
VIP exists.: /rac2-vip/182.168.8.54/255.255.255.0/eth0