轉儲資料塊玩玩
關於快轉儲我們需要注意的區域主要是:塊轉儲ITL,FLAG區域和資料區域
下面我們就這個做個實驗:
SQL> insert into emp values(5236,'weibin',563220,to_date('2009-05-04 12:20:24','yyyy-mm-dd hh24:mi:ss'));
已建立 1 行。
SQL> insert into emp values(236,'weibin',2530,to_date('2012-05-04 12:20:24','yyyy-mm-dd hh24:mi:ss'));
已建立 1 行。
查詢物件在記憶體中儲存的資料塊
SQL> select a.object_name, a.object_type, b.FILE#,b.BLOCK# from v$bh b, all_objects a where a.owner = 'SYS' and a.object_name = 'EMP' and a.object_id = b.OBJD;
OBJECT_NAME OBJECT_TYPE FILE# BLOCK#
------------------------------ ------------------- ---------- ----------
EMP TABLE 5 1234
EMP TABLE 5 1233
也可以通過dba_extents來查詢
SQL> select header_file,header_block,blocks from dba_segments where wner = 'SYS' and segment_name = 'EMP';
HEADER_FILE HEADER_BLOCK BLOCKS
----------- ------------ ----------
5 1233 8
轉儲資料塊資訊
SQL> alter system dump datafile 5 block min 1233 block max 1234;
系統已更改。
SQL> select spid from v$process where addr = (
2 select paddr from v$session where sid = (
3 select distinct sid from v$mystat));
SPID
------------
2896
然後檢視跟蹤日誌如下:
alter system dump datafile 5 minblock 1233 maxblock 1234
KGX cleanup...
KGX Atomic Operation Log 2EF16FA0
Mutex 2EE69554(140, 0) idn 0 oper EXAM
Cursor Parent uid 140 efd 5 whr 26 slp 0
oper=DEFAULT pt1=00000000 pt2=00000000 pt3=00000000
pt4=00000000 u41=0 stt=0
**********************************************************
Block header dump: 0x014004d2
Object id on Block? Y
seg/obj: 0xe040 csc: 0x00.75d123 itc: 2 flg: O typ: 1 - DATA
fsl: 0 fnx: 0x0 ver: 0x01
Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x0008.02e.0000169e 0x018003e3.04cc.04 ---- 2 fsc 0x0000.00000000
0x02 0x0006.00a.00001620 0x01800103.02fd.2a --U- 2 fsc 0x0000.007ec96c
data_block_dump,data header at 0x8ee225c
===============
tsiz: 0x1fa0
hsiz: 0x1e
pbl: 0x08ee225c
bdba: 0x014004d2
76543210
flag=--------
ntab=1
nrow=6
frre=-1
fsbo=0x1e
fseo=0x1e75
avsp=0x1f11
tosp=0x1f11
0xe:pti[0] nrow=6 offs=0
0x12:pri[0] offs=0x1f31
0x14:pri[1] offs=0x1f52
0x16:pri[2] offs=0x1f23
0x18:pri[3] offs=0x1f14
0x1a:pri[4] offs=0x1e8f
0x1c:pri[5] offs=0x1e75
block_row_dump:
tab 0, row 0, @0x1f31
tl: 16 fb: --H-FL-- lb: 0x0 cc: 3
col 0: [ 2] c1 03
col 1: [ 6] 78 7a 78 7a 78 7a
col 2: [ 2] c2 29
tab 0, row 1, @0x1f52
tl: 15 fb: --H-FL-- lb: 0x0 cc: 3
col 0: [ 2] c1 04
col 1: [ 5] 64 78 7a 61 61
col 2: [ 2] c2 15
tab 0, row 2, @0x1f23
tl: 14 fb: --H-FL-- lb: 0x2 cc: 3
col 0: [ 2] c1 02
col 1: [ 4] 64 61 64 61
col 2: [ 2] c2 33
tab 0, row 3, @0x1f14
tl: 15 fb: --H-FL-- lb: 0x2 cc: 3
col 0: [ 2] c1 02
col 1: [ 5] 64 78 78 78 78
col 2: [ 2] c2 0b
tab 0, row 4, @0x1e8f
tl: 27 fb: --H-FL-- lb: 0x1 cc: 4
col 0: [ 3] c2 35 25
col 1: [ 6] 77 65 69 62 69 6e
col 2: [ 4] c3 39 21 15
col 3: [ 7] 78 6d 05 04 0d 15 19
tab 0, row 5, @0x1e75
tl: 26 fb: --H-FL-- lb: 0x1 cc: 4
col 0: [ 3] c2 03 25
col 1: [ 6] 77 65 69 62 69 6e
col 2: [ 3] c2 1a 1f
col 3: [ 7] 78 70 05 04 0d 15 19
end_of_block_dump
End dump data blocks tsn: 0 file#: 5 minblk 1233 maxblk 1234
檢視跟蹤日誌詳細介紹下塊轉儲的3個重點區域
1、ITL區域
塊轉儲的一個關鍵區域是事務列表(ITL),以下顯示2個ITL槽,XID是事務ID,UBA是撤銷塊地址,LOCK表示鎖定的記錄數(這個示例中兩個事務槽都鎖定了2條記錄),Scn/Fsc指的是提交資訊的SCN或SFC(Free Space Credit),FSC指的是事務提交之後在塊中恢復的位元組總數,是用16進製表示的。
Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x0008.02e.0000169e 0x018003e3.04cc.04 ---- 2 fsc 0x0000.00000000
0x02 0x0006.00a.00001620 0x01800103.02fd.2a --U- 2 fsc 0x0000.007ec96c
2、FLAG區域
FLAG區域是一個資料位,說明了事務的狀態(CBUT)
---- 事務是活動的,或者在塊清除前提交了事務。
C--- 事務已經被提交併且清除了行鎖定。
B--- 撤銷塊地址(UBA)包含塊的撤消。
--U- 事務已經提交(SCN是最大值),但是沒有發生塊清除(快速提交)。
---T 當塊清除的SCN被記錄時,該事務仍然是活動的。
C-U- 塊被延遲清除,回滾段的資訊已經被改寫。SCN將顯示為最小的SCN,由回滾段重新生成。
3、資料區域
資料區域的第一個部分(頭區域)
tab 0, row 4, @0x1e8f
tl: 27 fb: --H-FL-- lb: 0x1 cc: 4
資料部分如下:
col 0: [ 3] c2 35 25
col 1: [ 6] 77 65 69 62 69 6e
col 2: [ 4] c3 39 21 15
col 3: [ 7] 78 6d 05 04 0d 15 19
快轉儲區域EMP.ID輸出
col 0: [ 3] c2 35 25
前面我們插入的ID是5236,資料部分均是16進製表示
35轉換成十進位制為53 - 1 = 52
25轉換成十進位制為37 - 1 = 36
C2:number in the thousands(c2 is exponent)
col 1: [ 6] 77 65 69 62 69 6e表示的是emp.name值,通過以下查詢我們就可以知道。
SQL> select dump(name,16), id, name from emp
2 where dump(name,16) like '%77,65,69,62,69,6e';
DUMP(NAME,16)
------------------------------------------------------------
ID NAME
---------- --------------------
Typ=1 Len=6: 77,65,69,62,69,6e
5236 weibin
Typ=1 Len=6: 77,65,69,62,69,6e
236 weibin
COL2也是number型,和COL一樣,不再重複解釋。
col 3: [ 7] 78 6d 05 04 0d 15 19
這裡表示的是我們插入ID為5236行的hr_date,下面就date型別的欄位做個詳解:
我們插入的hr_date值為2009-05-04 12:20:24
78轉換成十進位制為120 - 100 = 20
6d轉換成十進位制為109 - 100 = 09
05轉換成十進位制為5 (month)
04轉換成十進位制為4 (day)
0d 15 19這是時 分 秒,轉換成十進位制在減去1即得到的時間
0d轉換成十進位制為13 - 1 = 12
15轉換成十進位制為21 - 1 = 20
19轉換成十進位制為25 - 1 = 24
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25964700/viewspace-708297/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle資料塊轉儲說明Oracle
- JIURL玩玩Win2k 參考資料 (轉)
- 轉儲指定的資料塊並檢視TRC資訊
- 轉換手機號玩玩~~~
- oracle資料塊中資料儲存(摘錄)Oracle
- 來 ! 玩玩PHPUnit的資料庫測試 (上)PHP資料庫
- 帶你玩玩轉 MySQL 查詢MySql
- 資料倉儲指南 (轉)
- [20171228]關於資料塊轉儲的問題.txt
- 資料倉儲設計(轉)
- 【劉文彬】區塊鏈 + 大資料:EOS儲存區塊鏈大資料
- 資料倉儲面試資料(基本概念)(轉)面試
- 轉換RDBA的檔案和資料塊地址(轉)
- [轉載] 我的資料倉儲之路
- MySQL資料庫的儲存引擎(轉)MySql資料庫儲存引擎
- 如何利用區塊鏈技術進行資料儲存?區塊鏈
- 區塊鏈讓醫療資料儲存變得安全區塊鏈
- 資料倉儲資料質量的問題探討(轉)
- YottaChain區塊鏈資料儲存技術有哪些優勢?AI區塊鏈
- 儲存有兩塊硬碟離線恢復資料的過程硬碟
- 傳統資料庫也能實現區塊鏈儲存資料庫區塊鏈
- oracle資料檔案頭轉儲說明Oracle
- 關於MS資料倉儲備份(轉)
- 使用資料庫儲存session的方法 (轉)資料庫Session
- 怎樣去宣傳資料倉儲? (轉)
- 【轉載】把握資料倉儲中的"鍵"
- 在瀏覽器上儲存資料(轉)瀏覽器
- 轉抄:Oracle資料塊深入分析總結Oracle
- [20161129]轉儲記憶體的內容還原成資料塊.txt記憶體
- dump資料塊
- 資料塊分析
- 資料塊原理
- 區塊鏈Yottachain到底是如何改變資料儲存模式?區塊鏈AI模式
- 資料如何在一個區塊鏈中儲存和保護?區塊鏈
- 玩玩虛擬化-KVM
- 資料倉儲之拉鍊演算法(轉)演算法
- 資料倉儲——在“啤酒與尿布”中挖掘 (轉)
- Linux獲利新領域—資料倉儲 (轉)Linux