本篇介紹ASM元信息的十號文件和十一號文件,ASM元信息10號文件是ASM用戶目錄,11號文件是組目錄。它們是用來為ASM文件訪問控制特性提供支持的元信息結構。
ASM文件訪問控制機制用來限制特定的ASM客戶端(通常就是數據庫實例)對文件的訪問,它是基于操作系統層database home的effective user標識號實現的。
這些信息可以通過V$ASM_USER、V$ASM_USERGROUP、$ASM_USERGROUP_MEMBER視圖查詢到。
如果要使用ASM文件訪問控制特性,我們需要適當的設置操作系統用戶和組。通過ALTER DISKGROUP ADD USERGROUP命令將用戶和組添加至ASM磁盤組中。這一步略過,我們把關注點集中在ASM用戶和組目錄上。
下面是操作系統中我們創建的用戶。
$ id grid
uid=1100(grid) gid=1000(oinstall) groups=1000(oinstall),1020(asmadmin),1021(asmdba),1031(dba) $ id oracle
uid=1101(oracle) gid=1000(oinstall) groups=1000(oinstall),1021(asmdba),1031(dba) $ id oracle1
uid=1102(oracle1) gid=1033(dba1) groups=1033(dba1) $ id oracle2
uid=1103(oracle2) gid=1034(dba2) groups=1034(dba2)
接下來就是我在磁盤組中設置的用戶和組。
SQL> SELECT u.group_number "Disk group#",
u.os_id "OS ID",
u.os_name "OS user",
u.user_number "ASM user#",
g.usergroup_number "ASM group#",
g.name "ASM user group" FROM v$asm_user u, v$asm_usergroup g, v$asm_usergroup_member m
WHERE u.group_number=g.group_number and u.group_number=m.group_number and u.user_number=m.member_number and g.usergroup_number=m.usergroup_number
ORDER BY 1, 2; Disk group# OS ID OS user ASM user# ASM group# ASM user group ----------- ----- ------- --------- ---------- -------------- 1 1100 grid 1 3 GRIDTEAM 1101 oracle 2 1 DBATEAM1 1102 oracle1 3 2 DBATEAM2 1103 oracle2 4 2 DBATEAM2 2 1101 oracle 2 1 DBATEAM1
在1號磁盤組中獲取ASM用戶和組目錄所在的AU。
SQL> SELECT x.number_kffxp "File#", x.disk_kffxp "Disk#", x.xnum_kffxp "Extent", x.au_kffxp "AU",
d.name "Disk name" FROM x$kffxp x, v$asm_disk_stat d
WHERE x.group_kffxp=d.group_number and x.disk_kffxp=d.disk_number and d.group_number=1 and x.number_kffxp in (10, 11)
ORDER BY 1, 2; File# Disk# Extent AU Disk name ---------- ---------- ---------- ---------- ------------------------------ 10 0 0 2139 ASMDISK5 1 0 2139 ASMDISK6 11 0 0 2140 ASMDISK5 1 0 2140 ASMDISK6
對于每個用戶,用戶目錄元信息中都有一個block相對應,而block號是跟用戶號(對應v$asm_user的user_number列)相對應的。如果我們有四個用戶,用戶號碼分別對應1-4,那么他們也分別位于1-4號block中。接下來加以驗證。
$ kfed read /dev/oracleasm/disks/ASMDISK5 aun=2139 blkn=1 | more
kfbh.endian: 1 ; 0x000: 0x01 kfbh.hard: 130 ; 0x001: 0x82 kfbh.type: 24 ; 0x002: KFBTYP_USERDIR ... kfzude.user: 1100 ; 0x038: length=4 ...
所以,1號block對應1100號操作系統用戶。這與上文v$asm_user查詢結果是匹配的。接下來看其它block。
$ let b=1 $ while (( $b <= 4 )) do kfed read /dev/oracleasm/disks/ASMDISK5 aun=2139 blkn=$b | grep kfzude.user
let b=b+1 done
kfzude.user: 1100 ; 0x038: length=4 kfzude.user: 1101 ; 0x038: length=4 kfzude.user: 1102 ; 0x038: length=4 kfzude.user: 1103 ; 0x038: length=4
正如所想的,以上顯示了ASM用戶目錄中的四個操作系統用戶對應的ID。
組目錄也是一個條目對應一個block,block號也是跟ASM組號碼匹配的。繼續驗證。
$ let b=1 $ while (( $b <= 3 )) do kfed read /dev/oracleasm/disks/ASMDISK5 aun=2140 blkn=$b | grep kfzgde.name
let b=b+1 done
kfzgde.name: DBATEAM1 ; 0x03c: length=8 kfzgde.name: DBATEAM2 ; 0x03c: length=8 kfzgde.name: GRIDTEAM ; 0x03c: length=8
以上顯示了該磁盤組中對應的組名稱。
ASM用戶目錄和組目錄是用來為ASM文件訪問控制特性提供支持的元信息結構,該特性在11.2版本中引入。這些信息可以通過V$ASM_USER、V$ASM_USERGROUP、$ASM_USERGROUP_MEMBER視圖查詢到。
本站文章版權歸原作者及原出處所有 。內容為作者個人觀點, 并不代表本站贊同其觀點和對其真實性負責,本站只提供參考并不構成任何投資及應用建議。本站是一個個人學習交流的平臺,網站上部分文章為轉載,并不用于任何商業目的,我們已經盡可能的對作者和來源進行了通告,但是能力有限或疏忽,造成漏登,請及時聯系我們,我們將根據著作權人的要求,立即更正或者刪除有關內容。本站擁有對此聲明的最終解釋權。