天天看點

ORACLE 11G R2 RAC+Mutilpath+RAW+ASM+Silent+AddNode+DG 完全安裝詳解 (二)

#################################  磁盤管理 #################################

# 磁盤規劃(生産庫隻需要按比例擴大 DATA 和 FRA) #CRS        1G            (仲裁盤 和 CRS 盤, ORACLE 要求 設定為奇數塊 , 防止産生腦裂 ,大小 至少 869M ) #DATA       5G            (分越多塊越好,充分發揮多路徑均衡負載 IO 性能,ORACLE 要求至少 5100M) #FRA         6G            (快速恢複區,可以存放資料庫備份,增量備份和歸檔日志,原則上比 DATA 要大)

# 多路徑配置 #這裡隻介紹一般linux發行版中都自帶的 multipath 多路徑軟體的常用指令,如何設定這裡不再敖述。 #其他商業版本的多路徑軟體都類似,反而更簡單,其原理都是在 /dev/ 下生成專有盤符 #比如 EMC 的 powerpath 會生成 /dev/emcpowerX 這樣路徑聚合後的 DM 裝置盤符 #重新掃描LUN裝置 rescan-scsi-bus.sh #檢視多路徑軟體是否存在

lsmod | grep dm-multipath

#加載多路徑軟體子產品 modprobe dm-multipath #多路徑軟體的重新開機 service multipathd restart #開機啟動多路徑 chkconfig multipathd on #檢視多路徑 multipath -ll | grep mpath #強制更新路徑 multipaht -F #聚合路徑 生成 DM 裝置(/dev/mapper/*) multipath -v2 multipath -v3 | grep uid

#顯示DM裝置資訊(device mapper) dmsetup ls|sort|info|status fdisk -l | grep mp

# 磁盤管理(如果是學習環境請直接看  方式一 例三,直接跳至   磁盤測試 ) #生産環境不建議直接用系統生成的邏輯盤 sd* 來綁定裸裝置,重新開機時系統盤符可能會産生變化 #以 裸裝置 加 ASM 管理磁盤,不格式化磁盤,可以獲得最大磁盤性能并防止作業系統對該分區寫入資料。 #官方建議用 UDEV 規則來映射 RAW,也可以直接 RAW 服務加載,還可以用ASMLib 三種方式。

# 備注:(linux 下 ORACLE 不能直接使用邏輯卷,必須綁定為 raw 裝置,權限也必須正确,否則 ASM 裡無法發現磁盤。UNIX可以直接使用邏輯卷。 核心 2.6.9 之前使用 /etc/sysconfig/rawdevices 和 /etc/udev/permissions.d/50-udev.permissions 的配合對 raw 裝置進行管理,核心 2.6.18 以後 RHEL 一般使用 /etc/udev/rules.d/60-raw.rules 進行 raw 裝置的管理,RHEL 的 /etc/udev/permissions.d/50-udev.permissions 和 SLES 的 /lib/udev/rules.d/50-udev-default.rules 為磁盤的權限管理,RHEL 的 60-raw.rules,SLES 沒有 60-raw 規則,還是使用 /etc/raw 都為C字元裝置,自定義規則 99-oracle-asmdevices 和 ASMLib 都為B塊裝置,ORACLE 10.2.0.2 才開始支援塊裝置)

#方式一:配置UDEV規則來挂載裸裝置(工作機制參考下面連結) #  https://wiki.archlinux.org/index.php/Udev_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)

#例一:(隻針對 RHEL) vi /etc/udev/rules.d/60-raw.rules ACTION=="add", KERNEL=="mapper/ 2229f000155201944", RUN+="/bin/raw /dev/raw/raw1 %N" ACTION=="add", KERNEL=="mapper/ 222710001552e7868", RUN+="/bin/raw /dev/raw/raw2 %N" ACTION=="add", KERNEL=="mapper/ 222810001558f83bd", RUN+="/bin/raw /dev/raw/raw3 %N" KERNEL=="raw[1-9]*", OWNER="grid", GROUP="asmadmin", MODE="660"

#例二:(多路徑聚合 DM 裝置生成腳本,各 linux 通用,建議) mv  /etc/udev/rules.d/99-oracle-asmdevices.rules /etc/udev/rules.d/99-oracle-asmdevices.rules.bak for i in   2229f000155201944 222710001552e7868 222810001558f83bd; do echo "KERNEL==\"dm*\", SUBSYSTEM==\"block\", PROGRAM==\"/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/mapper/\$name\", RESULT==\"`/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/mapper/$i`\", NAME=\"asm-$i\", OWNER=\"grid\", GROUP=\"asmadmin\", MODE=\"0660\"">>/etc/udev/rules.d/99-oracle-asmdevices.rules; done

# 例三:(直接使用系統邏輯盤的生成腳本,僅學習使用,如果正常完成會去掉 /dev/sd* 變成 /dev/asm*) mv /etc/udev/rules.d/99-oracle-asmdevices.rules /etc/udev/rules.d/99-oracle-asmdevices.rules.bak for i in  b c d; do echo "KERNEL==\"sd*\", SUBSYSTEM==\"block\", PROGRAM==\"/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/\$name\", RESULT==\"`/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/sd$i`\", NAME=\"asm-$i\", OWNER=\"grid\", GROUP=\"asmadmin\", MODE=\"0660\"">>/etc/udev/rules.d/99-oracle-asmdevices.rules; done #重新開機後 ll /dev/asm* 檢視磁盤是否存在,權限是否正常

#SLES 的 UDEV 指令 (建議重新開機,經測試,重新開機 UDEV 服務好像不起作用) /etc/init.d/boot.udev restart /etc/init.d/boot.udev status # On RHEL5/OEL5/OL5: # /sbin/udevcontrol reload_rules # /sbin/start_udev # On RHEL6/OL6: #/sbin/udevadm control --reload-rules #/sbin/start_udev

#方式二:直接挂載為 RAW 裸設 modprobe raw

#例一:SLES 的 raw 配置檔案挂載 (RHEL 為 /etc/sysconfig/rawdevices,之後還必須配合權限) #多路徑綁定 raw cat >> /etc/raw <<EOF raw1:mapper/ 2229f000155201944 raw2:mapper/ 222710001552e7868 raw3:mapper/ 222810001558f83bd EOF #邏輯盤綁定 raw(僅學習使用,官方建議使用 UDEV) cat >> /etc/raw <<EOF raw1:sdb raw2:sdc raw3:sdd raw4:sde EOF

# RHEL 權限修改 vi /etc/udev/permissions.d/50-udev.permissions 将 raw/*:root:disk:0660 改成  raw/*: grid: asmadmin :0660 # SLES 權限修改 vi /lib/udev/rules.d/50-udev-default.rules  将 KERNEL=="rawctl",NAME="raw/%k", GROUP="disk" SUBSYSTEM=="raw",KERNEL=="raw[0-9]*", NAME="raw/%k", GROUP="disk" 改成 KERNEL=="rawctl",NAME="raw/%k", GROUP="disk",MODE="0660" SUBSYSTEM=="raw",KERNEL=="raw[0-9]*", NAME="raw/%k", OWNER="grid", GROUP="asmadmin",MODE="0660" #或者直接自定義一個規則可以 cat >> /lib/udev/rules.d/99-raw.rules  <<EOF KERNEL=="rawctl",NAME="raw/%k", GROUP="disk",MODE="0660" SUBSYSTEM=="raw",KERNEL=="raw[0-9]*", NAME="raw/%k", OWNER="grid", GROUP="asmadmin",MODE="0660" EOF

#例二:啟動時直接用 raw 服務挂載 ( 高版本 linux 可能無效,僅學習使用,官方建議使用 UDEV) cat >>   /etc/rc.local <<EOF raw /dev/raw/raw1 /dev/sdb raw /dev/raw/raw2 /dev/sdc raw /dev/raw/raw3 /dev/sdd raw /dev/raw/raw4 /dev/sde sleep 1

chown grid: asmadmin /dev/raw/raw[0-9]* chmod 660 /dev/raw/raw [0-9]* EOF

#啟動 raw 服務 service raw start chkconfig raw on

#檢視挂載是否成功 chkconfig --list | grep raw ll /dev/raw/ raw -qa

#方式三:ASMLib 方式綁定裸裝置(略過,網上很多)

#建立軟連接配接來指向 raw 檔案 (示例,不建議) #ln -s /dev/raw/raw11 redo101.log #ln -sf /dev/raw/raw1 /u01/oradata/devdb/asmdisk1

# 測試磁盤(磁盤寫入測試,如剛建立 UDEV 規則建議重新開機 reboot 後測試) #dd if=/dev/zero of=/dev/mapper/ 2229f000155201944 #dd if=/dev/zero of=/dev/raw/ raw1 #dd if=/dev/zero of=/dev/ asm-b

#檢視IO性能 及 多路徑的均衡負載(另開一個會話) #watch iostat -dm

###############################  halt 複制虛拟機   ###############################

#可以直接複制3台機器,為以後添加 rac3 節點和 DG 做準備,共享磁盤也要複制一套,給 DG 使用

###############################  其他節點操作開始 ##############################

# 修改 IP (其他節點 , 如果是複制的虛拟機,這裡的 網卡名稱會變 ,請注意 )

# 修改 主機名(針對 SLES ,RHEL 在網卡配置檔案裡設定) mv /etc/HOSTNAME /etc/HOSTNAME.bak hostname rac 2 hostname > /etc/HOSTNAME sysctl kernel.hostname=rac 2

#使用者環境變量(其他節點) echo ' export TMP=/tmp export TMPDIR=$TMP export ORACLE_TERM=xterm export THREADS_FLAG=native export ORACLE_SID= rac 2 export ORACLE_UNQNAME=orcl export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME= $ORACLE_BASE/product/11.2.0/db_1 export PATH=/usr/sbin:$PATH:$ORACLE_HOME/bin export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/network/jlib #export DISPLAY=:0.0 export LANG=zh_CN.UTF-8 export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS" export NLS_LANG="SIMPLIFIED CHINESE_CHINA. AL32UTF8" alias rsqlplus="rlwrap sqlplus / as sysdba" alias rrman="rlwrap rman target /" '  > /home/oracle/.bash_profile 

echo ' export TMP=/tmp export TMPDIR=$TMP export ORACLE_TERM=xterm export THREADS_FLAG=native export ORACLE_SID=+ASM 2 export ORACLE_BASE=/u01/app/grid export ORACLE_HOME=/u01/app/11.2.0/grid export ORA_CRS_HOME=$ORACLE_HOME export TNS_ADMIN=$ORACLE_HOME/network/admin export ORA_NLS11=$ORACLE_HOME/nls/data 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:$ORACLE_HOME/network/jlib #export DISPLAY=:0.0 export LANG=zh_CN.UTF-8 export CVUQDISK GRP=oinstall

export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS" export NLS_LANG="SIMPLIFIED CHINESE_CHINA . AL32UTF8" alias rasmcmd="rlwrap asmcmd"

alias rsqlplus="rlwrap sqlplus / as sysasm"

alias crs="watch crs_stat -t" '  >  /home/grid/.bash_profile

###############################  其他節點操作結束 ##############################

# 安裝媒體(隻需要複制到主節點,其他節點不需要) #  p13390677_112040 _Linux-x86-64_1of7.zip 和   p13390677_112040 _Linux-x86-64_2of7.zip  是 Oracle 軟體的安裝媒體。 p13390677_112040 _Linux-x86-64_3of7.zip 是 GRID 軟體的安裝媒體。 #這裡的3 個軟體包均是來源于MetaLink 網站,其版本均是目前 Oracle 11g 的最 新版本 11.2.0.4.0。 如果沒有MetaLink 賬号也可以從 oracle 官方網站免費擷取  11.2.0.1.0 的版本。

#複制三個zip包到根目錄 cd / &&  rz unzip p13390677_112040_Linux-x86-64_1of7.zip unzip p13390677_112040_Linux-x86-64_2of7.zip unzip p13390677_112040_Linux-x86-64_3of7.zip #解壓完會在根目錄多出兩個目錄 /database/ 和 /grid/ du -sh /database && du -sh /grid #rm -rf p13390677_112040_Linux-x86-64_*

# 建立等效性( 這步可以跳過,主要是為了 靜默安裝 使用,GUI 圖形界面安裝時可以更簡便的配置它) #方法一:(建議!ROOT 使用者不做要求,因涉及密碼輸入,這裡的指令不能批量複制!) #等效性操作隻需要在主節點上運作,其中要輸入四次密碼,grid 密碼 grid ,oracle 密碼 oracle /grid/sshsetup/sshUserSetup.sh  -user  root -hosts " rac1 rac2" -advanced -exverify -confirm -noPromptPassphrase /grid/sshsetup/sshUserSetup.sh  -user grid -hosts "rac1 rac2" -advanced -exverify -confirm -noPromptPassphrase /grid/sshsetup/sshUserSetup.sh  -user  oracle -hosts " rac1 rac2" -advanced -exverify -confirm -noPromptPassphrase

#方法二: ssh-keygen ssh-copy-id root@rac1

ssh-copy-id root@ rac 2 su - oracle ssh-keygen ssh-copy-id oracle@rac1

ssh-copy-id oracle@ rac 2  &&  exit su - grid ssh-keygen ssh-copy-id grid@rac1 ssh-copy-id  grid @rac2 &&  exit

#測試等效性(出現六個日期證明成功了) ssh rac1 date && ssh rac2 date && su - oracle -c " ssh  rac 1  date" &&  su - grid -c "ssh  rac1  date"  &&  su - oracle -c "ssh rac 2  date" &&  su - grid -c "ssh  rac2  date"

#  Grid Infrastructure 的依賴包(重要!) rpm -ivh /grid/rpm/cvuqdisk-1.0.9-1.rpm scp  /grid/rpm/cvuqdisk-1.0.9-1.rpm  rac2:~/ ssh [email protected] "rpm -ivh cvuqdisk-1.0.9-1.rpm" ssh [email protected] "rm -rf cvuqdisk-1.0.9-1.rpm"