熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

Oracle如何在ASM中定位文件的分布

2022-06-13   來源: Oracle 

  我們將嘗試找出文件的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
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.