我們將嘗試找出文件的AU分布然後根據AU分布定位磁盤所在的位置設置有可能利用操作系統層面的工具拷貝ASM其中的數據出來我將使用兩個例子來說明如何查看au分布
spfile
查看當前的spfile
sys@GTG> show parameter spfile;
NAME TYPE VALUE
spfile string +DATA/gtg/spfilegtgora
查找對應的DISKGROUP信息
+ASM> select namegroup_numberfile_number from v$asm_alias where lower(name)=spfilegtgora;
NAME GROUP_NUMBER FILE_NUMBER
spfileGTGora
+ASM> select namegroup_number from v$asm_diskgroup;
NAME GROUP_NUMBER
DATA
FRA
SYSDG
通過視圖查看對應的AU分布
+ASM> select group_kffxpnumber_kffxppxn_kffxpxnum_kffxpdisk_kffxp from x$kffxp where group_kffxp= and number_kffxp=;
GROUP_KFFXP NUMBER_KFFXP PXN_KFFXP XNUM_KFFXP DISK_KFFXP
上述查詢顯示spfile文件在磁盤組的號磁盤上只占用了個AU那麼我們可以直接通過kfed工具來查看下磁盤上的分配屬性
首先我們要找出對應的磁盤信息注意磁盤序號是從開始的
+ASM> select group_numberdisk_numberpath from v$asm_disk where group_number= and disk_number=;
GROUP_NUMBER DISK_NUMBER PATH
/dev/asmgf
文件的FILE_NUMBER=我們應該從au這裡面查找也即asm元數據之後的第個文件而blkn是保留位置因此我們從blkn開始查找
[grid@gtser ~]$ kfed read /dev/asmgf aun= blkn= | more
kfbhendian: ; x: x
kfbhhard: ; x: x
kfbhtype: ; x: KFBTYP_FILEDIR
kfbhdatfmt: ; x: x
kfbhblockblk: ; x: blk=
kfbhblockobj: ; x: file=
kfbhcheck: ; xc: xffb
kfbhfcnbase: ; x: xbb
kfbhfcnwrap: ; x: x
kfbhspare: ; x: x
kfbhspare: ; xc: x
kfffdbnodeincarn: ; x: A= NUMM=x
kfffdbnodefrlistnumber: ; x: xffffffff
kfffdbnodefrlistincarn: ; x: A= NUMM=x
kfffdbhibytes: ; xc: x
kfffdblobytes: ; x: x
kfffdbxtntcnt: ; x: x
kfffdbxtnteof: ; x: x
kfffdbblkSize: ; xc: x
kfffdbflags: ; x: O= S= S= D= C= I= R= A=
kfffdbfileType: ; x: xf
kfffdbdXrs: ; x: SCHE=x NUMB=x
kfffdbiXrs: ; x: SCHE=x NUMB=x
kfffdbdXsiz[]: ; x: xffffffff
kfffdbdXsiz[]: ; x: x
kfffdbdXsiz[]: ; xc: x
kfffdbiXsiz[]: ; x: xffffffff
kfffdbiXsiz[]: ; x: x
kfffdbiXsiz[]: ; x: x
kfffdbxtntblk: ; xc: x
kfffdbbreak: ; xe: xc
kfffdbpriZn: ; x: KFDZN_COLD
kfffdbsecZn: ; x: KFDZN_COLD
kfffdbubspare: ; x: x
kfffdbalias[]: ; x: xffffffff
kfffdbalias[]: ; x: xffffffff
kfffdbstrpwdth: ; xc: x
kfffdbstrpsz: ; xd: x
kfffdbusmsz: ; xe: x
kfffdbcretshi: ; x: HOUR=xa DAYS=x MNTH=x YEAR=xdd
kfffdbcretslo: ; x: USEC=x MSEC=xf SECS=x MINS=xb
kfffdbmodtshi: ; x: HOUR=xa DAYS=x MNTH=x YEAR=xdd
kfffdbmodtslo: ; xc: USEC=x MSEC=xf SECS=x MINS=xb
kfffdbdasz[]: ; x: x
kfffdbdasz[]: ; x: x
kfffdbdasz[]: ; x: x
kfffdbdasz[]: ; x: x
kfffdbpermissn: ; x: x
kfffdbubspar: ; x: x
kfffdbubspar: ; x: x
kfffdbuserentnum: ; x: x
kfffdbuserentinc: ; xa: x
kfffdbgroupentnum: ; xc: x
kfffdbgroupentinc: ; xe: x
kfffdbspare[]: ; x: x
kfffdbspare[]: ; x: x
kfffdbspare[]: ; x: x
kfffdbspare[]: ; xc: x
kfffdbspare[]: ; x: x
kfffdbspare[]: ; x: x
kfffdbspare[]: ; x: x
kfffdbspare[]: ; xc: x
kfffdbspare[]: ; x: x
kfffdbspare[]: ; x: x
kfffdbspare[]: ; x: x
kfffdbspare[]: ; xc: x
kfffdbusm: ; xa: length=
kfffde[]xptrau: ; xa: x
kfffde[]xptrdisk: ; xa: x
kfffde[]xptrflags: ; xa: L= E= D= S=
kfffde[]xptrchk: ; xa: x
kfffde[]xptrau: ; xa: xf
kfffde[]xptrdisk: ; xac: x
kfffde[]xptrflags: ; xae: L= E= D= S=
kfffde[]xptrchk: ; xaf: x
kfffde[]xptrau: ; xb: xffffffff
kfffde[]xptrdisk: ; xb: xffff
kfffde[]xptrflags: ; xb: L= E= D= S=
kfffde[]xptrchk: ; xb: xa
注意上面的信息
kfffde[]xptrau: ; xa: xf
kfffde[]xptrdisk: ; xa: x
這說明從文件開始相關的au分布信息是放在這裡的我們繼續查看這個au的信息
+ASM> select group_numberdisk_numberpath from v$asm_disk where group_number= and disk_number=;
GROUP_NUMBER DISK_NUMBER PATH
/dev/asmgg
而號文件是存放在blkn==也即第塊中(blkn=)
[grid@gtser ~]$ kfed read /dev/asmgg aun= blkn= | more
kfbhendian: ; x: x
kfbhhard: ; x: x
kfbhtype: ; x: KFBTYP_FILEDIR
kfbhdatfmt: ; x: x
kfbhblockblk: ; x: blk=
kfbhblockobj: ; x: file=
kfbhcheck: ; xc: xcdfa
kfbhfcnbase: ; x: xcf
kfbhfcnwrap: ; x: x
kfbhspare: ; x: x
kfbhspare: ; xc: x
kfffdbnodeincarn: ; x: A= NUMM=xa
kfffdbnodefrlistnumber: ; x: xffffffff
kfffdbnodefrlistincarn: ; x: A= NUMM=x
kfffdbhibytes: ; xc: x
kfffdblobytes: ; x: xe
kfffdbxtntcnt: ; x: x
kfffdbxtnteof: ; x: x
kfffdbblkSize: ; xc: x
kfffdbflags: ; x: O= S= S= D= C= I= R= A=
kfffdbfileType: ; x: xd
kfffdbdXrs: ; x: SCHE=x NUMB=x
kfffdbiXrs: ; x: SCHE=x NUMB=x
kfffdbdXsiz[]: ; x: xffffffff
kfffdbdXsiz[]: ; x: x
kfffdbdXsiz[]: ; xc: x
kfffdbiXsiz[]: ; x: xffffffff
kfffdbiXsiz[]: ; x: x
kfffdbiXsiz[]: ; x: x
kfffdbxtntblk: ; xc: x
kfffdbbreak: ; xe: xc
kfffdbpriZn: ; x: KFDZN_COLD
kfffdbsecZn: ; x: KFDZN_COLD
kfffdbubspare: ; x: x
kfffdbalias[]: ; x: xe
kfffdbalias[]: ; x: xa
kfffdbstrpwdth: ; xc: x
kfffdbstrpsz: ; xd: x
kfffdbusmsz: ; xe: x
kfffdbcretshi: ; x: HOUR=xd DAYS=x MNTH=x YEAR=xdd
kfffdbcretslo: ; x: USEC=x MSEC=xb SECS=xb MINS=x
kfffdbmodtshi: ; x: HOUR=xb DAYS=x MNTH=x YEAR=xdd
kfffdbmodtslo: ; xc: USEC=x MSEC=x SECS=x MINS=x
kfffdbdasz[]: ; x: x
kfffdbdasz[]: ; x: x
kfffdbdasz[]: ; x: x
kfffdbdasz[]: ; x: x
kfffdbpermissn: ; x: x
kfffdbubspar: ; x: x
kfffdbubspar: ; x: x
kfffdbuserentnum: ; x: x
kfffdbuserentinc: ; xa: x
kfffdbgroupentnum: ; xc: x
kfffdbgroupentinc: ; xe: x
kfffdbspare[]: ; x: x
kfffdbspare[]: ; x: x
kfffdbspare[]: ; x: x
kfffdbspare[]: ; xc: x
kfffdbspare[]: ; x: x
kfffdbspare[]: ; x: x
kfffdbspare[]: ; x: x
kfffdbspare[]: ; xc: x
kfffdbspare[]: ; x: x
kfffdbspare[]: ; x: x
kfffdbspare[]: ; x: x
kfffdbspare[]: ; xc: x
kfffdbusm: ; xa: length=
kfffde[]xptrau: ; xa: xa
kfffde[]xptrdisk: ; xa: x
kfffde[]xptrflags: ; xa: L= E= D= S=
kfffde[]xptrchk: ; xa: x
kfffde[]xptrau: ; xa: xffffffff
kfffde[]xptrdisk: ; xac: xffff
kfffde[]xptrflags: ; xae: L= E= D= S=
kfffde[]xptrchk: ; xaf: xa
我們可以看到只有
kfffde[]xptrau: ; xa: xa
而下一個
kfffde[]xptrau: ; xa: xffffffff
是還沒分配數據的這也印證了我們的配置external的dg沒有冗余因此每個au只有primary extents即個au接下來我們通過os的dd命令將該文件copy出來我們可以直接將spfile dd到文本文件
+ASM> select group_kfdatnumber_kfdataunum_kfdat from x$kfdat where fnum_kfdat=;
GROUP_KFDAT NUMBER_KFDAT AUNUM_KFDAT
從上面信息我們得到該文件業績spfile的在磁盤的物理位置
[grid@gtser ~]$ dd if=/dev/asmgg skip= of=/tmp/dbspfile bs=k count=
+ records in
+ records out
bytes ( MB) copied seconds MB/s
[grid@gtser ~]$ cat /tmp/dbspfile
C"(%tQCC"yKGTG__db_cache_size=
GTG__java_pool_size=
GTG__large_pool_size=
GTG__oracle_base=/u/app/oracle#ORACLE_BASE set from environment
GTG__pga_aggregate_target=
GTG__sga_target=
GTG__shared_io_pool_size=
GTG__shared_pool_size=
GTG__streams_pool_size=
*audit_file_dest=/u/app/oracle/admin/GTG/adump
*audit_trail=db
*compatible=
*control_files=+DATA/gtg/controlfile/currentCC"y/+FRA/gtg/controlfile/current
*db_block_size=
*db_create_file_dest=+DATA
*db_domain=
*db_name=GTG
*db_recovery_file_dest=+FRA
*db_recovery_file_dest_size=
*diagnostic_dest=/u/app/oracle
*dispatchers=(PROTOCOL=TCP) (SERVICE=GTGXDB)
*log_archive_format=%t_%s_%rdbf
*nls_language=SIMPLIFIED CHINESE
*nls_territory=CHINA
*open_cursors=
*pga_aggregate_target=
*processes=
*remote_login_passwordfile=ECC"YcXCLUSIVE
*sga_target=
*undo_tablespace=UNDOTBS
CC"FeCC"EeCC"DeC[grid@gtser ~]$
控制文件
sys@GTG> show parameter control_files
NAME TYPE VALUE
control_files string +DATA/gtg/controlfile/curr
ent +FRA/gtg/
controlfile/current
+ASM> select XNUM_KFFXP PXN_KFFXP LXN_KFFXP DISK_KFFXP AU_KFFXPsize_kffxp
from X$KFFXP
where GROUP_KFFXP= and NUMBER_KFFXP= and XNUM_KFFXP<>
order by ;
XNUM_KFFXP PXN_KFFXP LXN_KFFXP DISK_KFFXP AU_KFFXP SIZE_KFFXP
rows selected
這個控制文件使用了個au我們看看實際的磁盤分布情況怎麼樣
[grid@gtser ~]$ kfed read /dev/asmgg aun= blkn= | more
kfbhendian: ; x: x
kfbhhard: ; x: x
kfbhtype: ; x: KFBTYP_FILEDIR
kfbhdatfmt: ; x: x
kfbhblockblk: ; x: blk=
kfbhblockobj: ; x: file=
kfbhcheck: ; xc: xaabceb
kfbhfcnbase: ; x: xce
kfbhfcnwrap: ; x: x
kfbhspare: ; x: x
kfbhspare: ; xc: x
kfffdbnodeincarn: ; x: A= NUMM=xe
kfffdbnodefrlistnumber: ; x: xffffffff
kfffdbnodefrlistincarn: ; x: A= NUMM=x
kfffdbhibytes: ; xc: x
kfffdblobytes: ; x: xc
kfffdbxtntcnt: ; x: x
kfffdbxtnteof: ; x: x
kfffdbblkSize: ; xc: x
kfffdbflags: ; x: O= S= S= D= C= I= R= A=
kfffdbfileType: ; x: x
kfffdbdXrs: ; x: SCHE=x NUMB=x
kfffdbiXrs: ; x: SCHE=x NUMB=x
kfffdbdXsiz[]: ; x: xffffffff
kfffdbdXsiz[]: ; x: x
kfffdbdXsiz[]: ; xc: x
kfffdbiXsiz[]: ; x: xffffffff
kfffdbiXsiz[]: ; x: x
kfffdbiXsiz[]: ; x: x
kfffdbxtntblk: ; xc: x
kfffdbbreak: ; xe: xc
kfffdbpriZn: ; x: KFDZN_COLD
kfffdbsecZn: ; x: KFDZN_COLD
kfffdbubspare: ; x: x
kfffdbalias[]: ; x: xa
kfffdbalias[]: ; x: xffffffff
kfffdbstrpwdth: ; xc: x
kfffdbstrpsz: ; xd: x
kfffdbusmsz: ; xe: x
kfffdbcretshi: ; x: HOUR=xb DAYS=x MNTH=x YEAR=xdd
kfffdbcretslo: ; x: USEC=x MSEC=x SECS=x MINS=x
kfffdbmodtshi: ; x: HOUR=x DAYS=x MNTH=x YEAR=xdd
kfffdbmodtslo: ; xc: USEC=x MSEC=x SECS=x MINS=x
kfffdbdasz[]: ; x: x
kfffdbdasz[]: ; x: x
kfffdbdasz[]: ; x: x
kfffdbdasz[]: ; x: x
kfffdbpermissn: ; x: x
kfffdbubspar: ; x: x
kfffdbubspar: ; x: x
kfffdbuserentnum: ; x: x
kfffdbuserentinc: ; xa: x
kfffdbgroupentnum: ; xc: x
kfffdbgroupentinc: ; xe: x
kfffdbspare[]: ; x: x
kfffdbspare[]: ; x: x
kfffdbspare[]: ; x: x
kfffdbspare[]: ; xc: x
kfffdbspare[]: ; x: x
kfffdbspare[]: ; x: x
kfffdbspare[]: ; x: x
kfffdbspare[]: ; xc: x
kfffdbspare[]: ; x: x
kfffdbspare[]: ; x: x
kfffdbspare[]: ; x: x
kfffdbspare[]: ; xc: x
kfffdbusm: ; xa: length=
kfffde[]xptrau: ; xa: x
kfffde[]xptrdisk: ; xa: x
kfffde[]xptrflags: ; xa: L= E= D= S=
kfffde[]xptrchk: ; xa: xb
kfffde[]xptrau: ; xa: xd
kfffde[]xptrdisk: ; xac: x
kfffde[]xptrflags: ; xae: L= E= D= S=
kfffde[]xptrchk: ; xaf: x
kfffde[]xptrau: ; xb: x
kfffde[]xptrdisk: ; xb: x
kfffde[]xptrflags: ; xb: L= E= D= S=
kfffde[]xptrchk: ; xb: xa
kfffde[]xptrau: ; xb: xe
kfffde[]xptrdisk: ; xbc: x
kfffde[]xptrflags: ; xbe: L= E= D= S=
kfffde[]xptrchk: ; xbf: x
kfffde[]xptrau: ; xc: x
kfffde[]xptrdisk: ; xc: x
kfffde[]xptrflags: ; xc: L= E= D= S=
kfffde[]xptrchk: ; xc: x
kfffde[]xptrau: ; xc: xf
kfffde[]xptrdisk: ; xcc: x
kfffde[]xptrflags: ; xce: L= E= D= S=
kfffde[]xptrchk: ; xcf: x
kfffde[]xptrau: ; xd: x
kfffde[]xptrdisk: ; xd: x
kfffde[]xptrflags: ; xd: L= E= D= S=
kfffde[]xptrchk: ; xd: x
kfffde[]xptrau: ; xd: x
kfffde[]xptrdisk: ; xdc: x
kfffde[]xptrflags: ; xde: L= E= D= S=
kfffde[]xptrchk: ; xdf: xa
kfffde[]xptrau: ; xe: x
kfffde[]xptrdisk: ; xe: x
kfffde[]xptrflags: ; xe: L= E= D= S=
kfffde[]xptrchk: ; xe: xf
kfffde[]xptrau: ; xe: x
kfffde[]xptrdisk: ; xec: x
kfffde[]xptrflags: ; xee: L= E= D= S=
kfffde[]xptrchk: ; xef: xb
kfffde[]xptrau: ; xf: x
kfffde[]xptrdisk: ; xf: x
kfffde[]xptrflags: ; xf: L= E= D= S=
kfffde[]xptrchk: ; xf: xe
kfffde[]xptrau: ; xf: x
kfffde[]xptrdisk: ; xfc: x
kfffde[]xptrflags: ; xfe: L= E= D= S=
kfffde[]xptrchk: ; xff: x
kfffde[]xptrau: ; x: x
kfffde[]xptrdisk: ; x: x
kfffde[]xptrflags: ; x: L= E= D= S=
kfffde[]xptrchk: ; x: xd
kfffde[]xptrau: ; x: x
kfffde[]xptrdisk: ; xc: x
kfffde[]xptrflags: ; xe: L= E= D= S=
kfffde[]xptrchk: ; xf: x
kfffde[]xptrau: ; x: x
kfffde[]xptrdisk: ; x: x
kfffde[]xptrflags: ; x: L= E= D= S=
kfffde[]xptrchk: ; x: xc
kfffde[]xptrau: ; x: x
kfffde[]xptrdisk: ; xc: x
kfffde[]xptrflags: ; xe: L= E= D= S=
kfffde[]xptrchk: ; xf: xe
kfffde[]xptrau: ; x: xffffffff
kfffde[]xptrdisk: ; x: xffff
kfffde[]xptrflags: ; x: L= E= D= S=
kfffde[]xptrchk: ; x: xa
kfffde[]xptrau: ; x: xffffffff
kfffde[]xptrdisk: ; xc: xffff
kfffde[]xptrflags: ; xe: L= E= D= S=
kfffde[]xptrchk: ; xf: xa
kfffde[]xptrau: ; x: xffffffff
這個結果符合我們的預期占用了個au也即Mb
sys@GTG> select nameblock_size/ from v$controlfile ;
NAME BLOCK_SIZE/
+DATA/gtg/controlfile/current
+FRA/gtg/controlfile/current
EOF
From:http://tw.wingwit.com/Article/program/Oracle/201311/19045.html