12C Oracle ASM Filter Driver
Oracle ASM Filter Driver(Oracle ASMFD)消除了在系統每次被重啟後Oracle ASM需要重新繫結磁碟裝置來簡化對磁碟裝置的配置與管理。Oracle ASM Filter Driver(Oracle ASMFD)是一種內建在Oracle ASM磁碟的IO路徑中的核心模組。Oracle ASM使用filter driver來驗證對Oracle ASM磁碟的寫IO操作。Oracle ASM Filter Driver會拒絕任何無效的IO請求。這種操作消除了意外覆蓋Oracle ASM磁碟而損壞磁碟組中的磁碟與檔案。例如,Oracle ASM Filter Driver會過濾掉所有可能意外覆蓋磁碟的非Oracle IO操作。從Oracle 12.2開始,Oracle ASM Filter Driver(Oracle ASMFD)在系統安裝Oracle ASMLIB的情況下不能被安裝,如果你想安裝與配置Oracle ASMFD,那麼必須首先解除安裝Oracle ASMLIB。Oracle 12.2的ASMFD不支援擴充套件分割槽表。
配置Oracle ASM Filter Driver
可以在安裝Oracle Grid Infrastructure時或在安裝Oracle Grid Infrastructure後對磁碟裝置永久性配置Oracle ASM Filter Driver(Oracle ASMFD)。
在安裝Oracle Grid Infrastructure時配置Oracle ASM Filter Driver
在安裝Oracle Grid Infrastructure時,可以選擇啟用自動安裝與配置Oracle ASM Filter Driver。如果在安裝Oracle Grid Infrastructure所在的系統中沒有使用udev,那麼可以在在安裝Oracle Grid Infrastructure之前執行下面的操作來為Oracle ASMFD準備磁碟。下面的操作必須在Oracle Grid Infrastructure軟體包在Oracle Grid Infrastructure home目錄中必須解壓後,但在配置ASMFD之前執行。
1.為了使用Oracle ASM Filter Driver來配置共享磁碟,以root使用者來設定環境變數$ORACLE_HOME為Grid Home目錄,設定環境變數$ORACLE_BASE為臨時目錄
# set ORACLE_HOME=/u01/app/oracle/12.2.0/grid # set ORACLE_BASE=/tmp
ORACLE_BASE變數被設定為臨時目錄可以避免在安裝Oracle Grid Infrastructure之前在Grid Home目錄中建立診斷或跟蹤檔案。在執行下面的操作之前,確保是在$ORACLE_HOME/bin目錄中執行命令。
2.使用ASMCMD afd_label命令來為Oracle ASM Filter Driver來準備磁碟.
#asmcmd afd_label DATA1 /dev/disk1a --init
3.使用ASMCMD afd_lslbl命令來驗證磁碟是否已經被標記可以為Oracle ASMFD所使用
#asmcmd afd_lslbl /dev/disk1a
檢視某塊磁碟
[rootd@cs1 ~]./asmcmd afd_lslbl /dev/asmdisk01 -------------------------------------------------------------------------------- Label Duplicate Path ================================================================================ CRS2 /dev/asmdisk01
列出已經標記可以為Oracle ASMFD所使用的所有磁碟
[grid@jytest1 ~]$ asmcmd afd_lslbl -------------------------------------------------------------------------------- Label Duplicate Path ================================================================================ CRS1 /dev/asmdisk02 CRS2 /dev/asmdisk01 DATA1 /dev/asmdisk03 DATA2 /dev/asmdisk04 FRA1 /dev/asmdisk07 TEST1 /dev/asmdisk05 TEST2 /dev/asmdisk06
4.當為Oracle ASMFD準備完磁碟後清除變數ORACLE_BASE
# unset ORACLE_BASE
5.執行安裝指令碼(gridSetup.sh)來安裝Oracle Grid Infrastructure並啟用Oracle ASM Filter Driver配置。
在安裝Oracle Grid Infrastructure後配置Oracle ASM Filter Driver
如果在安裝Grid Infrastructure時沒有啟用配置Oracle ASMFD,那麼可以使用Oracle ASMFD來手動配置Oracle ASM裝置。
為Oracle Grid Infrastructure Clusterware環境配置Oracle ASM,具體操作如下:
1.以Oracle Grid Infrastructure使用者來更新Oracle ASM磁碟發現路徑來使Oracle ASMFD來發現磁碟。
首先檢查當前Oracle ASM磁碟發現路徑並更新
[grid@cs1 ~]$ asmcmd dsget parameter:/dev/sd*, /dev/asm* profile:/dev/sd*,/dev/asm*
將'AFD:*'增加到發現磁碟路徑中
[grid@cs1 ~]$ asmcmd dsset 'dev/sd*','/dev/asm*','AFD:*' [grid@cs1 ~]$ asmcmd dsget parameter:dev/sd*, /dev/asm*, AFD:* profile:dev/sd*,/dev/asm*,AFD:*
2.以Oracle Grid Infrastructure使用者來獲取cluster中的節點列表與角色
[grid@cs1 ~]$ olsnodes -a cs1 Hub cs2 Hub
3.在每個Hub與Leaf節點上,可以以回滾或非回滾模式來執行以下操作
3.1以root使用者來停止Oracle Grid Infrastructure
# $ORACLE_HOME/bin/crsctl stop crs
如果命令返回錯誤,那麼執行下面的命令來強制停止Oracle Grid Infrastructure
# $ORACLE_HOME/bin/crsctl stop crs -f
3.2在節點層面以root使用者來配置Oracle ASMFD
# $ORACLE_HOME/bin/asmcmd afd_configure
3.3以Oracle Grid Infrastructure使用者來驗證Oracle ASMFD的狀態
[grid@cs2 ~]$ asmcmd afd_state ASMCMD-9526: The AFD state is 'LOADED' and filtering is 'ENABLED' on host 'cs2.jy.net'
3.4以root使用者來啟動Oracle Clusterware stack
# $ORACLE_HOME/bin/crsctl start crs
3.5以Oracle Grid Infrastructure使用者來設定Oracle ASMFD發現磁碟路徑為步驟3.1中所檢索到的原始Oracle ASM磁碟發現路徑
[grid@cs1 ~]$ asmcmd dsset 'dev/sd*','/dev/asm*'
遷移不包含OCR或vote檔案的磁碟組到Oracle ASMFD
1.以Oracle Grid Infrastructure使用者來執行以下操作
2.列出已經存在的磁碟組
[grid@cs2 ~]$ asmcmd lsdg State Type Rebal Sector Logical_Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name MOUNTED EXTERN N 512 512 4096 4194304 40960 1544 0 1544 0 Y CRS/ MOUNTED EXTERN N 512 512 4096 4194304 40960 860 0 860 0 N DATA/ MOUNTED NORMAL N 512 512 4096 4194304 40960 40704 0 20352 0 N DN/
3.列出相關磁碟
[grid@cs2 ~]$ asmcmd lsdsk -G DN Path /dev/asmdisk03 /dev/asmdisk05
從下面的查詢可以看到/dev/asmdisk03和/dev/asmdisk05的label欄位為空
SQL> select group_number,disk_number,name,label,path from v$asm_disk; GROUP_NUMBER DISK_NUMBER NAME LABEL PATH ------------ ----------- ------------------------------ -------------------------------------------------- -------------------------------------------------- 0 0 CRS2 /dev/asmdisk01 0 1 CRS1 /dev/asmdisk02 0 2 DATA1 /dev/asmdisk04 3 0 DN_0000 /dev/asmdisk03 3 1 DN_0001 /dev/asmdisk05 1 0 CRS1 CRS1 AFD:CRS1 2 0 DATA1 DATA1 AFD:DATA1 1 1 CRS2 CRS2 AFD:CRS2
4.檢查Oracle ASM是否是活動狀態
[grid@cs2 ~]$ srvctl status asm ASM is running on cs1,cs2
5.在所有節點上停止資料庫與dismount磁碟組
[grid@cs2 ~]$srvctl stop diskgroup -diskgroup DN -f
6.在每個Hub節點上執行以下命令來為磁碟組中的所有已經存在的磁碟進行標記
[grid@cs2 ~]$ asmcmd afd_label DN1 /dev/asmdisk03 --migrate [grid@cs2 ~]$ asmcmd afd_label DN2 /dev/asmdisk05 --migrate
7.在所有Hub節點上掃描磁碟
[grid@cs1 ~]$ asmcmd afd_scan [grid@cs2 ~]$ asmcmd afd_scan
8.在所有節點啟動資料庫並mount磁碟組
[grid@cs2 ~]$ srvctl start diskgroup -diskgroup DN
從下面的查詢可以看到/dev/asmdisk03和/dev/asmdisk05的label欄位分別顯示為DN1和DN2
SQL> select group_number,disk_number,name,label,path from v$asm_disk; GROUP_NUMBER DISK_NUMBER NAME LABEL PATH ------------ ----------- ------------------------------ -------------------------------------------------- -------------------------------------------------- 0 0 CRS2 /dev/asmdisk01 0 1 DN2 /dev/asmdisk05 0 2 DN1 /dev/asmdisk03 0 3 CRS1 /dev/asmdisk02 0 4 DATA1 /dev/asmdisk04 1 1 CRS2 CRS2 AFD:CRS2 2 0 DATA1 DATA1 AFD:DATA1 1 0 CRS1 CRS1 AFD:CRS1 3 0 DN_0000 DN1 AFD:DN1 3 1 DN_0001 DN2 AFD:DN2
現在可以將原先的 udev rules 檔案移除。當然,這要在所有節點中都執行。以後如果伺服器再次重啟,AFD 就會完全接管了。
[root@cs1 bin]# cd /etc/udev/rules.d/ [root@cs1 rules.d]# ls -lrt total 16 -rw-r--r--. 1 root root 709 Mar 6 2015 70-persistent-ipoib.rules -rw-r--r-- 1 root root 1416 Mar 9 12:23 99-my-asmdevices.rules -rw-r--r-- 1 root root 224 Mar 9 15:52 53-afd.rules -rw-r--r-- 1 root root 190 Mar 9 15:54 55-usm.rules [root@cs1 rules.d]# mv 99-my-asmdevices.rules 99-my-asmdevices.rules.bak [root@cs1 rules.d]# cat 53-afd.rules # # AFD devices KERNEL=="oracleafd/.*", OWNER="grid", GROUP="asmadmin", MODE="0775" KERNEL=="oracleafd/*", OWNER="grid", GROUP="asmadmin", MODE="0775" KERNEL=="oracleafd/disks/*", OWNER="grid", GROUP="asmadmin", MODE="0664" [root@cs1 rules.d]# ls -l /dev/oracleafd/disks total 20 -rwxrwx--- 1 grid oinstall 15 Aug 30 14:30 CRS1 -rwxrwx--- 1 grid oinstall 15 Aug 30 14:30 CRS2 -rwxrwx--- 1 grid oinstall 15 Aug 30 14:30 DATA1 -rwxrwx--- 1 grid oinstall 15 Aug 30 17:42 DN1 -rwxrwx--- 1 grid oinstall 15 Aug 30 17:42 DN2 [root@cs2 bin]# cd /etc/udev/rules.d/ [root@cs2 rules.d]# ls -lrt total 16 -rw-r--r--. 1 root root 709 Mar 6 2015 70-persistent-ipoib.rules -rw-r--r-- 1 root root 1416 Mar 9 12:23 99-my-asmdevices.rules -rw-r--r-- 1 root root 224 Mar 9 15:52 53-afd.rules -rw-r--r-- 1 root root 190 Mar 9 15:54 55-usm.rules [root@cs2 rules.d]# mv 99-my-asmdevices.rules 99-my-asmdevices.rules.bak [root@cs2 rules.d]# cat 53-afd.rules # # AFD devices KERNEL=="oracleafd/.*", OWNER="grid", GROUP="asmadmin", MODE="0775" KERNEL=="oracleafd/*", OWNER="grid", GROUP="asmadmin", MODE="0775" KERNEL=="oracleafd/disks/*", OWNER="grid", GROUP="asmadmin", MODE="0664" [root@cs2 rules.d]# ls -l /dev/oracleafd/disks total 20 -rwxrwx--- 1 grid oinstall 15 Aug 30 14:30 CRS1 -rwxrwx--- 1 grid oinstall 15 Aug 30 14:30 CRS2 -rwxrwx--- 1 grid oinstall 15 Aug 30 14:30 DATA1 -rwxrwx--- 1 grid oinstall 15 Aug 30 17:42 DN1 -rwxrwx--- 1 grid oinstall 15 Aug 30 17:42 DN2
其實,AFD 也在使用 udev
遷移包含OCR或vote檔案的磁碟組到Oracle ASMFD
1.以root使用者來列出包含OCR和vote檔案的磁碟組
[root@cs1 ~]# cd /u01/app/product/12.2.0/crs/bin [root@cs1 bin]# sh ocrcheck -config Oracle Cluster Registry configuration is : Device/File Name : +CRS Device/File Name : +DATA [root@cs1 bin]# sh crsctl query css votedisk ## STATE File Universal Id File Name Disk group -- ----- ----------------- --------- --------- 1. ONLINE 750a78e1ae984fcdbfb4dbf44d337a77 (/dev/asmdisk02) [CRS] Located 1 voting disk(s).
2.以Oracle Grid Infrastructure使用者來列出與磁碟組相關的磁碟
[grid@cs2 ~]$ asmcmd lsdsk -G CRS Path /dev/asmdisk01 /dev/asmdisk02
3.以root使用者來在所有節點上停止資料庫與Oracle Clusterware
[root@cs1 bin]# ./crsctl stop cluster -all CRS-2673: Attempting to stop 'ora.crsd' on 'cs2' CRS-2673: Attempting to stop 'ora.crsd' on 'cs1' CRS-2790: Starting shutdown of Cluster Ready Services-managed resources on server 'cs2' CRS-2790: Starting shutdown of Cluster Ready Services-managed resources on server 'cs1' CRS-2673: Attempting to stop 'ora.cs.db' on 'cs1' CRS-2673: Attempting to stop 'ora.qosmserver' on 'cs2' CRS-2673: Attempting to stop 'ora.cs.db' on 'cs2' CRS-2673: Attempting to stop 'ora.chad' on 'cs2' CRS-2673: Attempting to stop 'ora.gns' on 'cs2' CRS-2677: Stop of 'ora.gns' on 'cs2' succeeded CRS-2677: Stop of 'ora.cs.db' on 'cs2' succeeded CRS-2673: Attempting to stop 'ora.CRS.dg' on 'cs2' CRS-2673: Attempting to stop 'ora.DATA.dg' on 'cs2' CRS-2673: Attempting to stop 'ora.LISTENER.lsnr' on 'cs2' CRS-2673: Attempting to stop 'ora.LISTENER_SCAN2.lsnr' on 'cs2' CRS-2673: Attempting to stop 'ora.LISTENER_SCAN3.lsnr' on 'cs2' CRS-2673: Attempting to stop 'ora.cvu' on 'cs2' CRS-2673: Attempting to stop 'ora.gns.vip' on 'cs2' CRS-2677: Stop of 'ora.cs.db' on 'cs1' succeeded CRS-2677: Stop of 'ora.CRS.dg' on 'cs2' succeeded CRS-2673: Attempting to stop 'ora.LISTENER.lsnr' on 'cs1' CRS-2673: Attempting to stop 'ora.LISTENER_SCAN1.lsnr' on 'cs1' CRS-2677: Stop of 'ora.DATA.dg' on 'cs2' succeeded CRS-2673: Attempting to stop 'ora.asm' on 'cs2' CRS-2677: Stop of 'ora.asm' on 'cs2' succeeded CRS-2677: Stop of 'ora.LISTENER.lsnr' on 'cs1' succeeded CRS-2673: Attempting to stop 'ora.ASMNET1LSNR_ASM.lsnr' on 'cs2' CRS-2677: Stop of 'ora.LISTENER_SCAN1.lsnr' on 'cs1' succeeded CRS-2673: Attempting to stop 'ora.scan1.vip' on 'cs1' CRS-2677: Stop of 'ora.LISTENER.lsnr' on 'cs2' succeeded CRS-2677: Stop of 'ora.LISTENER_SCAN3.lsnr' on 'cs2' succeeded CRS-2677: Stop of 'ora.LISTENER_SCAN2.lsnr' on 'cs2' succeeded CRS-2677: Stop of 'ora.scan1.vip' on 'cs1' succeeded CRS-2673: Attempting to stop 'ora.cs2.vip' on 'cs2' CRS-2673: Attempting to stop 'ora.scan2.vip' on 'cs2' CRS-2673: Attempting to stop 'ora.scan3.vip' on 'cs2' CRS-2677: Stop of 'ora.gns.vip' on 'cs2' succeeded CRS-2677: Stop of 'ora.scan3.vip' on 'cs2' succeeded CRS-2677: Stop of 'ora.cs2.vip' on 'cs2' succeeded CRS-2677: Stop of 'ora.qosmserver' on 'cs2' succeeded CRS-2677: Stop of 'ora.scan2.vip' on 'cs2' succeeded CRS-2677: Stop of 'ora.ASMNET1LSNR_ASM.lsnr' on 'cs2' succeeded CRS-2673: Attempting to stop 'ora.chad' on 'cs1' CRS-2677: Stop of 'ora.cvu' on 'cs2' succeeded CRS-2677: Stop of 'ora.chad' on 'cs2' succeeded CRS-2673: Attempting to stop 'ora.ons' on 'cs2' CRS-2677: Stop of 'ora.ons' on 'cs2' succeeded CRS-2673: Attempting to stop 'ora.net1.network' on 'cs2' CRS-2677: Stop of 'ora.net1.network' on 'cs2' succeeded CRS-2792: Shutdown of Cluster Ready Services-managed resources on 'cs2' has completed CRS-2677: Stop of 'ora.crsd' on 'cs2' succeeded CRS-2673: Attempting to stop 'ora.ctssd' on 'cs2' CRS-2673: Attempting to stop 'ora.evmd' on 'cs2' CRS-2673: Attempting to stop 'ora.storage' on 'cs2' CRS-2677: Stop of 'ora.storage' on 'cs2' succeeded CRS-2673: Attempting to stop 'ora.asm' on 'cs2' CRS-2677: Stop of 'ora.ctssd' on 'cs2' succeeded CRS-2677: Stop of 'ora.evmd' on 'cs2' succeeded CRS-2677: Stop of 'ora.chad' on 'cs1' succeeded CRS-2673: Attempting to stop 'ora.mgmtdb' on 'cs1' CRS-2677: Stop of 'ora.mgmtdb' on 'cs1' succeeded CRS-2673: Attempting to stop 'ora.MGMTLSNR' on 'cs1' CRS-2673: Attempting to stop 'ora.CRS.dg' on 'cs1' CRS-2673: Attempting to stop 'ora.DATA.dg' on 'cs1' CRS-2677: Stop of 'ora.CRS.dg' on 'cs1' succeeded CRS-2677: Stop of 'ora.DATA.dg' on 'cs1' succeeded CRS-2673: Attempting to stop 'ora.asm' on 'cs1' CRS-2677: Stop of 'ora.MGMTLSNR' on 'cs1' succeeded CRS-2673: Attempting to stop 'ora.cs1.vip' on 'cs1' CRS-2677: Stop of 'ora.cs1.vip' on 'cs1' succeeded CRS-2677: Stop of 'ora.asm' on 'cs2' succeeded CRS-2673: Attempting to stop 'ora.cluster_interconnect.haip' on 'cs2' CRS-2677: Stop of 'ora.cluster_interconnect.haip' on 'cs2' succeeded CRS-2673: Attempting to stop 'ora.cssd' on 'cs2' CRS-2677: Stop of 'ora.cssd' on 'cs2' succeeded CRS-2677: Stop of 'ora.asm' on 'cs1' succeeded CRS-2673: Attempting to stop 'ora.ASMNET1LSNR_ASM.lsnr' on 'cs1' CRS-2677: Stop of 'ora.ASMNET1LSNR_ASM.lsnr' on 'cs1' succeeded CRS-2673: Attempting to stop 'ora.ons' on 'cs1' CRS-2677: Stop of 'ora.ons' on 'cs1' succeeded CRS-2673: Attempting to stop 'ora.net1.network' on 'cs1' CRS-2677: Stop of 'ora.net1.network' on 'cs1' succeeded CRS-2792: Shutdown of Cluster Ready Services-managed resources on 'cs1' has completed CRS-2677: Stop of 'ora.crsd' on 'cs1' succeeded CRS-2673: Attempting to stop 'ora.ctssd' on 'cs1' CRS-2673: Attempting to stop 'ora.evmd' on 'cs1' CRS-2673: Attempting to stop 'ora.storage' on 'cs1' CRS-2677: Stop of 'ora.storage' on 'cs1' succeeded CRS-2673: Attempting to stop 'ora.asm' on 'cs1' CRS-2677: Stop of 'ora.ctssd' on 'cs1' succeeded CRS-2677: Stop of 'ora.evmd' on 'cs1' succeeded CRS-2677: Stop of 'ora.asm' on 'cs1' succeeded CRS-2673: Attempting to stop 'ora.cluster_interconnect.haip' on 'cs1' CRS-2677: Stop of 'ora.cluster_interconnect.haip' on 'cs1' succeeded CRS-2673: Attempting to stop 'ora.cssd' on 'cs1' CRS-2677: Stop of 'ora.cssd' on 'cs1' succeeded
4.以Oracle Grid Infrastructure使用者來執行下面的命令為每個Hub節點上的磁碟組中的磁碟進行標記
[grid@cs2 ~]$ asmcmd afd_label DN1 /dev/asmdisk03 [grid@cs2 ~]$ asmcmd afd_label DN2 /dev/asmdisk05
5.以Oracle Grid Infrastructure使用者來執行下面的命令對每個Hub節點進行磁碟重新掃描
[grid@cs1 ~]$ asmcmd afd_scan [grid@cs2 ~]$ asmcmd afd_scan
6.以root使用者來在所有節點上啟用Oracle Clusterware stack並mount OCR與vote檔案磁碟與資料庫
[root@cs1 bin]# ./crsctl start cluster -all CRS-2672: Attempting to start 'ora.cssdmonitor' on 'cs1' CRS-2672: Attempting to start 'ora.evmd' on 'cs1' CRS-2672: Attempting to start 'ora.cssdmonitor' on 'cs2' CRS-2672: Attempting to start 'ora.evmd' on 'cs2' CRS-2676: Start of 'ora.cssdmonitor' on 'cs1' succeeded CRS-2672: Attempting to start 'ora.cssd' on 'cs1' CRS-2672: Attempting to start 'ora.diskmon' on 'cs1' CRS-2676: Start of 'ora.diskmon' on 'cs1' succeeded CRS-2676: Start of 'ora.evmd' on 'cs1' succeeded CRS-2676: Start of 'ora.cssdmonitor' on 'cs2' succeeded CRS-2672: Attempting to start 'ora.cssd' on 'cs2' CRS-2672: Attempting to start 'ora.diskmon' on 'cs2' CRS-2676: Start of 'ora.diskmon' on 'cs2' succeeded CRS-2676: Start of 'ora.evmd' on 'cs2' succeeded CRS-2676: Start of 'ora.cssd' on 'cs1' succeeded CRS-2672: Attempting to start 'ora.ctssd' on 'cs1' CRS-2672: Attempting to start 'ora.cluster_interconnect.haip' on 'cs1' CRS-2676: Start of 'ora.cssd' on 'cs2' succeeded CRS-2672: Attempting to start 'ora.ctssd' on 'cs2' CRS-2672: Attempting to start 'ora.cluster_interconnect.haip' on 'cs2' CRS-2676: Start of 'ora.ctssd' on 'cs1' succeeded CRS-2676: Start of 'ora.ctssd' on 'cs2' succeeded CRS-2676: Start of 'ora.cluster_interconnect.haip' on 'cs1' succeeded CRS-2672: Attempting to start 'ora.asm' on 'cs1' CRS-2676: Start of 'ora.cluster_interconnect.haip' on 'cs2' succeeded CRS-2672: Attempting to start 'ora.asm' on 'cs2' CRS-2676: Start of 'ora.asm' on 'cs2' succeeded CRS-2672: Attempting to start 'ora.storage' on 'cs2' CRS-2676: Start of 'ora.asm' on 'cs1' succeeded CRS-2672: Attempting to start 'ora.storage' on 'cs1' CRS-2676: Start of 'ora.storage' on 'cs1' succeeded CRS-2672: Attempting to start 'ora.crsd' on 'cs1' CRS-2676: Start of 'ora.crsd' on 'cs1' succeeded CRS-2676: Start of 'ora.storage' on 'cs2' succeeded CRS-2672: Attempting to start 'ora.crsd' on 'cs2' CRS-2676: Start of 'ora.crsd' on 'cs2' succeeded
判斷Oracle ASM Filter Driver是否已經配置
可以透過判斷Oracle ASM例項的SYS_ASMFD_PROPERTIES的AFD_STATE引數值來判斷Oracle ASMFD是否被配置。也可以使用ASMCMD afd_state命令來檢查Oracle ASMFD的狀態
[grid@cs1 ~]$ asmcmd afd_state ASMCMD-9526: The AFD state is 'LOADED' and filtering is 'DISABLED' on host 'cs1.jy.net' [grid@cs2 ~]$ asmcmd afd_state ASMCMD-9526: The AFD state is 'LOADED' and filtering is 'ENABLED' on host 'cs2.jy.net'
下面的查詢如果AFD_STATE引數值等於NOT AVAILABLE就表示Oracle ASMFD沒有被配置
SQL> select sys_context('SYS_ASMFD_PROPERTIES', 'AFD_STATE') from dual; SYS_CONTEXT('SYS_ASMFD_PROPERTIES','AFD_STATE') --------------------------------------------------------------------------- CONFIGURED
設定Oracle ASM Filter Driver的AFD_DISKSTRING引數
AFD_DISKSTRING引數來指定Oracle ASMFD磁碟發現路徑來標識由Oracle ASMFD來管理的磁碟。也可以使用ASMCMD afd_dsset和afd_dsget命令來設定和顯示AFD_DISKSTRING引數:
[grid@cs1 ~]$ asmcmd afd_dsset '/dev/sd*','/dev/asm*','AFD:*' [grid@cs2 ~]$ asmcmd afd_dsset '/dev/sd*','/dev/asm*','AFD:*' [grid@cs1 ~]$ asmcmd dsget parameter:dev/sd*, /dev/asm*, AFD:* profile:dev/sd*,/dev/asm*,AFD:* [grid@cs2 ~]$ asmcmd dsget parameter:dev/sd*, /dev/asm*, AFD:* profile:dev/sd*,/dev/asm*,AFD:*
可以使用alter system語句來設定AFD_DISKSTRING。標識已經被建立在磁碟頭中透過Oracle ASMFD磁碟發現路徑來識別磁碟
SQL> ALTER SYSTEM AFD_DISKSTRING SET 'dev/sd*','/dev/asm*','AFD:*'; System altered. SQL> SELECT SYS_CONTEXT('SYS_ASMFD_PROPERTIES', 'AFD_DISKSTRING') FROM DUAL; SYS_CONTEXT('SYS_ASMFD_PROPERTIES','AFD_DISKSTRING') ----------------------------------------------------------------------------------- dev/sd*,/dev/asm*,AFD:*
為Oracle ASM Filter Driver磁碟設定Oracle ASM ASM_DISKSTRING引數
可以更新Oracle ASM磁碟發現路徑來增加或刪除Oracle ASMFD 磁碟標識名到ASM_DISKSTRING引數,可以使用alter system語句或asmcmd dsset命令
SQL> show parameter asm_diskstring NAME TYPE VALUE ------------------------------------ ---------------------- ------------------------------ asm_diskstring string dev/sd*, /dev/asm*, AFD:* [grid@cs1 ~]$ asmcmd dsset 'dev/sd*','/dev/asm*','AFD:*' [grid@cs2 ~]$ asmcmd dsset 'dev/sd*','/dev/asm*','AFD:*'
測試Filter功能
首先檢查filter功能是否開啟
[grid@cs1 ~]$ asmcmd afd_state ASMCMD-9526: The AFD state is 'LOADED' and filtering is 'ENABLED' on host 'cs1.jy.net' [grid@jytest1 ~]$ asmcmd afd_lsdsk -------------------------------------------------------------------------------- Label Filtering Path ================================================================================ CRS1 ENABLED /dev/asmdisk02 CRS2 ENABLED /dev/asmdisk01 DATA1 ENABLED /dev/asmdisk03 DATA2 ENABLED /dev/asmdisk04 FRA1 ENABLED /dev/asmdisk07 TEST1 ENABLED /dev/asmdisk05 TEST2 ENABLED /dev/asmdisk06
上面的結果顯示filter功能已經開啟,如果要禁用filter功能執行asmcmd afd_filter -d
[grid@cs1 ~]$ asmcmd afd_filter -d [grid@cs1 ~]$ asmcmd afd_state ASMCMD-9526: The AFD state is 'LOADED' and filtering is 'ENABLED' on host 'jytest1.jydba.net' [grid@cs1 ~]$ asmcmd afd_lsdsk There are no labelled devices.
如果要開啟filter功能執行asmcmd afd_filter -e
[grid@jytest1 ~]$ asmcmd afd_lsdsk -------------------------------------------------------------------------------- Label Filtering Path ================================================================================ CRS1 ENABLED /dev/asmdisk02 CRS2 ENABLED /dev/asmdisk01 DATA1 ENABLED /dev/asmdisk03 DATA2 ENABLED /dev/asmdisk04 FRA1 ENABLED /dev/asmdisk07 TEST1 ENABLED /dev/asmdisk05 TEST2 ENABLED /dev/asmdisk06
先用 KFED 讀取一下TEST磁碟組的AFD:TEST1的磁碟頭,驗證一下確實無誤
[grid@jytest1 ~]$ kfed read AFD:TEST1 kfbh.endian: 1 ; 0x000: 0x01 kfbh.hard: 130 ; 0x001: 0x82 kfbh.type: 1 ; 0x002: KFBTYP_DISKHEAD kfbh.datfmt: 1 ; 0x003: 0x01 kfbh.block.blk: 0 ; 0x004: blk=0 kfbh.block.obj: 2147483648 ; 0x008: disk=0 kfbh.check: 3275580027 ; 0x00c: 0xc33d627b kfbh.fcn.base: 0 ; 0x010: 0x00000000 kfbh.fcn.wrap: 0 ; 0x014: 0x00000000 kfbh.spare1: 0 ; 0x018: 0x00000000 kfbh.spare2: 0 ; 0x01c: 0x00000000 kfdhdb.driver.provstr: ORCLDISKTEST1 ; 0x000: length=13 kfdhdb.driver.reserved[0]: 1414743380 ; 0x008: 0x54534554 kfdhdb.driver.reserved[1]: 49 ; 0x00c: 0x00000031 kfdhdb.driver.reserved[2]: 0 ; 0x010: 0x00000000 kfdhdb.driver.reserved[3]: 0 ; 0x014: 0x00000000 kfdhdb.driver.reserved[4]: 0 ; 0x018: 0x00000000 kfdhdb.driver.reserved[5]: 0 ; 0x01c: 0x00000000 kfdhdb.compat: 203424000 ; 0x020: 0x0c200100 kfdhdb.dsknum: 0 ; 0x024: 0x0000 kfdhdb.grptyp: 2 ; 0x026: KFDGTP_NORMAL kfdhdb.hdrsts: 3 ; 0x027: KFDHDR_MEMBER kfdhdb.dskname: TEST1 ; 0x028: length=5 kfdhdb.grpname: TEST ; 0x048: length=4 kfdhdb.fgname: TEST1 ; 0x068: length=5 kfdhdb.fgname: DN1 ; 0x068: length=3
下面直接用dd嘗試將磁碟頭清零。dd 命令本身沒有任何錯誤返回。
[root@cs1 ~]# dd if=/dev/zero of=/dev/asmdisk03 bs=1024 count=10000 10000+0 records in 10000+0 records out 10240000 bytes (10 MB) copied, 1.24936 s, 8.2 MB/s
備份磁碟的前1024位元組並清除,普通使用者沒許可權讀
[root@jytest1 ~]# dd if=/dev/asmdisk05 of=asmdisk05_header bs=1024 count=1 1+0 records in 1+0 records out 1024 bytes (1.0 kB) copied, 0.000282638 s, 3.6 MB/s [root@jytest1 ~]# ls -lrt -rw-r--r-- 1 root root 1024 Aug 31 01:22 asmdisk05_header [root@jytest1 ~]# dd if=/dev/zero of=/dev/asmdisk05 bs=1024 count=1 1+0 records in 1+0 records out 1024 bytes (1.0 kB) copied, 0.000318516 s, 3.2 MB/s
再用 KFED 讀取一下TEST磁碟組的AFD:TEST1的磁碟頭,驗證一下確實無誤
[grid@jytest1 ~]$ kfed read AFD:TEST1 kfbh.endian: 1 ; 0x000: 0x01 kfbh.hard: 130 ; 0x001: 0x82 kfbh.type: 1 ; 0x002: KFBTYP_DISKHEAD kfbh.datfmt: 1 ; 0x003: 0x01 kfbh.block.blk: 0 ; 0x004: blk=0 kfbh.block.obj: 2147483648 ; 0x008: disk=0 kfbh.check: 3275580027 ; 0x00c: 0xc33d627b kfbh.fcn.base: 0 ; 0x010: 0x00000000 kfbh.fcn.wrap: 0 ; 0x014: 0x00000000 kfbh.spare1: 0 ; 0x018: 0x00000000 kfbh.spare2: 0 ; 0x01c: 0x00000000 kfdhdb.driver.provstr: ORCLDISKTEST1 ; 0x000: length=13 kfdhdb.driver.reserved[0]: 1414743380 ; 0x008: 0x54534554 kfdhdb.driver.reserved[1]: 49 ; 0x00c: 0x00000031 kfdhdb.driver.reserved[2]: 0 ; 0x010: 0x00000000 kfdhdb.driver.reserved[3]: 0 ; 0x014: 0x00000000 kfdhdb.driver.reserved[4]: 0 ; 0x018: 0x00000000 kfdhdb.driver.reserved[5]: 0 ; 0x01c: 0x00000000 kfdhdb.compat: 203424000 ; 0x020: 0x0c200100 kfdhdb.dsknum: 0 ; 0x024: 0x0000 kfdhdb.grptyp: 2 ; 0x026: KFDGTP_NORMAL kfdhdb.hdrsts: 3 ; 0x027: KFDHDR_MEMBER kfdhdb.dskname: TEST1 ; 0x028: length=5 kfdhdb.grpname: TEST ; 0x048: length=4 kfdhdb.fgname: TEST1 ; 0x068: length=5
測試dismount磁碟組TEST,再mount磁碟組TEST都能成功
[grid@jytest1 ~]$ asmcmd umount TEST [grid@jytest1 ~]$ asmcmd lsdg State Type Rebal Sector Logical_Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name MOUNTED EXTERN N 512 512 4096 4194304 40960 264 0 264 0 Y CRS/ MOUNTED EXTERN N 512 512 4096 4194304 40960 24732 0 24732 0 N DATA/ MOUNTED EXTERN N 512 512 4096 4194304 40960 18452 0 18452 0 N FRA/ [grid@jytest1 ~]$ asmcmd mount TEST [grid@jytest1 ~]$ asmcmd lsdg State Type Rebal Sector Logical_Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name MOUNTED EXTERN N 512 512 4096 4194304 40960 264 0 264 0 Y CRS/ MOUNTED EXTERN N 512 512 4096 4194304 40960 24732 0 24732 0 N DATA/ MOUNTED EXTERN N 512 512 4096 4194304 40960 18452 0 18452 0 N FRA/ MOUNTED NORMAL N 512 512 4096 4194304 40960 11128 0 5564 0 N TEST/
現在對磁碟/dev/asmdisk05禁用filter功能
[grid@jytest1 ~]$ asmcmd afd_lsdsk -------------------------------------------------------------------------------- Label Filtering Path ================================================================================ CRS1 ENABLED /dev/asmdisk02 CRS2 ENABLED /dev/asmdisk01 DATA1 ENABLED /dev/asmdisk03 DATA2 ENABLED /dev/asmdisk04 FRA1 ENABLED /dev/asmdisk07 TEST1 ENABLED /dev/asmdisk05 TEST2 ENABLED /dev/asmdisk06 [grid@jytest1 ~]$ asmcmd afd_filter -d /dev/asmdisk05 [grid@jytest1 ~]$ asmcmd afd_lsdsk -------------------------------------------------------------------------------- Label Filtering Path ================================================================================ CRS1 ENABLED /dev/asmdisk02 CRS2 ENABLED /dev/asmdisk01 DATA1 ENABLED /dev/asmdisk03 DATA2 ENABLED /dev/asmdisk04 FRA1 ENABLED /dev/asmdisk07 TEST1 DISABLED /dev/asmdisk05 TEST2 ENABLED /dev/asmdisk06
清除磁碟的前1024位元組
[root@jytest1 ~]# dd if=/dev/zero of=/dev/asmdisk05 bs=1024 count=1 1+0 records in 1+0 records out 1024 bytes (1.0 kB) copied, 0.000318516 s, 3.2 MB/s [grid@jytest1 ~]$ asmcmd umount TEST [grid@jytest1 ~]$ asmcmd mount TEST ORA-15032: not all alterations performed ORA-15017: diskgroup "TEST" cannot be mounted ORA-15040: diskgroup is incomplete (DBD ERROR: OCIStmtExecute) [grid@jytest1 ~]$ kfed read AFD:TEST1 kfbh.endian: 0 ; 0x000: 0x00 kfbh.hard: 0 ; 0x001: 0x00 kfbh.type: 0 ; 0x002: KFBTYP_INVALID kfbh.datfmt: 0 ; 0x003: 0x00 kfbh.block.blk: 0 ; 0x004: blk=0 kfbh.block.obj: 0 ; 0x008: file=0 kfbh.check: 0 ; 0x00c: 0x00000000 kfbh.fcn.base: 0 ; 0x010: 0x00000000 kfbh.fcn.wrap: 0 ; 0x014: 0x00000000 kfbh.spare1: 0 ; 0x018: 0x00000000 kfbh.spare2: 0 ; 0x01c: 0x00000000 000000000 00000000 00000000 00000000 00000000 [................] Repeat 255 times KFED-00322: invalid content encountered during block traversal: [kfbtTraverseBlock][Invalid OSM block type][][0]
可以看到當filter功能被禁用時就失去了保護功能
使用之前備份的磁碟前1024位元組資訊來恢復磁碟頭
[root@jytest1 ~]# dd if=asmdisk05_header of=/dev/asmdisk05 bs=1024 count=1 1+0 records in 1+0 records out 1024 bytes (1.0 kB) copied, 0.000274822 s, 3.7 MB/s [grid@jytest1 ~]$ kfed read /dev/asmdisk05 kfbh.endian: 1 ; 0x000: 0x01 kfbh.hard: 130 ; 0x001: 0x82 kfbh.type: 1 ; 0x002: KFBTYP_DISKHEAD kfbh.datfmt: 1 ; 0x003: 0x01 kfbh.block.blk: 0 ; 0x004: blk=0 kfbh.block.obj: 2147483648 ; 0x008: disk=0 kfbh.check: 1645917758 ; 0x00c: 0x621ab63e kfbh.fcn.base: 0 ; 0x010: 0x00000000 kfbh.fcn.wrap: 0 ; 0x014: 0x00000000 kfbh.spare1: 0 ; 0x018: 0x00000000 kfbh.spare2: 0 ; 0x01c: 0x00000000 kfdhdb.driver.provstr: ORCLDISKTEST1 ; 0x000: length=13 kfdhdb.driver.reserved[0]: 1414743380 ; 0x008: 0x54534554 kfdhdb.driver.reserved[1]: 49 ; 0x00c: 0x00000031 kfdhdb.driver.reserved[2]: 0 ; 0x010: 0x00000000 kfdhdb.driver.reserved[3]: 0 ; 0x014: 0x00000000 kfdhdb.driver.reserved[4]: 0 ; 0x018: 0x00000000 kfdhdb.driver.reserved[5]: 0 ; 0x01c: 0x00000000 kfdhdb.compat: 203424000 ; 0x020: 0x0c200100 kfdhdb.dsknum: 0 ; 0x024: 0x0000 kfdhdb.grptyp: 2 ; 0x026: KFDGTP_NORMAL kfdhdb.hdrsts: 3 ; 0x027: KFDHDR_MEMBER kfdhdb.dskname: TEST1 ; 0x028: length=5 kfdhdb.grpname: TEST ; 0x048: length=4 kfdhdb.fgname: TEST1 ; 0x068: length=5
再次mount磁碟組TEST
[grid@jytest1 ~]$ asmcmd lsdg State Type Rebal Sector Logical_Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name MOUNTED EXTERN N 512 512 4096 4194304 40960 264 0 264 0 Y CRS/ MOUNTED EXTERN N 512 512 4096 4194304 40960 24732 0 24732 0 N DATA/ MOUNTED EXTERN N 512 512 4096 4194304 40960 18452 0 18452 0 N FRA/ [grid@jytest1 ~]$ asmcmd mount TEST [grid@jytest1 ~]$ asmcmd lsdg State Type Rebal Sector Logical_Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name MOUNTED EXTERN N 512 512 4096 4194304 40960 264 0 264 0 Y CRS/ MOUNTED EXTERN N 512 512 4096 4194304 40960 24732 0 24732 0 N DATA/ MOUNTED EXTERN N 512 512 4096 4194304 40960 18452 0 18452 0 N FRA/ MOUNTED NORMAL N 512 512 4096 4194304 40960 11120 0 5560 0 N TEST/
設定,清除與掃描Oracle ASM Filter Driver Labels
給由Oracle ASMFD管理的磁碟設定一個標識,在標識設定後,指定的磁碟將會由Oracle ASMFD來管理。可以使用ASMCMD afd_label,afd_unlabel與afd_scan來增加,刪除和掃描標識檢視已經標識過的磁碟可以看到磁碟/dev/asmdisk03和 /dev/asmdisk05沒有被標識。
[grid@cs1 ~]$ asmcmd afd_lsdsk -------------------------------------------------------------------------------- Label Filtering Path ================================================================================ CRS1 ENABLED /dev/asmdisk02 CRS2 ENABLED /dev/asmdisk01 DATA1 ENABLED /dev/asmdisk04 SQL> select group_number,disk_number,name,label,path from v$asm_disk; GROUP_NUMBER DISK_NUMBER NAME LABEL PATH ------------ ----------- ------------------------------ -------------------------------------------------- -------------------------------------------------- 0 0 CRS1 AFD:CRS1 0 1 /dev/asmdisk05 0 2 DATA1 AFD:DATA1 0 3 /dev/asmdisk03 0 4 CRS2 AFD:CRS2 1 0 CRS1 CRS1 /dev/asmdisk02 1 1 CRS2 CRS2 /dev/asmdisk01 2 0 DATA1 DATA1 /dev/asmdisk04
設定標識
[grid@cs2 ~]$ asmcmd afd_label DN1 /dev/asmdisk03 [grid@cs2 ~]$ asmcmd afd_label DN2 /dev/asmdisk05
檢視已經標識過的磁碟可以看到磁碟/dev/asmdisk03和 /dev/asmdisk05已經被標識
[grid@cs1 ~]$ asmcmd afd_lsdsk -------------------------------------------------------------------------------- Label Filtering Path ================================================================================ CRS1 ENABLED /dev/asmdisk02 CRS2 ENABLED /dev/asmdisk01 DATA1 ENABLED /dev/asmdisk04 DN1 ENABLED /dev/asmdisk03 DN2 ENABLED /dev/asmdisk05 SQL> select group_number,disk_number,name,label,path from v$asm_disk; GROUP_NUMBER DISK_NUMBER NAME LABEL PATH ------------ ----------- ------------------------------ -------------------------------------------------------------- -------------------------------------------------- 0 0 CRS1 AFD:CRS1 0 1 DN2 /dev/asmdisk05 0 2 DN1 AFD:DN1 0 3 DATA1 AFD:DATA1 0 4 DN1 /dev/asmdisk03 0 6 CRS2 AFD:CRS2 0 5 DN2 AFD:DN2 1 1 CRS2 CRS2 /dev/asmdisk01 1 0 CRS1 CRS1 /dev/asmdisk02 2 0 DATA1 DATA1 /dev/asmdisk04
清除標識
[grid@cs1 ~]$ asmcmd afd_unlabel 'DN1' [grid@cs1 ~]$ asmcmd afd_unlabel 'DN2'
注意在清除標識時,如果標識所標記的磁碟已經用來建立磁碟組了那麼是不能清除的,例如
[grid@cs1 ~]$ asmcmd afd_unlabel 'TEST1' disk AFD:TEST1 is already provisioned for ASM No devices to be unlabeled. ASMCMD-9514: ASM disk label clear operation failed.
掃描標識
[grid@cs1 ~]$ asmcmd afd_scan
檢視已經標識過的磁碟可以看到 /dev/asmdisk03和 /dev/asmdisk05的標識已經清除了
[grid@cs1 ~]$ asmcmd afd_lsdsk -------------------------------------------------------------------------------- Label Filtering Path ================================================================================ CRS1 ENABLED /dev/asmdisk02 CRS2 ENABLED /dev/asmdisk01 DATA1 ENABLED /dev/asmdisk04 SQL> select group_number,disk_number,name,label,path from v$asm_disk; GROUP_NUMBER DISK_NUMBER NAME LABEL PATH ------------ ----------- ------------------------------ -------------------------------------------------------------- -------------------------------------------------- 0 0 CRS1 AFD:CRS1 0 1 /dev/asmdisk05 0 2 DATA1 AFD:DATA1 0 3 /dev/asmdisk03 0 4 CRS2 AFD:CRS2 1 1 CRS2 CRS2 /dev/asmdisk01 1 0 CRS1 CRS1 /dev/asmdisk02 2 0 DATA1 DATA1 /dev/asmdisk04
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-2213274/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 12c新特性--ASMFD(ASM Filter Driver)特性OracleASMFilter
- Oracle ASM Filter Driver (ASMFD)OracleASMFilter
- 12.2 ASM Filter DriverASMFilter
- 【ASK_ORACLE】Oracle RAC配置ASM Filter Driver(ASMFD)(一)ASMFD簡介OracleASMFilter
- 【BUILD_ORACLE】Oracle RAC配置ASM Filter Driver(ASMFD)(二)詳細配置步驟UIOracleASMFilter
- oracle asm Unable to mount ASMlib driver filesystemOracleASM
- oracle ASM錯誤Initializing the Oracle ASMLib driver:[FAILED]OracleASMAI
- Oracle 12C ASM asmcmd amdu_extractOracleASM
- Oracle 12C Database File Mapping for Oracle ASM FilesOracleDatabaseAPPASM
- 【oracle 12c asm專題】flex diskgroup相關概念OracleASMFlex
- 12c ASM中建立ACFSASM
- kattle Driver class 'oracle.jdbc.driver.OracleDriver' could not be foundOracleJDBC
- 針對OEM廠商所做的Windows Filter Driver類別更新WindowsFilter
- 12c下更換ASM磁碟ASM
- Linux 6.9 加盤後的Oracle 12c ASM DiskGroup配置過程LinuxOracleASM
- Oracle 12c ASM|專題配額組的配額真的管用嗎?OracleASM
- Oracle 12c ASM專題|Flex磁碟組到底有多Fexible?OracleASMFlex
- ASM 翻譯系列第二彈:ASM 12C 版本新特性ASM
- oracle asmOracleASM
- oracle全文索引之FILTER_4_PROCEDURE_FILTEROracle索引Filter
- oracle全文索引之FILTER_1_NULL_FILTEROracle索引FilterNull
- Initializing the Oracle ASMLib driver: [FAILED]OracleASMAI
- Oracle 12cOracle
- 【ORACLE ASM】ASM 支援工具簡介OracleASM
- oracle asm命令OracleASM
- Oracle ASM 管理OracleASM
- Oracle ASM 限制OracleASM
- oracle asm asmcmdOracleASM
- 【新炬網路名師大講堂】關於Oracle 12c Flex ASM特性的理解OracleFlexASM
- oracle全文索引之FILTER_2_INSO_FILTEROracle索引Filter
- Shutting down the Oracle ASMLib driver: [ failed ]OracleASMAI
- oracle 12c Deprecation of Oracle StreamsOracle
- Oracle 12C GDSOracle
- oracle 12c R1 對存放在asm磁碟中的password 進行移動OracleASM
- Oracle ASM Disk DirectoryOracleASM
- Oracle ASM File DirectoryOracleASM
- Oracle ASM Allocation TableOracleASM
- Oracle ASM Disk PartnerOracleASM