轉自:http://blog.itpub.net/20482996/viewspace-1291876/
背景介紹:
ORACLE 的集羣文件系統ACFS (ASM Cluster FileSystem) 是Oracle 在11.2 之後引入的新特性,可在ASM磁盤組上創建卷(volumn)進而創建文件系統(ACFS),可存放的目標文件支持二進制格式的文件,這樣我們就可以把ORACLE_HOME 目錄放在ACFS上,此時多個RAC 節點共享一個ORACLE_HOME, 在升級打patch的時候非常方便。 本文就來實現如果創建共享ORACLE_HOME的ACFS。
前提: ORACLE RAC的GI部分(CRS 和 ASM)已經安裝完畢, 數據庫軟件還沒有安裝。
操作系統版本: Solaris 11.1
數據庫版本: Oracle 12.1.0.1
1. 用root用戶在各個節點啓動crs,啓動ACFS驅動程序,執行:
- $CRS_HOME/bin/crsctl start crs
- $CRSHOME/bin/acfsload start
2. 在主節點上創建 volumn:
- $CRSHOME/bin/asmca -silent -createVolume -volumename ${VOL_NAME} -volumeDiskGroup ${DISKGRP_ACFS} -volumeSizeGB ${VOL_SIZE}\
命令解釋:使用asmca的靜默模式。
VOL_NAME -> 自助命名的卷名稱
DISKGRP_ACFS -> 選擇在哪個磁盤組上創建卷
VOL_SIZE -> 創建卷的大小,如果安裝ORACLE_HOME,一般要大於5G
3. 用crs的用戶查看卷信息:
- $CRSHOME/bin/asmcmd volinfo -G ${DISKGRP_ACFS} ${VOL_NAME}
4. 以crs用戶執行命令,作用是格式化卷,創建ACFS文件系統:
- $CRSHOME/bin/asmca -silent -createACFS -acfsVolumeDevice ${VOL_DEVICE} -acfsMountPoint ${mount_dir} -acfsUserName ${DB_USER} -acfsGroupName oinstall
命令解釋: -acfsVolumeDevice 參數制定在哪個捲上創建(格式化)爲ACFS文件系統; -acfsMountPoint 參數表示把ACFS文件系統mount到操作系統的具體目錄,這個目錄就是我們的ORACLE_HOME的位置,比如 /u01/app/oracle/product/12.1.0/dbhome_1;
-acfsUserName 和 -acfsGroupName 就是爲了設置這個目錄的權限,所以分別爲 oracle:oinstall (數據庫的用戶和組)
5. 以root用戶在執行步驟4的節點執行腳本:
- 1 $CRSHOME/bin/srvctl add filesystem -d ${VOL_DEVICE} -m ${mount_dir} -u ${DB_USER} -autostart ALWAYS
- 2
- 3 if [ $? = "0" -o $? = "2" ]; then
4 $CRSHOME/bin/srvctl start filesystem -d ${VOL_DEVICE}
5 if [ $? = "0" ]; then - 6 chown ${DB_USER}:oinstall ${mount_dir}
7 chmod 775 ${mount_dir}
8 fi
9 else
10 echo "Creating CRS resources failed "
11 exit 1
12 fi
解釋:1行把ACFS加入 集羣的資源,隨着crs啓動自動啓動, 如果成功啓動ACFS,效果就是RAC的各個節點的 mount_dir 目錄是共享的,在一個節點創建測試文件,其它節點就可以看到了。
6. 繼續RAC的安裝,執行database的安裝過程。
注意事項:
mount_dir的選擇:如果選定ORACLE_HOME爲/u01/app/oracle/product/12.1.0/dbhome_1, 那麼mount_dir 最好選擇它的上級目錄:/u01/app/oracle/product/12.1.0, 因爲ACFS創建成功之後會在mount_dir 下自動生成一個lost_found文件夾,而且刪不掉,有些版本的oracle是不允許在安裝之前家目錄爲非空,所以當installer發現有一個lost_found 文件夾會停止安裝並報錯。