Oracle ASM Template Directory
Template Directory包含關於磁碟組所有檔案模板的資訊。有兩種型別的模板:一種是系統自帶的,一種是使用者建立的,預設的模板(系統自帶的)已經包含ASM的所有檔案型別,建立磁碟組時對於每種支援的檔案型別將使用預設的系統模板進行填充。使用者建立的模板只會在使用者特別指定時會使用。如果使用者建立自己的模板將會增加新的條目,模板目錄透過模板號進行索引。
每種模板條目包含以下內容:
.每個模板的名稱(對於預設模板它的名稱其實就是檔案型別)
.檔案冗餘度(預設是磁碟組的冗餘度)
.檔案條帶(預設是根據檔案型別來決定檔案的條帶)
.系統標識(是否為系統自帶的模板)
Template Directory在每個磁碟組中的檔案號為5(F5)。預設模板的模板名與檔案型別相關。檔案冗餘預設為磁碟組冗餘。檔案條帶預設是檔案型別特定。系統標識(system flag)被設定為系統模板。使用者建立的模板不會設定系統標識(system flag)。
透過查詢檢視V$ASM_TEMPLATE可檢視完整的模板資訊
10G:
sql> col system for a20 sql> col primary_region for a20 sql> col mirror_region for a20 sql> select * from v$asm_template where group_number=1; GROUP_NUMBER ENTRY_NUMBER REDUNDANCY STRIPE SYSTEM NAME ------------ ------------ ------------ ------------ -------------------- ------------------------------ 1 0 MIRROR COARSE Y PARAMETERFILE 1 1 MIRROR COARSE Y DUMPSET 1 2 HIGH FINE Y CONTROLFILE 1 3 MIRROR COARSE Y ARCHIVELOG 1 4 MIRROR FINE Y ONLINELOG 1 5 MIRROR COARSE Y DATAFILE 1 6 MIRROR COARSE Y TEMPFILE 1 7 MIRROR COARSE Y BACKUPSET 1 8 MIRROR COARSE Y AUTOBACKUP 1 9 MIRROR COARSE Y XTRANSPORT 1 10 MIRROR COARSE Y CHANGETRACKING 1 11 MIRROR FINE Y FLASHBACK 1 12 MIRROR COARSE Y DATAGUARDCONFIG 13 rows selected.
11G:
sql> col system for a20 sql> col primary_region for a20 sql> col mirror_region for a20 sql> select * from v$asm_template where group_number=3; GROUP_NUMBER ENTRY_NUMBER REDUNDANCY STRIPE SYSTEM NAME PRIMARY_REGION MIRROR_REGION ------------ ------------ ------------ ------------ -------------------- ------------------------------ -------------------- -------------------- 3 60 MIRROR COARSE Y PARAMETERFILE COLD COLD 3 61 MIRROR COARSE Y ASMPARAMETERFILE COLD COLD 3 63 MIRROR COARSE Y DUMPSET COLD COLD 3 64 HIGH FINE Y CONTROLFILE COLD COLD 3 65 MIRROR COARSE Y FLASHFILE COLD COLD 3 66 MIRROR COARSE Y ARCHIVELOG COLD COLD 3 67 MIRROR COARSE Y ONLINELOG COLD COLD 3 68 MIRROR COARSE Y DATAFILE COLD COLD 3 69 MIRROR COARSE Y TEMPFILE COLD COLD 3 170 MIRROR COARSE Y BACKUPSET COLD COLD 3 171 MIRROR COARSE Y XTRANSPORT BACKUPSET COLD COLD 3 172 MIRROR COARSE Y AUTOBACKUP COLD COLD 3 173 MIRROR COARSE Y XTRANSPORT COLD COLD 3 174 MIRROR COARSE Y CHANGETRACKING COLD COLD 3 175 MIRROR COARSE Y FLASHBACK COLD COLD 3 176 MIRROR COARSE Y DATAGUARDCONFIG COLD COLD 3 177 MIRROR COARSE Y OCRFILE COLD COLD 17 rows selected.
redundancy欄位所顯示的mirror為存在映象副本,high為存在三份映象副本,unprot為不支援映象。其中name為controlfile的控制檔案redundancy為high,stripe為fine,即為控制檔案存在三份映象,並使用細粒度條帶。這是預設的資料庫控制檔案的模板,這是為什麼每一個控制檔案都會被做三重映象的原因。有意思的是,我們可以使用它建立任何的資料庫檔案。例如下面將使用控制檔案模板來建立一個表空間的資料檔案。
連線資料庫的例項
SQL> create tablespace cs datafile '+DATADG(CONTROLFILE)' size 10m; Tablespace created. SQL> select name from v$datafile where name like '%cs%'; NAME -------------------------------------------------------------------------------- +DATADG/jyrac/datafile/cs.271.931879611
上面建立了一個表空間,ASM給我新建立的資料檔案分配了編號271。
檢視該資料檔案的冗餘度
連線ASM例項
SQL> select group_number, name, type "redundancy" from v$asm_diskgroup where name='DATADG'; GROUP_NUMBER NAME redundancy ------------ ------------------------------ ------------------------------ 3 DATADG NORMAL
這是一個normal冗餘的磁碟組,但是由於使用了控制檔案模板來建立資料檔案,因此透過查詢內部檢視 x$kffxp來獲得想要的資訊
SQL> select x.xnum_kffxp "virtual extent",pxn_kffxp "physical extent",x.au_kffxp "au",x.disk_kffxp "disk #",d.name "disk name" 2 from x$kffxp x, v$asm_disk_stat d 3 where x.group_kffxp=d.group_number 4 and x.disk_kffxp=d.disk_number 5 and x.group_kffxp=3 6 and x.number_kffxp=271 7 order by 1,2,3; virtual extent physical extent au disk # disk name -------------- --------------- ---------- ---------- ------------------------------------------------------------ 0 0 1654 0 DATADG_0001 0 1 1647 2 DATADG_0002 0 2 1647 1 DATADG_0003 1 3 1648 2 DATADG_0002 1 4 1648 1 DATADG_0003 1 5 1655 3 DATADG_0000 2 6 1649 1 DATADG_0003 2 7 1655 0 DATADG_0001 2 8 1656 3 DATADG_0000 3 9 1657 3 DATADG_0000 3 10 1650 1 DATADG_0003 3 11 1656 0 DATADG_0001 4 12 1657 0 DATADG_0001 4 13 1658 3 DATADG_0000 4 14 1649 2 DATADG_0002 5 15 1650 2 DATADG_0002 5 16 1658 0 DATADG_0001 5 17 1651 1 DATADG_0003 6 18 1652 1 DATADG_0003 6 19 1651 2 DATADG_0002 6 20 1659 0 DATADG_0001 7 21 1659 3 DATADG_0000 7 22 1652 2 DATADG_0002 7 23 1653 1 DATADG_0003 24 rows selected.
這個檔案被做了三重映象,因為每一個虛擬區都由三個物理區組成,但是為什麼我的資料檔案僅僅只有1MB,但是卻有8個虛擬區呢,這是因為控制檔案的模板是一個細粒度條帶的模板。隱含引數_asm_stripesize代表了細粒度條帶的大小,預設為128K,隱含引數_asm_stripewidth代表了條帶的寬度,預設為8。但是有一點很奇怪,細粒度條帶下,資料檔案頭好像沒有獨佔一個extent,因為上面查詢顯示了這個1MB的檔案一共佔用了8個extent,而不是9個extent,按照條頻寬度是8的設定,檔案內容本身就應該佔用了8個extent。
10g:
SQL> col name for a30 SQL> col value for a50 SQL> col describ for a50 SQL> select x.ksppinm NAME,y.ksppstvl value,x.ksppdesc describ 2 from x$ksppi x, x$ksppcv y 3 where x.inst_id=USERENV('Instance') 4 and y.inst_id=USERENV('Instance') 5 and x.indx=y.indx 6 and x.ksppinm like '%asm_strip%'; NAME VALUE DESCRIB ------------------------------ -------------------------------------------------- -------------------------------------------------- _asm_stripewidth 8 ASM file stripe width _asm_stripesize 131072 ASM file stripe size
11g:
SQL> col value for a50 SQL> col describ for a50 SQL> select x.ksppinm NAME,y.ksppstvl value,x.ksppdesc describ 2 from x$ksppi x, x$ksppcv y 3 where x.inst_id=USERENV('Instance') 4 and y.inst_id=USERENV('Instance') 5 and x.indx=y.indx 6 and x.ksppinm like '%asm_strip%'; NAME VALUE DESCRIB ------------------------------ -------------------------------------------------- -------------------------------------------------- _asm_stripewidth 8 ASM file stripe width _asm_stripesize 131072 ASM file stripe size
而stripsize * stripwidth 恰好是1m,這也正是我們的AU size大小,而1m通常也是大多數作業系統所能達到的單次最大io量。asm 的條帶分為兩種COARSE和FINE,也被稱為粗粒度條帶和細粒度條帶。粗粒度條帶,預設就等於你的AU size,比如我這裡au size為1m,那麼粗粒度條帶大小就是1m,這種情況下的條帶,通常實用於連續性的大IO操作,例如全表掃描。細粒度條帶,預設是128k,8個條帶組成一個AU,這種條帶型別通常適用於對於讀寫延遲比較敏感的檔案,比如redo logfile,controlfile。從前面10g的查詢結果可以看出,其中也就redo和controlfile以及flashback是fine型別的,其他的均為粗條帶,而在11g中變為只有controlfile為fine型別。
使用者模板
如果想要檔案具有三重映象但是粗粒度的條帶,該怎麼做?可以手工建立一個我們自己的模板,COARSE關鍵字指定了這是一個粗粒度的條帶:
連線ASM例項
SQL> alter diskgroup datadg add template cs_stripe_coarse attributes (HIGH COARSE); Diskgroup altered. SQL> select * from v$asm_template where group_number=3; GROUP_NUMBER ENTRY_NUMBER REDUNDANCY STRIPE SYSTEM NAME PRIMARY_REGION MIRROR_REGION ------------ ------------ ------------ ------------ -------------------- ------------------------------ -------------------- -------------------- 3 60 MIRROR COARSE Y PARAMETERFILE COLD COLD 3 61 MIRROR COARSE Y ASMPARAMETERFILE COLD COLD 3 63 MIRROR COARSE Y DUMPSET COLD COLD 3 64 HIGH FINE Y CONTROLFILE COLD COLD 3 65 MIRROR COARSE Y FLASHFILE COLD COLD 3 66 MIRROR COARSE Y ARCHIVELOG COLD COLD 3 67 MIRROR COARSE Y ONLINELOG COLD COLD 3 68 MIRROR COARSE Y DATAFILE COLD COLD 3 69 MIRROR COARSE Y TEMPFILE COLD COLD 3 170 MIRROR COARSE Y BACKUPSET COLD COLD 3 171 MIRROR COARSE Y XTRANSPORT BACKUPSET COLD COLD 3 172 MIRROR COARSE Y AUTOBACKUP COLD COLD 3 173 MIRROR COARSE Y XTRANSPORT COLD COLD 3 174 MIRROR COARSE Y CHANGETRACKING COLD COLD 3 175 MIRROR COARSE Y FLASHBACK COLD COLD 3 176 MIRROR COARSE Y DATAGUARDCONFIG COLD COLD 3 177 MIRROR COARSE Y OCRFILE COLD COLD 3 280 HIGH COARSE N CS_STRIPE_COARSE COLD COLD 18 rows selected.
從上面name=CS_STRIPE_COARSE,stripe=COARSE可以看到建立的模板為粗粒度條帶,連線資料庫例項
SQL> create tablespace cs_stripe_coarse datafile '+DATADG(CS_STRIPE_COARSE)' size 1m; Tablespace created. SQL> select name from v$datafile where name like 'cs_stripe_coarse%'; no rows selected SQL> select name from v$datafile where name like '%cs_stripe_coarse%'; NAME -------------------------------------------------------------------------------- +DATADG/jyrac/datafile/cs_stripe_coarse.272.931882089
建立的資料檔案的檔案號為272,連線ASM例項
SQL> select x.xnum_kffxp "virtual extent",pxn_kffxp "physical extent",x.au_kffxp "au",x.disk_kffxp "disk #",d.name "disk name" 2 from x$kffxp x, v$asm_disk_stat d 3 where x.group_kffxp=d.group_number 4 and x.disk_kffxp=d.disk_number 5 and x.group_kffxp=3 6 and x.number_kffxp=272 7 order by 1,2,3; virtual extent physical extent au disk # disk name -------------- --------------- ---------- ---------- ------------------------------------------------------------ 0 0 1664 0 DATADG_0001 0 1 1664 3 DATADG_0000 0 2 1659 1 DATADG_0003 1 3 1660 2 DATADG_0002 1 4 1665 0 DATADG_0001 1 5 1665 3 DATADG_0000 6 rows selected.
上面的結果顯示了只為1MB的檔案分配了2個虛擬區, 一個是ASM的檔案頭,一個用於檔案。注意這個檔案是三重的映象和粗粒度的條帶。也可以建立一個根本不做映象的模板,例如:
連線ASM例項
SQL> alter diskgroup datadg add template no_mirroring attributes (UNPROTECTED); Diskgroup altered. SQL> select * from v$asm_template where group_number=3; GROUP_NUMBER ENTRY_NUMBER REDUNDANCY STRIPE SYSTEM NAME PRIMARY_REGION MIRROR_REGION ------------ ------------ ------------ ------------ -------------------- ------------------------------ -------------------- -------------------- 3 60 MIRROR COARSE Y PARAMETERFILE COLD COLD 3 61 MIRROR COARSE Y ASMPARAMETERFILE COLD COLD 3 63 MIRROR COARSE Y DUMPSET COLD COLD 3 64 HIGH FINE Y CONTROLFILE COLD COLD 3 65 MIRROR COARSE Y FLASHFILE COLD COLD 3 66 MIRROR COARSE Y ARCHIVELOG COLD COLD 3 67 MIRROR COARSE Y ONLINELOG COLD COLD 3 68 MIRROR COARSE Y DATAFILE COLD COLD 3 69 MIRROR COARSE Y TEMPFILE COLD COLD 3 170 MIRROR COARSE Y BACKUPSET COLD COLD 3 171 MIRROR COARSE Y XTRANSPORT BACKUPSET COLD COLD 3 172 MIRROR COARSE Y AUTOBACKUP COLD COLD 3 173 MIRROR COARSE Y XTRANSPORT COLD COLD 3 174 MIRROR COARSE Y CHANGETRACKING COLD COLD 3 175 MIRROR COARSE Y FLASHBACK COLD COLD 3 176 MIRROR COARSE Y DATAGUARDCONFIG COLD COLD 3 177 MIRROR COARSE Y OCRFILE COLD COLD 3 280 HIGH COARSE N CS_STRIPE_COARSE COLD COLD 3 281 UNPROT COARSE N NO_MIRRORING COLD COLD 19 rows selected.
從上面name=CS_STRIPE_COARSE,redundancy=unprot可以看到建立的模板不支援映象,連線資料庫例項
SQL> create tablespace not_important datafile '+DATADG(NO_MIRRORING)' size 1m; Tablespace created. SQL> select name from v$datafile where name like '%not_important%'; NAME -------------------------------------------------------------------------------- +DATADG/jyrac/datafile/not_important.273.931882831
建立的資料檔案的檔案號為273,連線ASM例項
SQL> select x.xnum_kffxp "virtual extent",pxn_kffxp "physical extent",x.au_kffxp "au",x.disk_kffxp "disk #",d.name "disk name" 2 from x$kffxp x, v$asm_disk_stat d 3 where x.group_kffxp=d.group_number 4 and x.disk_kffxp=d.disk_number 5 and x.group_kffxp=3 6 and x.number_kffxp=273 7 order by 1,2,3; virtual extent physical extent au disk # disk name -------------- --------------- ---------- ---------- ------------------------------------------------------------ 0 0 1661 2 DATADG_0002 1 1 1660 1 DATADG_0003
上面的結果顯示一個虛擬extent只有一個物理extent,所以這個檔案沒有被映象(雖然它是在一個normal冗餘的磁碟組中)。
小結:
模板目錄包含了磁碟組中檔案模板的資訊,每一個磁碟組都會有預設的一系列的系統自帶的模板,使用者也可以額外根據需要建立自己的模板。一個比較好的使用模板的方法是在一個normal冗餘的磁碟中建立一個三重映象的模板,注意如果想要使這個做法生效,我們至少需要這個磁碟組中有3個故障磁碟組(failgroup)。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-2131614/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle ASM User Directory and Group DirectoryOracleASM
- Oracle ASM Disk DirectoryOracleASM
- Oracle ASM File DirectoryOracleASM
- Oracle ASM Alias DirectoryOracleASM
- Oracle ASM Attributes DirectoryOracleASM
- Oracle ASM Volume DirectoryOracleASM
- Oracle ASM Active Change DirectoryOracleASM
- Oracle ASM Disk Used Space DirectoryOracleASM
- Oracle ASM Staleness Directory and Staleness RegistryOracleASM
- Oracle ASM Continuing Operations DirectoryOracleASMUI
- ASM Disk Group TemplateASM
- asm中template特性測試!ASM
- create directory in OracleOracle
- move oracle 10 directoryOracle
- ORACLE directory 目錄Oracle
- 學習ASM技術(五)--檔名和TemplateASM
- oracle 之recovery directory databaseOracleDatabase
- oracle controlfile template;Oracle
- Oracle Directory(目錄)介紹Oracle
- oracle asmOracleASM
- Oracle Directory目錄的知識Oracle
- 【ORACLE ASM】ASM 支援工具簡介OracleASM
- oracle asm命令OracleASM
- Oracle ASM 管理OracleASM
- Oracle ASM 限制OracleASM
- oracle asm asmcmdOracleASM
- ORACLE directory 目錄讀寫檔案Oracle
- Using Create directory & UTL_FILE in OracleOracle
- Oracle ASM Allocation TableOracleASM
- Oracle ASM Disk PartnerOracleASM
- Oracle Find block in ASMOracleBloCASM
- Oracle ASM 詳解OracleASM
- oracle中create directory建在/home/oracle下可能存在的風險Oracle
- oracle ASM中ASM_POWER_LIMIT引數OracleASMMIT
- Oracle ASM神書《撥雲見日 解密Oracle ASM核心》出版了OracleASM解密
- go text/template & Consul-templateGo
- 【ASM】Oracle asm刪除磁碟組注意事項ASMOracle
- 【DIRECTORY】普通使用者建立Oracle DIRECTORY資料庫物件的許可權需求及探索Oracle資料庫物件