分析行鏈結資料

2021-04-16 00:14:49 字數 1328 閱讀 6370

最近檢查資料庫,發現庫中有很多表存在著行鏈結的現象。

select * from user_tables u where u.chain_cnt > 0

analyze table ow_wf_processes list chained rows

select * from chained_rows

---行鏈結問題測試

--找到block_id

select dbms_rowid.rowid_block_number(rowid), rowid from ow_wf_processes;

--根據block_id去找對應的file_id

select * from dba_extents de

where 716231 >= de.block_id

and 716231 <= de.block_id + de.blocks

and de.tablespace_name = 'dvbcetus'

and de.segment_name = upper('ow_wf_processes')

--將該block的資訊輸出到udmp下:

alter system dump datafile 46 block 716231

輸出的內容:

*** 2008-03-22 22:22:24.130

*** session id:(19.28535) 2008-03-22 22:22:24.120

start dump data blocks tsn: 9 file#: 46 minblk 716231 maxblk 716231

buffer tsn: 9 rdba: 0x0b8aedc7 (46/716231)

scn: 0x0000.00a9096c seq: 0x01 ***: 0x02 tail: 0x096c0601

frmt: 0x02 chkval: 0x0000 type: 0x06=trans data

block header dump:  0x0b8aedc7

object id on block? y

seg/obj: 0xbb24  csc: 0x00.a9096a  itc: 1  ***: -  typ: 1 - data

fsl: 0  fnx: 0x0 ver: 0x01

itl           xid                  uba         flag  lck        scn/fsc

0x01   xid:  0x0004.020.000003f1    uba: 0x10417668.06db.18  --u-    7  fsc 0x0000.00a9096c

行鏈結與行遷移

行遷移 行遷移一般產生在更新操作中,當更新操作導致行長增加了,而block的自由空間已經沒有,這時oracle把整行記錄遷移到乙個新的block中,並在原來block中存放新block的鏈結,行遷移產生。2.行鏈結與行遷移的檢測 1 建立chained rows表 利用oracle資料庫自身提供的指...

行鏈結與行遷移

行鏈結與行遷移這兩種情況下,表中的行可能對乙個資料塊來說太大了,在第一中情況下,當第一次插入的時候,行對資料塊來說太大了,這種情況下,oracle儲存資料在一系列的資料塊中 乙個或多個 行鏈結通常會在有大的行,就是行中包含long或long raw的列中,在這種情況下,行鏈結不可避免。在第二種情況下...

行遷移和行鏈結

oracle會將整行的資料遷移到乙個新的資料塊上,而將該行原先的空間只放乙個指標,指向該行的新的位置,並且該行原先空間的剩餘空間不再被資料庫使用,這些剩餘的空間我們將其稱之為空洞,這就是產生表碎片的主要原因,表碎片基本上也是不可避免的,但是我們可以將其降到乙個我們可以接受的程度。注意,即使發生了行遷...