老司机91精品网站在线观看-老司机67194免费观看-老司国产精品视频-老熟人老女人国产老太-中文字幕日本在线-中文字幕日本一区久久

始創于2000年 股票代碼:831685
咨詢熱線:0371-60135900 注冊有禮 登錄
  • 掛牌上市企業
  • 60秒人工響應
  • 99.99%連通率
  • 7*24h人工
  • 故障100倍補償
您的位置: 網站首頁 > 幫助中心>文章內容

Oracle的rowid和rdba庖丁解牛

發布時間:  2012/8/15 17:47:32

Oracle 8以下ROWID組成(也叫受限Rowid)為:FFFF.BBBBBBBB.RRRR,占用6個字節(10bit file#+22bit+16bit),但是,為了擴充的需要,如數據文件的擴充,現在的Rowid改為:OOOOOOFFFBBBBBBRRR,占用10個字節(32bit+10bit rfile#+22bit+16bit)。其中,O是對象ID,F是文件ID,B是塊ID,R是行ID。由于rowid的組成從file#變成了rfile#,所以數據文件數的限制也從整個庫不能超過1023個變成了每個表空間不能超過1023個數據文件。
-
 

注意:這里的O,代表的是data_object_id,是與段物理存儲位置相關的一個信息,因為一個段對象只可能在一個表空間上,data_object_id能唯一確認ts#,而data_object_id + rfile#就能最終定位到該rowid在那個確定的物理數據文件。

如果我們查詢一個表的ROWID,就可以獲得object的信息,文件信息,塊信息與行信息等等,如根據其中塊的信息,可以知道該表確切占用了多少個塊,每行在哪個塊上,哪個數據文件上。

我們在select數據時候,在不指定排序字段時, Oracle是按rowid升序取數據的。如

SQL> select t.id,rowid from skate.tab2 t;

        ID ROWID

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

   1067511 AAAO1lAAEAAAHKkAAA

   1067513 AAAO1lAAEAAAHKkAAB

   1067515 AAAO1lAAEAAAHKkAAC

   1067517 AAAO1lAAEAAAHKkAAD

   1067519 AAAO1lAAEAAAHKkAAE

   1067523 AAAO1lAAEAAAHKkAAG

   1067525 AAAO1lAAEAAAHKkAAH

   1067527 AAAO1lAAEAAAHKkAAI

8 rows selected

SQL>

可以從上面的顯示數據看到,是按rowid降序排列。我們拿rowid “AAAO1lAAEAAAHKkAAA”來說明

Data Object number =AAAO1l

File id                  =AAE    

Block id              =AAAHKk

Row        =AAA

Rowid是64進制的,可以通過進制轉化工具來查看(http://www.2u3.cn/Conversion/jinzhi/

 

 A-Z <==> 0 - 25 (26)
a-z <==> 26 - 51 (26)
0-9 <==> 52 - 61 (10)
+/ <==> 62 - 63 (2)

 

 拿其中的Data Object number= AAAO1l為例子,

 

l是64進制中的37,位置為0

37 * (64 ^ 0) = 37

1是64進制中的53,位置為1

53 * (64 ^ 1) = 3392

O是64進制中的 14,位置為2

14*(64^2)=57344

A是64進制中的 0

所以

A * (64 ^ 3) = 0

A * (64 ^ 4) = 0

A * (64 ^ 5) = 0

則有AAAO1l= 0 + 0 + 0 + 57344+ 3392 + 37 = 60773,表示該行存在的對象,對應的對象號為60773。

 

手工算還是比較麻煩的,Oracle為此提供相應的函數dbms_rowid來實現

SQL> select dbms_rowid.rowid_object('AAAO1lAAEAAAHKkAAA') data_object_id#,

  2         dbms_rowid.rowid_relative_fno('AAAO1lAAEAAAHKkAAA') rfile#,

  3         dbms_rowid.rowid_block_number('AAAO1lAAEAAAHKkAAA') block#,

  4         dbms_rowid.rowid_row_number('AAAO1lAAEAAAHKkAAA') row# from dual;

DATA_OBJECT_ID#     RFILE#     BLOCK#       ROW#

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

          60773          4      29348          0

 

可以通過包的說明或者Oracle官方手冊了解更多,例如:

SQL> desc dbms_rowid

Element                Type     

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

ROWID_TYPE_RESTRICTED  CONSTANT 

ROWID_TYPE_EXTENDED    CONSTANT 

ROWID_IS_VALID         CONSTANT 

ROWID_IS_INVALID       CONSTANT 

ROWID_OBJECT_UNDEFINED CONSTANT 

ROWID_CONVERT_INTERNAL CONSTANT 

ROWID_CONVERT_EXTERNAL CONSTANT 

ROWID_INVALID          EXCEPTION

ROWID_BAD_BLOCK        EXCEPTION

ROWID_CREATE           FUNCTION 

ROWID_INFO             PROCEDURE

ROWID_TYPE             FUNCTION 

ROWID_OBJECT           FUNCTION 

ROWID_RELATIVE_FNO     FUNCTION 

ROWID_BLOCK_NUMBER     FUNCTION 

ROWID_ROW_NUMBER       FUNCTION 

ROWID_TO_ABSOLUTE_FNO  FUNCTION 

ROWID_TO_EXTENDED      FUNCTION 

ROWID_TO_RESTRICTED    FUNCTION 

ROWID_VERIFY           FUNCTION 

 

SQL> desc dbms_rowid.rowid_info

Parameter     Type     Mode Default?

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

ROWID_IN      ROWID    IN           

ROWID_TYPE    NUMBER   OUT          

OBJECT_NUMBER NUMBER   OUT          

RELATIVE_FNO  NUMBER   OUT          

BLOCK_NUMBER  NUMBER   OUT          

ROW_NUMBER    NUMBER   OUT          

TS_TYPE_IN    VARCHAR2 IN   Y  

如果明白了以上ROWID的含義,那么就很容易理解塊的地址rdba了,也就是ROWID中的FFFBBBBBB部分,10bit rfile#+22bit,如我們分析一個塊地址:

 rdba: 0x010072a4

把0x010072a4轉化為10進制16806564

SQL>   select dbms_utility.data_block_address_file(16806564) "file",

  2           dbms_utility.data_block_address_block(16806564) "block"

  3    from dual;

 

      file      block

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

         4      29348

 

SQL>

現在通過塊的dba知道了file和block,那怎樣確認我們推到的正確呢? 這個塊地址是dump文件的內容,我們可以去dump文件核對下

Start dump data blocks tsn: 4 file#: 4 minblk 29348 maxblk 29348

buffer tsn: 4 rdba: 0x010072a4 (4/29348)

scn: 0x0000.00e66a1e seq: 0x02 flg: 0x06 tail: 0x6a1e0602

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

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

結果我們推導的和dump的內容是一樣的,不過這里得到的4是rfile#,相對文件號,而相對文件號是不能超過1023,所以,如果你想根據這個地址來dump數據文件塊的話,最好還是核對一下v$datafile:

select file# from v$datafile where rfile# = 4 and ts# = <:dbfile_in_ts>

表空間的ts#可以通過如下sql得到:

  select ta.tablespace_name, da.TS#
    from dba_tablespaces ta, dba_data_files df, v$datafile da
   where ta.tablespace_name = df.tablespace_name
     and da.NAME = df.file_name

 例如:

SQL> select file# from v$datafile where rfile# = 4 and ts# = 4;

    FILE#

----------

         4

SQL>

 

如果數據文件數大于1023個,這里file# 就不是4了,應該是個絕對文件號了,這就是file#和rfile#的區別。如果dump數據塊,要用絕對文件號的,例如:

Alter system dump  datafile 4 block 29348;

也可以通過dba_segments,如

SQL>  select header_file,header_block from dba_segments where owner='SKATE' and segment_name='TAB2';

HEADER_FILE HEADER_BLOCK

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

          4        29347

這里段頭占有一個block,后面存儲的就是數據,所以存儲數據的塊,應該是29348

-----end-----


本文出自:億恩科技【www.ypdoo.com.cn】

服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]

  • 您可能在找
  • 億恩北京公司:
  • 經營性ICP/ISP證:京B2-20150015
  • 億恩鄭州公司:
  • 經營性ICP/ISP/IDC證:豫B1.B2-20060070
  • 億恩南昌公司:
  • 經營性ICP/ISP證:贛B2-20080012
  • 服務器/云主機 24小時售后服務電話:0371-60135900
  • 虛擬主機/智能建站 24小時售后服務電話:0371-60135900
  • 專注服務器托管17年
    掃掃關注-微信公眾號
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權所有  地址:鄭州市高新區翠竹街1號總部企業基地億恩大廈  法律顧問:河南亞太人律師事務所郝建鋒、杜慧月律師   京公網安備41019702002023號
      0
     
     
     
     

    0371-60135900
    7*24小時客服服務熱線

     
     
    日韩中文字幕一区二区不卡| 精品久久久久久综合网| 国产高清在线精品一区二区 | 精品视频在线观看免费| 四虎影视精品永久免费网站| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 91麻豆精品国产自产在线 | 国产一区二区精品久久91| 久久精品免视看国产明星| 亚洲第一页乱| 欧美另类videosbestsex| 国产一区二区精品久| 国产美女在线观看| 日本在线www| 久久国产精品永久免费网站| 你懂的在线观看视频| 国产成人欧美一区二区三区的| 国产成人精品综合| 黄视频网站在线观看| 二级特黄绝大片免费视频大片| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 黄视频网站在线观看| 台湾毛片| 欧美激情一区二区三区在线| 久久精品免视看国产成人2021| 亚洲 激情| 毛片高清| 二级片在线观看| 99久久精品国产免费| 二级特黄绝大片免费视频大片| 国产视频一区二区在线观看| 亚洲 国产精品 日韩| 亚洲精品影院| 免费的黄色小视频| a级毛片免费全部播放| 国产美女在线观看| 在线观看成人网 | 午夜精品国产自在现线拍| 黄视频网站在线看| 国产成人精品一区二区视频| 亚洲精品中文字幕久久久久久| 国产91精品系列在线观看| 精品美女| 国产精品自拍一区| 中文字幕97| 国产网站免费在线观看| 精品国产一区二区三区久| 青青久久精品| 国产网站免费视频| 日韩中文字幕在线观看视频| 国产一区二区高清视频| 四虎影视库国产精品一区| 日本伦理片网站| 日韩一级精品视频在线观看| 国产成人啪精品| 亚洲 男人 天堂| 亚欧视频在线| 台湾美女古装一级毛片| 中文字幕一区二区三区精彩视频| 一级女性全黄久久生活片| 精品在线观看一区| 午夜激情视频在线观看| 精品久久久久久中文| 久久国产一久久高清| 91麻豆精品国产自产在线观看一区 | 国产麻豆精品视频| 天天色成人| 免费一级生活片| a级毛片免费全部播放| 亚洲第一视频在线播放| 日韩av东京社区男人的天堂| 国产91精品一区二区| 欧美另类videosbestsex久久| 亚洲精品永久一区| 欧美大片a一级毛片视频| 国产91精品系列在线观看| 九九精品在线播放| 国产国产人免费视频成69堂| 日韩在线观看网站| 国产网站免费视频| 91麻豆精品国产自产在线| 久久99爰这里有精品国产| 九九久久国产精品大片| 国产成人啪精品视频免费软件| 国产亚洲精品aaa大片| 天天做日日爱| 日本特黄特色aaa大片免费| 美女免费精品视频在线观看| 日本特黄特色aa大片免费| 九九精品影院| 日本在线不卡视频| 国产高清视频免费观看| 国产精品12| 亚洲女人国产香蕉久久精品 | 国产一区二区精品久久91| 国产不卡在线播放| 一级毛片视频播放| 日本在线www| 亚洲第一色在线| 日韩中文字幕一区| 色综合久久天天综线观看| 一级毛片视频播放| 免费的黄色小视频| 九九干| 精品视频在线看| 日韩在线观看视频免费| 精品视频在线看| 亚洲精品中文字幕久久久久久| 亚洲精品影院久久久久久| 天天色色网| 国产精品自拍一区| 日韩在线观看网站| 国产一区二区高清视频| 成人免费观看的视频黄页| 四虎影视久久久| 九九热国产视频| 黄视频网站在线看| 一本伊大人香蕉高清在线观看| 国产91精品一区二区| 999精品在线| 日韩一级精品视频在线观看| 日韩欧美一二三区| 国产综合成人观看在线| 国产视频一区二区三区四区| 精品国产一区二区三区国产馆| 成人免费福利片在线观看| 国产91丝袜高跟系列| 国产伦久视频免费观看 视频| 欧美激情一区二区三区视频 | 国产一区精品| 久久成人性色生活片| 中文字幕一区二区三区 精品| 欧美激情影院| 国产一区二区福利久久| 你懂的福利视频| 久久国产一久久高清| 国产91素人搭讪系列天堂| 国产国语在线播放视频| 成人在激情在线视频| 精品在线免费播放| 国产网站免费观看| 国产高清视频免费观看| 99色精品| 成人a大片在线观看| 一级毛片视频在线观看| 国产一区免费观看| 国产伦久视频免费观看视频| 亚洲精品影院久久久久久| 国产不卡在线观看视频| 国产网站免费观看| 精品视频免费看| 欧美激情中文字幕一区二区| 欧美激情一区二区三区视频高清| 99久久精品费精品国产一区二区| 国产网站免费视频| 韩国毛片| 国产不卡在线观看视频| 日本免费区| 天天色成人| 香蕉视频三级| 日韩免费在线观看视频| 四虎久久精品国产| 九九精品久久| 99久久精品国产麻豆| 人人干人人插| 你懂的福利视频| 欧美电影免费| 四虎影视库| 亚洲精品影院一区二区| 国产成人精品影视| 999精品在线| 国产网站免费视频| 成人影院一区二区三区| 国产a视频| 日韩免费在线观看视频| 国产原创视频在线| 国产美女在线观看| 色综合久久天天综合| 欧美激情伊人| 美国一区二区三区| 国产亚洲免费观看| 精品国产一区二区三区免费| 韩国毛片免费大片| 精品视频免费看| 亚洲天堂一区二区三区四区| 日本伦理网站| 欧美大片一区| 午夜欧美福利| 亚洲天堂一区二区三区四区| 精品国产亚洲人成在线| 夜夜操网| 成人a大片高清在线观看| 国产亚洲免费观看| 99久久精品国产国产毛片 | 沈樵在线观看福利| 欧美1区| 999久久狠狠免费精品| 四虎影视久久久免费| 欧美一级视| 色综合久久手机在线|