日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle和dba,oracle db、dba和rdba

發布時間:2025/3/21 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle和dba,oracle db、dba和rdba 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、DB(Data Block)

1、dumping data blocks

SYS@ tsid > select

2dbms_rowid.rowid_relative_fno(rowid) REL_FNO,

3dbms_rowid.rowid_block_number(rowid) BLOCKNO,

4dbms_rowid.rowid_row_number(rowid) ROWNO,

5id,name

6from t

7where id=1;

REL_FNOBLOCKNOROWNOID NAME

---------- ---------- ---------- ----------

------------------------------

41501 a

SYS@ tsid > alter system dump datafile 4

block 15;

System altered.

dump文件部分:

block_row_dump:

tab 0, row 0, @0x1f90

tl: 8 fb: --H-FL-- lb: 0x1cc: 2

col0: [ 2]c1 02

col1: [ 1]61

end_of_block_dump

End dump data blocks tsn: 4 file#: 4 minblk

15 maxblk 15

2、由dump出來的值轉換為表中的值

SYS@ tsid > select

utl_raw.cast_to_number(replace('c1,02',',')) value from dual;

VALUE

----------

1

SYS@ tsid > select

utl_raw.cast_to_varchar2('61') value from dual;

VALUE

------------------------------------------------------------------

a

二、DBA(Data Block

Address)

A(DBA) is the

address of an Oracle data block for access

purposes.

DBA一般指絕對數據塊地址用來表示一行的物理地址,一行唯一確定一個rowid,并且在使用中一般不會改變,除非rowid之后在行的物理位置發生改變的情況下才會發生變化。在rowid中,就有一段是來表示DBA的。

1、獲得一行的file number和block number

SYS@ tsid > select

2dbms_rowid.rowid_relative_fno(rowid) REL_FNO,

3dbms_rowid.rowid_block_number(rowid) BLOCKNO,

4id,name

5from t where id=2;

REL_FNOBLOCKNOID NAME

---------- ---------- ---------- --------

----------- ------------

4122b

2、將file number和block number轉換成DBA

SYS@ tsid > variable dba varchar2(30)

SYS@ tsid > exec :dba

:=dbms_utility.make_data_block_address(4,12);

PL/SQL procedure successfully completed.

SYS@ tsid > print dba

DBA

--------------------------------

16777228

3、將DBA轉換成file number和block number

SYS@ tsid > select

2dbms_utility.data_block_address_block(16777228) "BLOCK",

3dbms_utility.data_block_address_file(16777228) "FILE"

4from dual;

BLOCKFILE

---------- ----------

124

三、RDBA(Tablespace

relative database block address)

是相對數據塊地址,是數據字典(表空間及一些對象定義)所在塊的地址。

oracle 8以后,rowid的存儲空間擴大到了10個字節(32bit object#+10bit rfile#+22bit block#+16bit row#)。rdba就是rowid中的rfile#+block#。

SYS@ tsid > select rowid,

2dbms_rowid.rowid_relative_fno(rowid) REL_FNO,

3dbms_rowid.rowid_block_number(rowid) BLOCKNO,

4dbms_rowid.rowid_row_number(rowid) ROWNO,

5id,name

6from t

7where id=3;

ROWIDREL_FNOBLOCKNOROWNOID NAME

------------------ ----------------------------- ---------- ---------- --------

AAADJrAAEAAAAAMAAB41213c

把這個block dump到trace:

SYS@ tsid > alter system dump datafile 4

block 12;

System altered.

查看dump內容:

=============================================================================

*** 2012-05-15 21:48:40.987

Start dump data blocks tsn: 4 file#: 4

minblk 12 maxblk 12

buffer tsn: 4 rdba:

0x0100000c (4/12)--rdba的值

scn: 0x0000.002f1254 seq: 0x01 flg: 0x06

tail: 0x12540601

frmt: 0x02 chkval: 0xe59f type: 0x06=trans

data

Hex dump of block: st=0, typ_found=1

Dump of memory from 0x07357800 to

0x07359800

7357800 0000A206 0100000C 002F1254 06010000[........T./.....]

7357810 0000E59F 00000001 0000326B

002EA961[........k2..a...]

7357820 00000000 00320002 01000009

00220002[......2.......".]

7357830 0000034D 00800A91 002800F2

00002002[M.........(.. ..]

7357840 002F1254 00000000 00000000 00000000[T./.............]

7357850 00000000 00000000 00000000

00000000[................]

7357860 00000000 00020100 0016FFFF

1F701F88[..............p.]

7357870 00001F70 1F900002 00001F88

00000000[p...............]

7357880 00000000 00000000 00000000 00000000[................]

Repeat 501 times

73597E0 00000000 00000000 00000000

0202012C[............,...]

73597F0 630104C1 0202012C 620103C1

12540601[...c,......b..T.]

Block header dump:0x0100000c

Object id on Block? Y

seg/obj: 0x326bcsc: 0x00.2ea961itc: 2flg: Etyp: 1 - DATA

brn: 0bdba: 0x1000009 ver: 0x01

opc: 0

inc: 0exflg: 0

ItlXidUbaFlagLckScn/Fsc

0x010x0002.022.0000034d0x00800a91.00f2.28--U-2fsc 0x0000.002f1254

0x020x0000.000.000000000x00000000.0000.00----0fsc 0x0000.00000000

data_block_dump,data

header at 0x7357864

===============

tsiz: 0x1f98

hsiz: 0x16

pbl: 0x07357864

bdba: 0x0100000c

76543210

flag=--------

ntab=1

nrow=2

frre=-1

fsbo=0x16

fseo=0x1f88

avsp=0x1f70

tosp=0x1f70

0xe:pti[0]nrow=2offs=0--該塊中保存了2條記錄。從row0到row1

0x12:pri[0]offs=0x1f90

0x14:pri[1]offs=0x1f88

block_row_dump:

tab 0, row 0, @0x1f90

tl: 8 fb: --H-FL-- lb: 0x1cc: 2

col0: [ 2]c1 03

col1: [ 1]62

tab 0, row 1, @0x1f88

tl: 8 fb: --H-FL-- lb: 0x1cc: 2

col0: [ 2]c1 04

col1: [ 1]63

end_of_block_dump

End dump data blocks tsn: 4 file#: 4 minblk

12 maxblk 12

SYS@tsid>select

dbms_utility.data_block_address_file(to_number(ltrim('0x0100000c','0x'),'xxxxxxxx'))

as file_no,

2dbms_utility.data_block_address_block(to_number(ltrim('0x0100000c','0x'),'xxxxxxxx'))

as block_no

3from dual;

FILE_NOBLOCK_NO

---------- ----------

412

這和之前在rowid里看到的一致。

總結

以上是生活随笔為你收集整理的oracle和dba,oracle db、dba和rdba的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。