日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

oracle block 格式

瀏覽:144日期:2023-11-18 11:19:07
信息參考:; www.ixora.com.au 非凡感謝 overtime 大哥對我的無私的幫助和對我一直鼓勵支持我的網友這些資料是沒得到Oracle 支持的 所以不能保證信息的正確性 請謹慎使用 科技無限 隨便轉載 oracle 8.1.7 8k block; windows XP;create table t(n number);insert into t values(1);--- 從 dbms_rowid 中看出table t 的數據在datafile 4 的第3個 block 上alter system dump datafile 4 block 3;下面是 dump 的文件的信息還可以用下面的語句然后再用上面的 dump 語句看內存中 block 的2進制存儲格式但這內存中的2進制格式和datafile中block數據表示的順序會略有不同可能是內存尋址的緣故吧ALTER SESSION SET EVENTS '10289 trace name context forever, level 1';ALTER SESSION SET EVENTS '10289 trace name context off';~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 下面的是 udump 目錄下面 dump 文件的信息-----------------------; 第一部分buffer tsn: 7 rdba: 0x01000003 (4/3)scn: 0x0000.000802a5 seq: 0x01 flg: 0x02 tail: 0x02a50601frmt: 0x02 chkval: 0x0000 type: 0x06=trans data--- buffer tsn: 數據文件對應的 tablespace 的 number這只是dump文件中記錄的數據而已---;;;;block 中是沒有記錄 tablespace 的 number 的--- rdba:;4 bytes;datafile 中 block 的地址; 標示的第幾個 block--- scn:;;6 bytes;system change number --- seq:;;1 byte;;A sequence number incremented for each change to a block at the same SCN---;;;;;A new SCN is allocated if the sequence number wraps. ---;;;;;同一個SCN影響這個block中的行數大于 254 行就會為這個事務分配一個新的SCN---;;;;;如下面的操作就可能引起同一個SCN但影響的同一個block 中的行超過254行---;;;;;'delete from table_name'; ---;;;;;影響的行數(最大254) 是用從 0x01 到 0xfe 表示的---;;;;;當這個byte 的數據為 0xff 的時候標志這個 block 壞調了---> ora-01578--- flg:;;1 byte;;1 = virgin block---;;2 = last change to the block was for a cleanout operation---;;4 = checksum value is set---;;8 = temporary data ---;;這是一個可以組合的值 也就是說有為 6 的時候是 2,4 兩種情況的組合--- tail:;4 bytes;這是記錄在 block 的最后面的 4 bytes 的數據--- dump文件中只是把他寫在了前面而已--- frmt:;1 byte;;oracle 8 以后看見的都是 0x02 --- chkval:; 2 bytes;在 init 文件中設置了 db_block_checksum=true 才有值--- type:;1 byte;;這個 block 的類型 這里主要看 0x06 這種 因為這種是用來存用戶數據的--- 其他的類型可以參考http://www.ixora.com.au/notes/cache_block_types.htm-----------------------; 第二部分Block header dump:; 0x01000003Object id on Block? Yseg/obj: 0x614a; csc: 0x00.802a3; itc: 1; flg: O; typ: 1 - DATA fsl: 0; fnx: 0x0 ver: 0x01 --- seg/obj: 4 bytes;這里是16進制的 對應 sys.obj$.obj# 數據字典的數據--- csc:;;6 bytes;The SCN at which the last full cleanout was performed on the block--- itc:;;1 byte;;下面的Itl事務條的個數 8.1.7的文檔上面說可以使用 INITRANS 在建表的時候---;;;;限制這個值的大小(max 255超過會報ORA-02207) 但要考慮block 的空間是否夠---;;;;表在8i中 INITRANS default為1 ,; 9.2.0中 INITRANS default為2---;;;;Yong Huang 說有些時候發生ORA-00060可以把表的 INITRANS 設置大點---;;;;ixora 上說當block的空間不夠創建一個ITL的時候一樣可能引起ORA-00054--- flg:;;2 bytes;0 indicates that the block is on a freelist. Otherwise the flag is ----;;;;9i 的ASSM 的情況下這個值為 E---;;;;ixora 上說他占用 2 bytes 但我下面的試驗和他的結果有一定的出入---;;;;我觀察到的情況是 :---;;;;Object id on Block? Y---;;;;flg: O---;;;;ver: 0x01---;上面的3項是用同一個 byte 來表示的--- typ:;;1 byte;;1 為 table ; 2 為 index.; oracle進行查詢的時候是根據 obj$表中的情況來---;;;;判定對象的類型的,不是根據這個typ。 也就是說假如有一個表但改變表中block---;;;;的這個標志位,一樣可以查詢出數據來,但dump block 時會出錯,如下面的ora---;;;;ORA-00600: 內部錯誤代碼,自變量: [4555], [0], [], [], [], [], [], []---;;;;錯誤中的 [0] 就是typ對應的數據--- fsl:;;1 byte;;Index to the first slot on the ITL freelist.; ITL TX freelist slot--- fnx:;;4 bytes;自由列表中下一塊的地址 Null if this block is not on a freelist ---;;;;有數據例如: fnx: 0x1000029--- ver:;;1 byte;;format (version) 這個數據沒有看到相關的文檔介紹 從ixora上說是占用1byte---;;;;但我從下面的2進制文件中看到的有不同 下面有介紹--- unused:; 4 bytes;在這里還有4 bytes 的空閑的空間 但在上面的 dump 文件上是沒顯示出來的---;;;;;這個unused 的4 bytes是 ixora 上面的說法---;;9i 的 ASSM 的 ' fsl: 0; fnx: 0x0 ver: 0x01 '這一段數據的情況已經改變了-----------------------; 第三部分ItlXid; Uba;;;Flag; Lck;;;;;Scn/Fsc0x01xid:; 0x0003.045.000000b4;uba: 0x0080170a.00c7.36; --U-;1; fsc 0x0000.000802a5--- 這是 oracle 用來記錄事務信息的部分; 這里顯示的只有一個ITL條 有多少個ITL條是可以動態增加的--- 只要 block 中的空間足夠; 可以定義初始化的 ITL 條的個數 用 INITRANS 這storage 參數--- 這里有多少個 ITL 可以從上面 '第二部分' 的 'itc:' 看出來--- 這部分牽扯 rollback segment 或 undo tablespace --- Itl itl 的序號--- xid:;;8 bytes;值可以用select XIDUSN, XIDSLOT,XIDSQN from v$transaction;查到---;;This is comprised of the rollback segment number (2 bytes), the slot number---;;in the transaction table of that rollback segment (2 bytes), and the number---;;of times use of that transaction table has wrapped (4 bytes).; --- Uba:;;8 bytes;The location of the undo for the most recent change to this block by this---;;transaction. This is comprised of the DBA of the rollback segment block (4---;;bytes), the sequence number (2 bytes), and the record number for the change---;;in that undo block (1 byte), plus 1 unused byte.; --- flag;;1 nibble---- = transaction is active, or committed pending cleanout---;;C--- = transaction has been committed and locks cleaned out---;;-B-- = this undo record contains the undo for this ITL entry---;;--U- = transaction committed (maybe long ago); SCN is an upper bound---;;---T = transaction was still active at block cleanout SCN--- Lck;;;3 nibbles; The number of row-level locks held in the block by this transaction.; --- Scn/Fsc; 6 bytes;If the transaction has been cleaned out, this is the commit SCN or an upper---;;bound thereof. Otherwise the leading two bytes contain the free space credit---;;for the transaction - that is, the number of bytes freed in the block by the---;;transaction --- 參考http://www.ixora.com.au/q+a/datablock.htm#end--------------------------; 第四部分data_block_dump===============tsiz: 0x1fb8hsiz: 0x14pbl: 0x02476c44bdba: 0x01000003flag=-----------ntab=1nrow=1frre=-1fsbo=0x14fseo=0x1fb2avsp=0x1f9btosp=0x1f9b0xe:pti[0];nrow=1;offs=00x12:pri[0];offs=0x1fb2---;;;;tsiz:;hsiz:pbl:bdba: 在數據文件都是沒有存儲的 --- tsiz:;;;;;除了上面的3部分和block尾部的4個字節剩下的空間 0x1fb8就是8120字節; 8k的block: ---;;;8192-20(block head)-24(Transaction Header)-24(一個事務條)-4(block tail)=8120--- hsiz:;;;;;數據塊頭20個字節+數據塊尾4個字節=24字節(0x14)--- pbl: ptr to buffer holding the block 我是用的專用模式dump的datafile中的block出來---;;;在同一個session的dump文件中 dump 出來的block 的這個都是同一個值--- bdba:;;;;;和第一部分中的rdba 一個意思--- flag 1 byte;;N=pctfree hit(clusters), F=don't put on free list--- K=flushable cluster keys. 當然還有別的標記: A ...--- ntab 1 byte;;這block中有幾個table的數據cluster這個就可能大于1--- nrow 2 bytes;block 中有多少行數據--- frre 2 bytes;First free row index entry. -1=you have to add one.--- fsbo 2 bytes;Free Space Begin offset--- fseo 2 bytes;Free Space End offset--- avsp 2 bytes;Available space in the block;<pctfree and pctused? >--- tosp 2 bytes;Total available space when all TXs commit--- 0xe: nrow;2 bytes;block 中的這個table有多少行數據--- 0xe: offs;2 bytes;偏移量 用 cluster 的時候可以看出值-----------------------; 第五部分block_row_dump:tab 0, row 0, @0x1fb2tl: 6 fb: --H-FL-- lb: 0x1 cc: 1col; 0: [ 2]; c1 02end_of_block_dump--- tl:;;這條記錄中的長度 包括row head 的一般情況的 3 字節和表示數據長度的1字節和數據本身的長度--- fb:1 byteK = Cluster Key (Flags may change meaning if this is set to show HASH cluster) ---;;;;;C = Cluster table member ---;;;;;H = Head piece of row ---;;;;;D = Deleted row ---;;;;;F = First data piece ---;;;;;L = Last data piece ---;;;;;P = First column continues from previous piece ---;;;;;N = Last column continues in next piece--- lb:1 byte和上面第三部分的 ITL 的lck相對應; 表示這行是否被 lock 了--- cc:1 byte表示這行有幾列數據--- col; 0: [ 2] : 1 byte; 表示這行的這列的長度 --- c1 02 :;;;;;這就是table中的數據 '1'; 可以通過下面的語句看 oracle真正使用的是---;;;;;那些16進制的數據來表示的用戶數據 select dump(col_name,16) from table_name;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 下面的數據就是上面的 dump 文件對應的2進制文件; 我依照 2 進制數據的順序解釋內容------------------------; 下面的對應上面dump 文件的第一部分Offset;;;0; 1; 2; 3; 4; 5; 6; 78; 9; A; B; C; D; E; F0000600006 02 00 00 03 00 00 01; A5 02 08 00 00 00 01 020000601000 00 00 00 --- 06;;;;:type: 0x06=trans data (對應上面dump文件中的內容)--- 02;;;;:frmt: 0x02--- 00 00;:filler; 應該是 unused; 上面的dump文件中并沒有顯示這部分內容--- 03 00 00 01;;;:rdba: 0x01000003 在同一個 tablespace 中是唯一的 當 datafile 中可能不唯一---;;;;;來看看他的規律 :連續建4個 datafile; 他們的第一block為---;;;;;0x 01 00 04 01---;;;;;0x 01 00 08 01---;;;;;0x 01 00 0c 01---;;;;;0x 01 00 00 02---;;;;;對應的數據在是 0x01040001 , 0x01080001 , 0x010c0001 , 0x02000001---;;;;;這就可以看出一個 datafile 的最大的容量是 0x01040001~0x0107ffff 總共是---;;;;;4M(因為還有一個datafile head)個block 假如block 是8k 一個datafile就是 32G ---;;;;;這就是oracle 的文檔上面對 oracle 的 datafile (8k的時候)最大 32G 的原因---;;;;;同樣可以看出一個 tablespace 的datafile 可以從 0x0100 到 0xfffe 就是1023---;;;;;個 datafile 這也是 oracle 的文檔上面說一個tablesapce可以有1022 個datafile---;;;;;的原因(其實一個 tablespace 可以有 1023 個 datafile我建過)---;;;;;oracle10G中 block 的big datafile 的這段數據的情況是0x00000001~0xffffffff---;;;;;這也是為什么一個 big datafile 的tablesapce只有一個datafile 并且最大值為---;;;;;32T (8k的時候 : 4G*8k=32T ; 32k的數據塊的時候為128T)--- A5 02 08 00 00 00 :; scn: 0x0000.000802a5oracle是c語言寫的 這6位不正好是一個 unsigned long---;;;;;和 unsigned int的組合--- 01;;;;;:; seq: 0x01--- 02;;;;;:; flg: 0x02--- 00 00;;:; chkval: 0x0000 在 init 中設置了 db_block_checksum=true 才有值 --- 00 00;;:; unused 上面的dump文件中并沒有顯示這部分內容---;上面的20個bytes的數據任改其中的值肯定發生ORA-XXXXX(不一定就是ora-01578 我還看見過ora-600) ------------------------; 下面的對應上面dump 文件的第二部分 01 00 00 00; 4A 61 00 00 A3 02 08 000000602000 00 00 00 01 00 03 00; 00 00 00 00 --- 01;;;;;:typ: 1 - DATA--- 00;;;;;:只見過 0x00 沒見過其他的值 don't know--- 00;;;;;:見過有其他值 但用編輯器改這個值 在 dump 文件中顯示不出來變化--- 00;;;;;:沒見變過其他的值 don't know--- 4A 61 00 00;;;;:seg/obj: 0x614a--- A3 02 08 00 00 00 :csc: 0x00.802a3--- 00 00;;:見過有其他值 但用編輯器改這個值 在 dump 文件中顯示不出來變化;;;;--- 01;;;;;:itc: 1;下面的 ITL 條目的個數--- 00;;;;;:見過有其他值 但用編輯器改這個值 在 dump 文件中顯示不出來變化--- 03;;;;;:flg: O ver: 0x01;;;;;Object id on Block? Y---;;;;從我的觀察中 dump 出來的文件中flg;;ver;;Object id on Block---;;;;他們共同占用的這個一個字節他的規律可以從下面的情況看出--- 2進制數據;;flg;;;;ver;;;;Object id on Block?---0x00 -;;;;;0x00N---0x01 0;;;;;0x00N---0x02 -;;;;;0x01Y---0x03 0;;;;;0x01Y---0x04 -;;;;;0x02Y---0x05 0;;;;;0x02Y---0x06 -;;;;;0x03 Y---0x07 0;;;;;0x03Y---0x08 -;;;;;0x04N---0x09 0;;;;;0x04N---0x0a -;;;;;0x05Y---0x0b 0;;;;;0x05Y---0x0c -;;;;;0x06Y---0x0d 0;;;;;0x06Y---0x0e -;;;;;0x07Y---0x0f 0;;;;;0x07Y---;;; ;;;;;0x10 ... 類似上面的循環了這種情況在9i上已經改變因為ASSM的出現--- 00;;;;;:fsl: 0--- 00 00 00 00;;;;:fnx: 0x0------------------------; 下面的對應上面dump 文件的第三部分 03 00 45 0000006030B4 00 00 00 0A 17 80 00; C7 00 36 00 01 20 00 0000006040A5 02 08 00 --- 03 00 45 00 B4 00 00 00; :xid:; 0x0003.045.000000b4--- 0A 17 80 00 C7 00 36 00; :uba:; 0x0080170a.00c7.36--- 01; 0;:Lck鎖定的row數 這里還用到了下一個 byte 的數據--- 2;;;;;:Flag; 2 對應的二進制表示為 0010 正好和dump文件中的 --U- 吻合--- 00 00 A5 02 08 00;;;;;:Scn/Fsc------------------------; 下面的對應上面dump 文件的第四部分 00 01 01 00; FF FF 14 00 B2 1F 9B 1F000060509B 1F 00 00 01 00 B2 1F--- 00;;;;:flag--- 01;;;;:ntab--- 01 00;:nrow--- FF FF;:frre--- 14 00;:fsbo--- B2 1F;:fseo--- 9B 1F;:avsp--- 9B 1F;:tosp--- 00 00;:0xe: offs--- 01 00;:0xe: nrow --- B2 1F ;:0x12:pri[0];offs=0x1fb2------------------------; 下面的對應上面dump 文件的第五部分--- 這部分和上面的數據中間省略了很多 因為這列子中這些部分沒存儲數據 00007FF000 00 00 00 00 00 2C 01; 01 02 C1 02 --- 這是 block 中存用戶數據的地方--- 2C;;:;fb:--- 01;;:;lb: 這一行是否被lock--- 01;;:;這條記錄中有多少列的數據; 從這里看出因為只用一個byte去記錄這一行有多少列---;;;;所以最多是255列 但一個表可以最多是1000列 假如table 的列大于255列 這里就會---;;;;發生鏈接 根據一行記錄的長度來看是 塊內的鏈接或者是塊與塊直接的鏈接 ---;;;;這也是為什么table 的設計會盡量少于255列的原因--- 02;;:;第1列的數據的長度是多少--- C1 02; :;存儲在 block 中的數據 '1'------------------------; 下面的對應上面dump 文件的第一部分的 'tail: 0x02a50601' 01 06 A5 02; --- 這是用來效驗 block 是否完整的標志 改這 block 最后的4 bytes 數據中的任意肯定ora-1578~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~上面只是講解了一個最簡單的oracle 的block 的格式 其他還有很多的情況 如 cluster , index 等long , lob , long raw 這些在 block 中的表示因為數據長度的不同都會有不同的體現有的時候改動block 中的任意數據不一定會發生 ORA-01578 因為下面的兩個參數沒有設置為 truedb_block_checking;db_block_checksum;這兩個參數對于system tablespace 默認都是true 所以改變 system tablespace 中的數據肯定會發生ORA-01578隨著oracle版本的不斷升級 oracle 對block中存儲數據的正確性也在不斷的提升要求 而且通過常規的手段想去了解 oracle block 的格式也可能越來越困難
標簽: Oracle 數據庫
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
综合亚洲自拍| 88久久精品| 久久狠狠久久| 岛国av在线网站| 免费精品一区| 亚洲精品中文字幕99999| 日本不卡免费高清视频在线| 99国产精品久久久久久久| 色婷婷成人网| 国产一级一区二区| 91欧美在线| 日本午夜精品视频在线观看| 7777精品| 日韩国产欧美在线播放| 91亚洲精品视频在线观看| 在线视频日韩| 激情亚洲影院在线观看| 久久精品 人人爱| 亚洲bt欧美bt精品777| 日韩专区欧美专区| 亚洲欧洲一区| 欧美羞羞视频| 麻豆精品av| 亚洲精品第一| 免费一区二区三区在线视频| 久久国产三级精品| 亚洲激情国产| 韩日一区二区| 尤物tv在线精品| 免费视频久久| 黄色亚洲大片免费在线观看| 日韩视频网站在线观看| 国产亚洲欧美日韩精品一区二区三区 | 91精品在线免费视频| 一区在线免费| 久久夜夜操妹子| 亚洲人成在线网站| 深夜福利一区| 蜜桃一区二区三区在线| 亚洲一级高清| 蜜臀av亚洲一区中文字幕| 国产精品亚洲欧美| 久久久久久久欧美精品| 三级一区在线视频先锋| 亚洲精品国模| 国产伦精品一区二区三区在线播放| 精品五月天堂| 午夜av不卡| 美女久久一区| 亚洲3区在线| 97精品一区| 国产一区亚洲| 日韩精品福利一区二区三区| 日韩国产一二三区| 蜜桃av.网站在线观看| a天堂资源在线| 青青在线精品| 欧美激情另类| 久久国产66| 四虎成人av| 国产资源在线观看入口av| 亚洲二区精品| 午夜视频精品| 久久久亚洲欧洲日产| 久久青草久久| 欧美一区精品| 激情视频网站在线播放色| 国产精品久久| 亚洲欧美久久| 久久99青青| 免费精品视频最新在线| 美女av一区| 蜜臀久久99精品久久久久久9| 久久一区精品| 国产精品毛片一区二区三区| 久久久久黄色| 国产亚洲精aa在线看| 久久精品一区二区国产| 国产视频一区三区| 综合干狼人综合首页| 久久xxx视频| 99tv成人| 欧美精品羞羞答答| 在线一区免费观看| 亚洲免费婷婷| 日本aⅴ精品一区二区三区| 国产精品亲子伦av一区二区三区| 国产精品一区三区在线观看| 欧美经典一区| 欧美日韩国产观看视频| 久久久成人网| 亚洲一级淫片| 国产探花在线精品| 丁香六月综合| 免费视频久久| 国产精品高清一区二区| 免费看av不卡| 黄色在线一区| 欧美一区二区三区久久| av中文字幕在线观看第一页 | 欧美日韩一区自拍| 亚洲精品在线影院| 日本在线视频一区二区| 韩国女主播一区二区三区| 在线看片国产福利你懂的| 一区二区电影在线观看| 欧美激情日韩| 欧美sss在线视频| 欧美一区二区三区高清视频 | 美腿丝袜亚洲一区| 中文字幕日韩欧美精品高清在线| 成人羞羞视频播放网站| 中文字幕高清在线播放| 精品久久一区| 黑人精品一区| 国产另类在线| 久久久亚洲一区| 久久影视三级福利片| 三级亚洲高清视频| 精品日韩毛片| 精品三级久久| 桃色av一区二区| 成人在线免费观看91| 国产精品视频一区二区三区四蜜臂| 美女国产一区| 视频一区免费在线观看| 美女被久久久| 亚洲小说春色综合另类电影| 99riav国产精品| 在线国产一区二区| 欧美日韩国产亚洲一区| 久久免费高清| 国产专区一区| sm久久捆绑调教精品一区| 新版的欧美在线视频| 一区在线观看| 亚洲精选av| 国产精品乱战久久久| 性感美女一区二区在线观看| 日韩中文欧美| 国产色播av在线| 国产夫妻在线| 欧美激情在线精品一区二区三区| 精品不卡一区| 欧美日一区二区在线观看| 欧美私人啪啪vps| 国产成人免费视频网站视频社区| 久久久亚洲欧洲日产| 亚洲一区二区小说| 欧美日韩亚洲一区三区| 日韩精品一卡二卡三卡四卡无卡| 美国欧美日韩国产在线播放| 日本亚洲三级在线| 国产精品多人| 韩国精品主播一区二区在线观看 | 亚洲网站视频| 蜜臀a∨国产成人精品| 国产三级一区| 黄在线观看免费网站ktv| 欧美另类综合| 国产亚洲一区二区三区不卡| 国产精品免费大片| 国产精选在线| 日韩精品国产欧美| 欧美精选视频一区二区| 亚洲bt欧美bt精品777| 国产精品福利在线观看播放| 99综合视频| 精品三级久久久| 天海翼亚洲一区二区三区| 国产伦久视频在线观看| 亚洲精品影视| 免费av一区| 精品美女在线视频| 日韩成人一级| 久久成人一区| 国产一区二区三区黄网站| 欧美日韩四区| 国产成人精选| 国产精品久久久久久久久免费高清| 久久国产66| 亚洲激精日韩激精欧美精品| 超碰99在线| 国产一区二区三区国产精品| 日韩国产在线观看| 亚洲综合中文| 婷婷五月色综合香五月| 爽好久久久欧美精品| 欧美在线资源| 伊人精品一区| 日韩高清不卡| 黑森林国产精品av| 日韩视频一二区| 中文无码日韩欧| 亚洲无线观看| 日韩国产欧美在线播放| 日韩不卡一区二区三区| 日韩高清一区| 国产精品一区亚洲| 国产精品jk白丝蜜臀av小说|