bbed安装及使用1(全)

1 安装

1.1 windows平台

oracle10/11(9i_9.2.0.8.0本身就带bbed)

⑴、安装

将bbed_windows.rar解压到某个目录,如:d:\bbed下。

确认如下2点信息:(否则会报信息文件不存在。BBED-00202: file not found; arguments: [Message] Message 1012 not found; No message file for product=RDBMS, facility=BBED) ①、%ORACLE_HOME%环境变量指向正确地址: echo %ORACLE_HOME% D:\oracle\product\10.2.0\db_1

②、%ORACLE_HOME%\RDBMS\mesg下存在信息文件:(10g自己带的) 2008-03-03 21:07 8,704 bbedus.msb 2008-03-03 21:07 7,680 bbedzhs.msb

⑵、创建filelist.txt

d:\bbed\a.sql

set linesize 300 set head off set feed off set echo off spool d:\bbed\filelist.txt select file#||' '||name||' '||bytes from v$datafile; spool off

@d:\bbed\a.sql

⑶、创建parameter file

d:\bbed\bbed.txt

password=blockedit logfile=bbed.log spool=yes blocksize=8192 listfile=filelist.txt mode=edit

⑷、运行bbed

CMD下,进到d:\bbed目录下:

d: cd d:\bbed

执行:

bbed parfile=bbed.txt

1.2 linux/unix平台

oracle9/10/11

参考: bbed for linux.txt

2 使用

确定段对象所在数据文件及起始块信息:

select segment_name,segment_type,header_file,header_block,blocks from dba_segments where tablespace_name='USERS' and owner='SCOTT';
​
SEGMENT_NAME    SEGMENT_TYPE       HEADER_FILE HEADER_BLOCK     BLOCKS
--------------- ------------------ ----------- ------------ ----------
PK_DEPT         INDEX                        4          138          8
DEPT            TABLE                        4          130          8
EMP             TABLE                        4          146          8
PK_EMP          INDEX                        4          154          8
SALGRADE        TABLE                        4          162          8
​
select segment_name,segment_type,header_file,header_block,blocks from dba_segments where segment_name like '%_SYSSMU%';
​
SEGMENT_NAME              SEGMENT_TYPE       HEADER_FILE HEADER_BLOCK     BLOCKS
------------------------- ------------------ ----------- ------------ ----------
_SYSSMU1_3724004606$      TYPE2 UNDO                   3          128        528
_SYSSMU2_2996391332$      TYPE2 UNDO                   3          144        272
_SYSSMU3_1723003836$      TYPE2 UNDO                   3          160        400
_SYSSMU4_1254879796$      TYPE2 UNDO                   3          176         56
_SYSSMU5_898567397$       TYPE2 UNDO                   3          192        272
_SYSSMU6_1263032392$      TYPE2 UNDO                   3          208        416
_SYSSMU7_2070203016$      TYPE2 UNDO                   3          224        272
_SYSSMU8_517538920$       TYPE2 UNDO                   3          240        272
_SYSSMU9_1650507775$      TYPE2 UNDO                   3          256        272
_SYSSMU10_1197734989$     TYPE2 UNDO                   3          272        272
​
10 rows selected.

2.1 数据块

参见:oracle数据块结构及含义.txt

2.1.1 oracle数据块结构

参考:

dsi401

2.1.2 转储数据块(Dumping data blocks)

select * from scott.emp;

     EMPNO ENAME      JOB              MGR HIREDATE            SAL       COMM     DEPTNO
---------- ---------- --------- ---------- ------------ ---------- ---------- ----------
      7369 SMITH      CLERK           7902 17-DEC-80           800                    20
      7499 ALLEN      SALESMAN        7698 20-FEB-81          1600        300         30
      7521 WARD       SALESMAN        7698 22-FEB-81          1250        500         30
      7566 JONES      MANAGER         7839 02-APR-81          2975                    20
      7654 MARTIN     SALESMAN        7698 28-SEP-81          1250       1400         30
      7698 BLAKE      MANAGER         7839 01-MAY-81          2850                    30
      7782 CLARK      MANAGER         7839 09-JUN-81          2450                    10
      7788 SCOTT      ANALYST         7566 19-APR-87          3000                    20
      7839 KING       PRESIDENT            17-NOV-81          5000                    10
      7844 TURNER     SALESMAN        7698 08-SEP-81          1500          0         30
      7876 ADAMS      CLERK           7788 23-MAY-87          1100                    20
​
     EMPNO ENAME      JOB              MGR HIREDATE            SAL       COMM     DEPTNO
---------- ---------- --------- ---------- ------------ ---------- ---------- ----------
      7900 JAMES      CLERK           7698 03-DEC-81           950                    30
      7902 FORD       ANALYST         7566 03-DEC-81          3000                    20
      7934 MILLER     CLERK           7782 23-JAN-82          1300                    10

查询DATA_OBJECT_ID,REL_FNO,BLOCKNO,ROWNO信息:

set linesize 200
SELECT
rowid,
dbms_rowid.rowid_object(rowid) DATA_OBJECT_ID,
dbms_rowid.rowid_relative_fno(rowid) REL_FNO,
dbms_rowid.rowid_block_number(rowid) BLOCKNO,
dbms_rowid.rowid_row_number(rowid) ROWNO,
empno, ename
FROM scott.emp;
​
ROWID              DATA_OBJECT_ID    REL_FNO    BLOCKNO      ROWNO      EMPNO ENAME
------------------ -------------- ---------- ---------- ---------- ---------- ----------
AAAVREAAEAAAACXAAA          87108          4        151          0       7369 SMITH

dd备份数据块:

注意: linux_x64文件系统文件,文件头占用1个8K块,真正的oracle数据文件头块是操作系统的第2个块开始的!!!!!! 因此,若需dd备份数据库的151块,则需跳过151个块(1个操作系统文件头块+150个oracle数据块)!!! 可与bbed set dba 4,151 dump /v进行比较!!

##仅查看用途
dd if=/oracle/oradata/orcl/users01.dbf bs=8k skip=151 count=1 | od -A x -t x1z -v > file.out
​
##备份
dd if=/oracle/oradata/orcl/users01.dbf of=/oracle/oradata/orcl/users01_bak_blk151.dbf bs=8192 skip=151 count=1
##恢复
dd if=/oracle/oradata/orcl/users01_bak_blk151.dbf of=/oracle/oradata/orcl/users01.dbf bs=8192 seek=151 count=1
​

转储数据块:

alter session set tracefile_identifier=lvs001;
alter system dump datafile 4 block 151;                                    ##数据库open状态
alter system dump datafile '/oracle/oradata/orcl/users01.dbf' block 151;   ##数据库nomount或mount
oradebug setmypid
oradebug tracefile_name

2.1.3 分析数据块转储内容

参考:

dsi401--Data Block Dump Analysis(P109)

alter system dump datafile 4 block 151;
​
​
Start dump data blocks tsn: 4 file#:4 minblk 151 maxblk 151
Block dump from cache:
Dump of buffer cache at level 4 for tsn=4 rdba=16777367
Block dump from disk:
buffer tsn: 4 rdba: 0x01000097 (4/151)
=================================kcbh=================================
scn: 0x0000.0013687f seq: 0x02 flg: 0x06 tail: 0x687f0602
frmt: 0x02 chkval: 0xbf70 type: 0x06=trans data
=================================kcbh=================================
Hex dump of block: st=0, typ_found=1
Dump of memory from 0x00007F12A35CFA00 to 0x00007F12A35D1A00
7F12A35CFA00 0000A206 01000097 0013687F 06020000  [.........h......]
7F12A35CFA10 0000BF70 00030001 00015444 0013687C  [p.......DT..|h..]
7F12A35CFA20 1FE80000 00321F02 01000090 0013000A  [......2.........]
7F12A35CFA30 000002EE 00C00A3D 001B0080 00002001  [....=........ ..]
7F12A35CFA40 0013687F 00170009 000003E8 00C00713  [.h..............]
7F12A35CFA50 003400BD 00008000 001364B1 00000000  [..4......d......]
7F12A35CFA60 00000000 000E0100 002EFFFF 1D331D61  [............a.3.]
7F12A35CFA70 00001D33 1F72000E 1F1C1F47 1EC61EF3  [3.....r.G.......]
7F12A35CFA80 1E741E9D 1E261E4C 1DD51DFB 1D881DAF  [..t.L.&.........]
7F12A35CFA90 14E11D61 14291485 137113CD 12B91315  [a.....)...q.....]
7F12A35CFAA0 1201125D 114911A5 109110ED 0FD91035  [].....I.....5...]
7F12A35CFAB0 0F210F7D 0E690EC5 0DB10E0D 0CFB0D55  [}.!...i.....U...]
7F12A35CFAC0 0C450CA1 0B8D0BE9 0ADC0B31 0A2F0A87  [..E.....1...../.]
7F12A35CFAD0 098009D7 08DC0929 083D088F 079107EB  [....).....=.....]
7F12A35CFAE0 06DB0737 0624067F 056D05C9 04B50511  [7.....$...m.....]
7F12A35CFAF0 03FD0459 0000002A 00090007 00000139  [Y...*.......9...]
7F12A35CFB00 00C07FDD 00400022 00008000 000682B9  [....".@.........]
7F12A35CFB10 00010203 00400150 0040BAED 00000019  [....P.@...@.....]
7F12A35CFB20 0BFB0000 5305C304 02C10246 6406C102  [.......SF......d]
7F12A35CFB30 00180008 00140020 00000012 00000012  [.... ...........]
7F12A35CFB40 00000000 00000000 4603010B 019A0000  [...........F....]
7F12A35CFB50 00000D04 000682B7 00090007 00000139  [............9...]
7F12A35CFB60 00C07FDD 003F0022 00008000 000682B9  [....".?.........]
7F12A35CFB70 0040BBC9 004000F0 010312FF 00000001  [..@...@.........]
7F12A35CFB80 BF000021 0018000A 00140020 626D0014  [!....... .....mb]
7F12A35CFB90 0000006B 0000006B 00000000 00000000  [k...k...........]
7F12A35CFBA0 4503160A 019A0000 97470D04 0000002A  [...E......G.*...]
7F12A35CFBB0 00070005 00000199 00C08166 0026002B  [........f...+.&.]
7F12A35CFBC0 00008000 000682B7 00010203 00400360  [............`.@.]
7F12A35CFBD0 00406DFA 0000007F BFFC0000 5305C304  [.m@............S]
7F12A35CFBE0 71780745 2E0C1808 40000604 830015B6  [E.xq.......@....]
7F12A35CFBF0 0018000A 00140020 7473000F 0000006A  [.... .....stj...]
7F12A35CFC00 0000006A 00000000 00000000 4403160A  [j..............D]
7F12A35CFC10 019A0000 97470D04 0000002A 00070005  [......G.*.......]
7F12A35CFC20 00000199 00C08166 0025002B 00008000  [....f...+.%.....]
7F12A35CFC30 000682B7 00010203 00400358 004088B4  [........X.@...@.]
7F12A35CFC40 0000007F BFFC0000 5305C304 71780746  [...........SF.xq]
7F12A35CFC50 2E0C1808 0B800104 00180008 00140020  [............ ...]
7F12A35CFC60 00000068 00000068 00000000 00000000  [h...h...........]
7F12A35CFC70 4303010B 019A0000 00000D04 000682B7  [...C............]
7F12A35CFC80 001E0008 00000195 00C082C8 0013002C  [............,...]
7F12A35CFC90 00008000 000682AD 0040B615 00400348  [..........@.H.@.]
7F12A35CFCA0 010312FF 00000002 BF000083 0018000A  [................]
7F12A35CFCB0 00140020 6F690020 0000004E 0000004E  [ ... .ioN...N...]
7F12A35CFCC0 00000000 00000000 4203160A 019A0000  [...........B....]
7F12A35CFCD0 97470D04 0000002A 00070005 00000199  [..G.*...........]
7F12A35CFCE0 00C08166 0023002B 00008000 000682B7  [f...+.#.........]
7F12A35CFCF0 00010203 004002B8 0040BB15 00000000  [......@...@.....]
7F12A35CFD00 BFFC0000 53595303 76616A14 732F7861  [.....SYS.javax/s]
7F12A35CFD10 676E6977 61544A2F 24656C62 40000633  [wing/JTable$3..@]
7F12A35CFD20 6F00FBBA 0018000A 00140020 65630005  [...o.... .....ce]
7F12A35CFD30 0000004D 0000004D 00000000 00000000  [M...M...........]
7F12A35CFD40 4103160A 019A0000 97470D04 0000002A  [...A......G.*...]
7F12A35CFD50 00070005 00000199 00C08166 0022002B  [........f...+.".]
7F12A35CFD60 00008000 000682B7 00010203 004002B0  [..............@.]
7F12A35CFD70 0040C088 00000000 BFFC0000 5305C304  [..@............S]
7F12A35CFD80 436D6146 00180008 00140020 00000044  [FamC.... ...D...]
7F12A35CFD90 00000044 00000000 00000000 4003010B  [D..............@]
7F12A35CFDA0 019A0000 00000D04 000682B7 001E0008  [................]
7F12A35CFDB0 00000195 00C082C8 0010002C 00008000  [........,.......]
7F12A35CFDC0 000682AD 0040BAFB 00400268 010312FF  [......@.h.@.....]
7F12A35CFDD0 00000002 BF00006F 0018000A 00140020  [....o....... ...]
7F12A35CFDE0 00010010 0000003F 0000003F 00000000  [....?...?.......]
7F12A35CFDF0 00000000 3F03160A 019A0000 97470D04  [.......?......G.]
7F12A35CFE00 0000002A 00070005 00000199 00C08166  [*...........f...]
7F12A35CFE10 0020002B 00008000 000682B7 00010203  [+. .............]
7F12A35CFE20 00400248 0040BADD 0000007F 00000000  [H.@...@.........]
7F12A35CFE30 0402C102 455305C3 400006FF A900BEBA  [......SE...@....]
7F12A35CFE40 12012C0A 1006C304 8001FF4F 35312F1E  [.,......O..../15]
7F12A35CFE50 63326466 535F3063 61657274 6972506D  [fd2cc0_StreamPri]
7F12A35CFE60 6553746E 63697672 02614665 02FF02C1  [ntServiceFa.....]
7F12A35CFE70 78071EC1 0C180871 78070D2E 0C180871  [...xq......xq...]
7F12A35CFE80 78070D2E 0C180871 C1020D2E 02FFFF02  [...xq...........]
7F12A35CFE90 02FF49C1 C30407C1 01243807 12002C80  [.I.......8$..,..]
7F12A35CFEA0 1006C304 C102FF4E 616A1E02 2F786176  [....N.....javax/]
7F12A35CFEB0 6E697270 72502F74 53746E69 69767265  [print/PrintServi]
7F12A35CFEC0 6F4C6563 70756B6F FF02C102 0706C102  [ceLookup........]
7F12A35CFED0 18087178 070D2E0C 18087178 070D2E0C  [xq......xq......]
7F12A35CFEE0 18087178 020D2E0C FFFF02C1 01FF8001  [xq..............]
7F12A35CFEF0 07C30480 C1022438 12002C02 1006C304  [....8$...,......]
7F12A35CFF00 8001FF4D 76616A1E 702F7861 746E6972  [M....javax/print]
7F12A35CFF10 6972502F 6553746E 63697672 6F6F4C65  [/PrintServiceLoo]
7F12A35CFF20 0270756B 02FF02C1 78071EC1 0C180871  [kup........xq...]
7F12A35CFF30 78070D2E 0C180871 78070D2E 0C180871  [...xq......xq...]
7F12A35CFF40 C1020D2E 02FFFF02 02FF49C1 C30407C1  [.........I......]
7F12A35CFF50 01243807 12002C80 1006C304 C102FF4C  [.8$..,......L...]
7F12A35CFF60 372F1E02 30366664 5F636662 6E697250  [../7df60bfc_Prin]
7F12A35CFF70 72655374 65636976 6B6F6F4C 65537075  [tServiceLookupSe]
7F12A35CFF80 FF02C102 0706C102 18087178 070D2E0C  [........xq......]
7F12A35CFF90 18087178 070D2E0C 18087178 020D2E0C  [xq......xq......]
7F12A35CFFA0 FFFF02C1 01FF8001 07C30480 C1022438  [............8$..]
7F12A35CFFB0 12002C02 1006C304 8001FF4B 64372F1E  [.,......K..../7d]
7F12A35CFFC0 62303666 505F6366 746E6972 76726553  [f60bfc_PrintServ]
7F12A35CFFD0 4C656369 756B6F6F 02655370 02FF02C1  [iceLookupSe.....]
7F12A35CFFE0 78071EC1 0C180871 78070D2E 0C180871  [...xq......xq...]
7F12A35CFFF0 78070D2E 0C180871 C1020D2E 02FFFF02  [...xq...........]
7F12A35D0000 02FF49C1 C30407C1 01243807 12002C80  [.I.......8$..,..]
7F12A35D0010 1006C304 C102FF4A 372F1D02 36376530  [....J...../70e76]
7F12A35D0020 5F303037 6E697250 72655374 65636976  [700_PrintService]
7F12A35D0030 6B6F6F4C 02317075 02FF02C1 780706C1  [Lookup1........x]
7F12A35D0040 0C180871 78070D2E 0C180871 78070D2E  [q......xq......x]
7F12A35D0050 0C180871 C1020D2E 01FFFF02 8001FF80  [q...............]
7F12A35D0060 3807C304 02C10224 0412002C 491006C3  [...8$...,......I]
7F12A35D0070 1D8001FF 6530372F 30373637 72505F30  [..../70e76700_Pr]
7F12A35D0080 53746E69 69767265 6F4C6563 70756B6F  [intServiceLookup]
7F12A35D0090 02C10231 1EC102FF 08717807 0D2E0C18  [1........xq.....]
7F12A35D00A0 08717807 0D2E0C18 08717807 0D2E0C18  [.xq......xq.....]
7F12A35D00B0 FF02C102 49C102FF 07C102FF 3807C304  [.......I.......8]
7F12A35D00C0 2C800124 C3041200 FF481006 1E02C102  [$..,......H.....]
7F12A35D00D0 6537322F 39383265 754D5F65 4469746C  [/27ee289e_MultiD]
7F12A35D00E0 7250636F 53746E69 69767265 C1026563  [ocPrintService..]
7F12A35D00F0 C102FF02 71780706 2E0C1808 7178070D  [......xq......xq]
7F12A35D0100 2E0C1808 7178070D 2E0C1808 02C1020D  [......xq........]
7F12A35D0110 8001FFFF 048001FF 243807C3 2C02C102  [..........8$...,]
7F12A35D0120 C3041200 FF471006 2F1E8001 65653732  [......G..../27ee]
7F12A35D0130 65393832 6C754D5F 6F446974 69725063  [289e_MultiDocPri]
7F12A35D0140 6553746E 63697672 02C10265 1EC102FF  [ntService.......]
7F12A35D0150 08717807 0D2E0C18 08717807 0D2E0C18  [.xq......xq.....]
7F12A35D0160 08717807 0D2E0C18 FF02C102 49C102FF  [.xq............I]
7F12A35D0170 07C102FF 3807C304 2C800124 C3041200  [.......8$..,....]
7F12A35D0180 FF461006 1C02C102 6176616A 72702F78  [..F.....javax/pr]
7F12A35D0190 2F746E69 746C754D 636F4469 6E697250  [int/MultiDocPrin]
7F12A35D01A0 626F4A74 FF02C102 0706C102 18087178  [tJob........xq..]
7F12A35D01B0 070D2E0C 18087178 070D2E0C 18087178  [....xq......xq..]
7F12A35D01C0 020D2E0C FFFF02C1 01FF8001 07C30480  [................]
7F12A35D01D0 C1022438 12002C02 1006C304 8001FF45  [8$...,......E...]
7F12A35D01E0 76616A1C 702F7861 746E6972 6C754D2F  [.javax/print/Mul]
7F12A35D01F0 6F446974 69725063 6F4A746E 02C10262  [tiDocPrintJob...]
7F12A35D0200 1EC102FF 08717807 0D2E0C18 08717807  [.....xq......xq.]
7F12A35D0210 0D2E0C18 08717807 0D2E0C18 FF02C102  [.....xq.........]
7F12A35D0220 49C102FF 07C102FF 3807C304 2C800124  [...I.......8$..,]
7F12A35D0230 C3041200 FF441006 1402C102 6176616A  [......D.....java]
7F12A35D0240 72702F78 2F746E69 746C754D 636F4469  [x/print/MultiDoc]
7F12A35D0250 FF02C102 0706C102 18087178 070D2E0C  [........xq......]
7F12A35D0260 18087178 070D2E0C 18087178 020D2E0C  [xq......xq......]
7F12A35D0270 FFFF02C1 01FF8001 07C30480 C1022438  [............8$..]
7F12A35D0280 12002C02 1006C304 8001FF43 76616A14  [.,......C....jav]
7F12A35D0290 702F7861 746E6972 6C754D2F 6F446974  [ax/print/MultiDo]
7F12A35D02A0 02C10263 1EC102FF 08717807 0D2E0C18  [c........xq.....]
7F12A35D02B0 08717807 0D2E0C18 08717807 0D2E0C18  [.xq......xq.....]
7F12A35D02C0 FF02C102 49C102FF 07C102FF 3807C304  [.......I.......8]
7F12A35D02D0 2C800124 C3041200 FF421006 0F02C102  [$..,......B.....]
7F12A35D02E0 6176616A 72702F78 2F746E69 02636F44  [javax/print/Doc.]
7F12A35D02F0 02FF02C1 780706C1 0C180871 78070D2E  [.......xq......x]
7F12A35D0300 0C180871 78070D2E 0C180871 C1020D2E  [q......xq.......]
7F12A35D0310 01FFFF02 8001FF80 3807C304 02C10224  [...........8$...]
7F12A35D0320 0412002C 411006C3 0F8001FF 6176616A  [,......A....java]
7F12A35D0330 72702F78 2F746E69 02636F44 02FF02C1  [x/print/Doc.....]
7F12A35D0340 78071EC1 0C180871 78070D2E 0C180871  [...xq......xq...]
7F12A35D0350 78070D2E 0C180871 C1020D2E 02FFFF02  [...xq...........]
7F12A35D0360 02FF49C1 C30407C1 01243807 12002C80  [.I.......8$..,..]
7F12A35D0370 1006C304 C102FF40 322F1902 35636135  [....@...../25ac5]
7F12A35D0380 5F343162 41636F44 69727474 65747562  [b14_DocAttribute]
7F12A35D0390 02746553 02FF02C1 780706C1 0C180871  [Set........xq...]
7F12A35D03A0 78070D2E 0C180871 78070D2E 0C180871  [...xq......xq...]
7F12A35D03B0 C1020D2E 01FFFF02 8001FF80 3807C304  [...............8]
7F12A35D03C0 02C10224 0412002C 3F1006C3 198001FF  [$...,......?....]
7F12A35D03D0 6135322F 31623563 6F445F34 74744163  [/25ac5b14_DocAtt]
7F12A35D03E0 75626972 65536574 02C10274 1EC102FF  [ributeSet.......]
7F12A35D03F0 08717807 0D2E0C18 08717807 0D2E0C18  [.xq......xq.....]
7F12A35D0400 08717807 0D2E0C18 FF02C102 49C102FF  [.xq............I]
7F12A35D0410 07C102FF 3807C304 2C800124 C3041200  [.......8$..,....]
7F12A35D0420 FF3E1006 1A02C102 6176616A 72702F78  [..>.....javax/pr]
7F12A35D0430 2F746E69 6E697250 63784574 69747065  [int/PrintExcepti]
7F12A35D0440 C1026E6F C102FF02 71780706 2E0C1808  [on........xq....]
7F12A35D0450 7178070D 2E0C1808 7178070D 2E0C1808  [..xq......xq....]
7F12A35D0460 02C1020D 8001FFFF 048001FF 243807C3  [..............8$]
7F12A35D0470 2C02C102 C3041200 FF3D1006 6A1A8001  [...,......=....j]
7F12A35D0480 78617661 6972702F 502F746E 746E6972  [avax/print/Print]
7F12A35D0490 65637845 6F697470 02C1026E 1EC102FF  [Exception.......]
7F12A35D04A0 08717807 0D2E0C18 08717807 0D2E0C18  [.xq......xq.....]
7F12A35D04B0 08717807 0D2E0C18 FF02C102 49C102FF  [.xq............I]
7F12A35D04C0 07C102FF 3807C304 2C800124 C3041200  [.......8$..,....]
7F12A35D04D0 FF3C1006 1702C102 6176616A 72702F78  [..<.....javax/pr]
7F12A35D04E0 2F746E69 50636F44 746E6972 02626F4A  [int/DocPrintJob.]
7F12A35D04F0 02FF02C1 780706C1 0C180871 78070D2E  [.......xq......x]
7F12A35D0500 0C180871 78070D2E 0C180871 C1020D2E  [q......xq.......]
7F12A35D0510 01FFFF02 8001FF80 3807C304 02C10224  [...........8$...]
7F12A35D0520 0412002C 3B1006C3 178001FF 6176616A  [,......;....java]
7F12A35D0530 72702F78 2F746E69 50636F44 746E6972  [x/print/DocPrint]
7F12A35D0540 02626F4A 02FF02C1 78071EC1 0C180871  [Job........xq...]
7F12A35D0550 78070D2E 0C180871 78070D2E 0C180871  [...xq......xq...]
7F12A35D0560 C1020D2E 02FFFF02 02FF49C1 C30407C1  [.........I......]
7F12A35D0570 01243807 12002C80 1006C304 C102FF3A  [.8$..,......:...]
7F12A35D0580 312F1E02 66333037 5F363239 6E697250  [../1703f926_Prin]
7F12A35D0590 626F4A74 72747441 74756269 73694C65  [tJobAttributeLis]
7F12A35D05A0 FF02C102 0706C102 18087178 070D2E0C  [........xq......]
7F12A35D05B0 18087178 070D2E0C 18087178 020D2E0C  [xq......xq......]
7F12A35D05C0 FFFF02C1 01FF8001 07C30480 C1022438  [............8$..]
7F12A35D05D0 12002C02 1006C304 8001FF39 37312F1E  [.,......9..../17]
7F12A35D05E0 39663330 505F3632 746E6972 41626F4A  [03f926_PrintJobA]
7F12A35D05F0 69727474 65747562 0273694C 02FF02C1  [ttributeLis.....]
7F12A35D0600 78071EC1 0C180871 78070D2E 0C180871  [...xq......xq...]
7F12A35D0610 78070D2E 0C180871 C1020D2E 02FFFF02  [...xq...........]
7F12A35D0620 02FF49C1 C30407C1 01243807 12002C80  [.I.......8$..,..]
7F12A35D0630 1006C304 C102FF38 382F1E02 65333339  [....8...../8933e]
7F12A35D0640 5F386435 6E697250 626F4A74 72747441  [5d8_PrintJobAttr]
7F12A35D0650 74756269 65764565 FF02C102 0706C102  [ibuteEve........]
7F12A35D0660 18087178 070D2E0C 18087178 070D2E0C  [xq......xq......]
7F12A35D0670 18087178 020D2E0C FFFF02C1 01FF8001  [xq..............]
7F12A35D0680 07C30480 C1022438 12002C02 1006C304  [....8$...,......]
7F12A35D0690 8001FF37 39382F1E 35653333 505F3864  [7..../8933e5d8_P]
7F12A35D06A0 746E6972 41626F4A 69727474 65747562  [rintJobAttribute]
7F12A35D06B0 02657645 02FF02C1 78071EC1 0C180871  [Eve........xq...]
7F12A35D06C0 78070D2E 0C180871 78070D2E 0C180871  [...xq......xq...]
7F12A35D06D0 C1020D2E 02FFFF02 02FF49C1 C30407C1  [.........I......]
7F12A35D06E0 01243807 12002C80 1006C304 C102FF36  [.8$..,......6...]
7F12A35D06F0 616A1C02 2F786176 6E697270 76652F74  [..javax/print/ev]
7F12A35D0700 2F746E65 6E697250 65764574 C102746E  [ent/PrintEvent..]
7F12A35D0710 C102FF02 71780706 2E0C1808 7178070D  [......xq......xq]
7F12A35D0720 2E0C1808 7178070D 2E0C1808 02C1020D  [......xq........]
7F12A35D0730 8001FFFF 048001FF 243807C3 2C02C102  [..........8$...,]
7F12A35D0740 C3041200 FF351006 6A1C8001 78617661  [......5....javax]
7F12A35D0750 6972702F 652F746E 746E6576 6972502F  [/print/event/Pri]
7F12A35D0760 7645746E 02746E65 02FF02C1 78071EC1  [ntEvent........x]
7F12A35D0770 0C180871 78070D2E 0C180871 78070D2E  [q......xq......x]
7F12A35D0780 0C180871 C1020D2E 02FFFF02 02FF49C1  [q............I..]
7F12A35D0790 C30407C1 01243807 12002C80 1006C304  [.....8$..,......]
7F12A35D07A0 C102FF34 622F1E02 62323263 5F653562  [4...../bc22bb5e_]
7F12A35D07B0 72747441 74756269 74655365 6C697455  [AttributeSetUtil]
7F12A35D07C0 65697469 FF02C102 0706C102 18087178  [itie........xq..]
7F12A35D07D0 070D2E0C 18087178 070D2E0C 18087178  [....xq......xq..]
7F12A35D07E0 020D2E0C FFFF02C1 01FF8001 07C30480  [................]
7F12A35D07F0 C1022438 12002C02 1006C304 8001FF33  [8$...,......3...]
7F12A35D0800 63622F1E 62623232 415F6535 69727474  [./bc22bb5e_Attri]
7F12A35D0810 65747562 55746553 696C6974 02656974  [buteSetUtilitie.]
7F12A35D0820 02FF02C1 78071EC1 0C180871 78070D2E  [.......xq......x]
7F12A35D0830 0C180871 78070D2E 0C180871 C1020D2E  [q......xq.......]
7F12A35D0840 02FFFF02 02FF49C1 C30407C1 01243807  [.....I.......8$.]
7F12A35D0850 12002C80 1006C304 C102FF32 332F1E02  [.,......2...../3]
7F12A35D0860 63333964 505F6463 746E6972 76726553  [d93ccd_PrintServ]
7F12A35D0870 41656369 69727474 65747562 FF02C102  [iceAttribute....]
7F12A35D0880 0706C102 18087178 070D2E0C 18087178  [....xq......xq..]
7F12A35D0890 070D2E0C 18087178 020D2E0C FFFF02C1  [....xq..........]
7F12A35D08A0 01FF8001 07C30480 C1022438 12002C02  [........8$...,..]
7F12A35D08B0 1006C304 8001FF31 64332F1E 63633339  [....1..../3d93cc]
7F12A35D08C0 72505F64 53746E69 69767265 74416563  [d_PrintServiceAt]
7F12A35D08D0 62697274 02657475 02FF02C1 78071EC1  [tribute........x]
7F12A35D08E0 0C180871 78070D2E 0C180871 78070D2E  [q......xq......x]
7F12A35D08F0 0C180871 C1020D2E 02FFFF02 02FF49C1  [q............I..]
7F12A35D0900 C30407C1 01243807 12002C80 1006C304  [.....8$..,......]
7F12A35D0910 C102FF30 322F1E02 32623330 5F333830  [0...../203b2083_]
7F12A35D0920 72747441 74756269 74655365 6C697455  [AttributeSetUtil]
7F12A35D0930 65697469 FF02C102 0706C102 18087178  [itie........xq..]
7F12A35D0940 070D2E0C 18087178 070D2E0C 18087178  [....xq......xq..]
7F12A35D0950 020D2E0C FFFF02C1 01FF8001 07C30480  [................]
7F12A35D0960 C1022438 12002C02 1006C304 8001FF2F  [8$...,....../...]
7F12A35D0970 30322F1E 30326233 415F3338 69727474  [./203b2083_Attri]
7F12A35D0980 65747562 55746553 696C6974 02656974  [buteSetUtilitie.]
7F12A35D0990 02FF02C1 78071EC1 0C180871 78070D2E  [.......xq......x]
7F12A35D09A0 0C180871 78070D2E 0C180871 C1020D2E  [q......xq.......]
7F12A35D09B0 02FFFF02 02FF49C1 C30407C1 01243807  [.....I.......8$.]
7F12A35D09C0 12002C80 1006C304 C102FF2E 622F1E02  [.,............/b]
7F12A35D09D0 32376563 5F303639 72747441 74756269  [ce72960_Attribut]
7F12A35D09E0 74655365 6C697455 65697469 FF02C102  [eSetUtilitie....]
7F12A35D09F0 0706C102 18087178 070D2E0C 18087178  [....xq......xq..]
7F12A35D0A00 070D2E0C 18087178 020D2E0C FFFF02C1  [....xq..........]
7F12A35D0A10 01FF8001 07C30480 C1022438 12002C02  [........8$...,..]
7F12A35D0A20 1006C304 8001FF2D 63622F1E 39323765  [....-..../bce729]
7F12A35D0A30 415F3036 69727474 65747562 55746553  [60_AttributeSetU]
7F12A35D0A40 696C6974 02656974 02FF02C1 78071EC1  [tilitie........x]
7F12A35D0A50 0C180871 78070D2E 0C180871 78070D2E  [q......xq......x]
7F12A35D0A60 0C180871 C1020D2E 02FFFF02 02FF49C1  [q............I..]
7F12A35D0A70 C30407C1 01243807 12002C80 1006C304  [.....8$..,......]
7F12A35D0A80 C102FF2C 312F1E02 33383337 5F383963  [,...../17383c98_]
7F12A35D0A90 72747441 74756269 74655365 6C697455  [AttributeSetUtil]
7F12A35D0AA0 65697469 FF02C102 0706C102 18087178  [itie........xq..]
7F12A35D0AB0 070D2E0C 18087178 070D2E0C 18087178  [....xq......xq..]
7F12A35D0AC0 020D2E0C FFFF02C1 01FF8001 07C30480  [................]
7F12A35D0AD0 C1022438 12002C02 1006C304 8001FF2B  [8$...,......+...]
7F12A35D0AE0 37312F1E 63333833 415F3839 69727474  [./17383c98_Attri]
7F12A35D0AF0 65747562 55746553 696C6974 02656974  [buteSetUtilitie.]
7F12A35D0B00 02FF02C1 78071EC1 0C180871 78070D2E  [.......xq......x]
7F12A35D0B10 0C180871 78070D2E 0C180871 C1020D2E  [q......xq.......]
7F12A35D0B20 02FFFF02 02FF49C1 C30407C1 01243807  [.....I.......8$.]
7F12A35D0B30 12002C80 1006C304 C102FF2A 652F1E02  [.,......*...../e]
7F12A35D0B40 64303662 415F6537 69727474 65747562  [b60d7e_Attribute]
7F12A35D0B50 55746553 696C6974 73656974 FF02C102  [SetUtilities....]
7F12A35D0B60 0706C102 18087178 070D2E0C 18087178  [....xq......xq..]
7F12A35D0B70 070D2E0C 18087178 020D2E0C FFFF02C1  [....xq..........]
7F12A35D0B80 01FF8001 07C30480 C1022438 12002C02  [........8$...,..]
7F12A35D0B90 1006C304 8001FF29 62652F1E 37643036  [....)..../eb60d7]
7F12A35D0BA0 74415F65 62697274 53657475 74557465  [e_AttributeSetUt]
7F12A35D0BB0 74696C69 02736569 02FF02C1 78071EC1  [ilities........x]
7F12A35D0BC0 0C180871 78070D2E 0C180871 78070D2E  [q......xq......x]
7F12A35D0BD0 0C180871 C1020D2E 02FFFF02 02FF49C1  [q............I..]
7F12A35D0BE0 C30407C1 01243807 12002C80 1006C304  [.....8$..,......]
7F12A35D0BF0 C102FF28 312F1E02 32366635 5F623966  [(...../15f62f9b_]
7F12A35D0C00 72747441 74756269 74655365 6C697455  [AttributeSetUtil]
7F12A35D0C10 65697469 FF02C102 0706C102 18087178  [itie........xq..]
7F12A35D0C20 070D2E0C 18087178 070D2E0C 18087178  [....xq......xq..]
7F12A35D0C30 020D2E0C FFFF02C1 01FF8001 07C30480  [................]
7F12A35D0C40 C1022438 12002C02 1006C304 8001FF27  [8$...,......'...]
7F12A35D0C50 35312F1E 66323666 415F6239 69727474  [./15f62f9b_Attri]
7F12A35D0C60 65747562 55746553 696C6974 02656974  [buteSetUtilitie.]
7F12A35D0C70 02FF02C1 78071EC1 0C180871 78070D2E  [.......xq......x]
7F12A35D0C80 0C180871 78070D2E 0C180871 C1020D2E  [q......xq.......]
7F12A35D0C90 02FFFF02 02FF49C1 C30407C1 01243807  [.....I.......8$.]
7F12A35D0CA0 12002C80 1006C304 C102FF26 362F1E02  [.,......&...../6]
7F12A35D0CB0 63366165 5F383561 6F6D6E55 69666964  [ea6ca58_Unmodifi]
7F12A35D0CC0 656C6261 45746553 70656378 FF02C102  [ableSetExcep....]
7F12A35D0CD0 0706C102 18087178 070D2E0C 18087178  [....xq......xq..]
7F12A35D0CE0 070D2E0C 18087178 020D2E0C FFFF02C1  [....xq..........]
7F12A35D0CF0 01FF8001 07C30480 C1022438 12002C02  [........8$...,..]
7F12A35D0D00 1006C304 8001FF25 65362F1E 61633661  [....%..../6ea6ca]
7F12A35D0D10 555F3835 646F6D6E 61696669 53656C62  [58_UnmodifiableS]
7F12A35D0D20 78457465 02706563 02FF02C1 78071EC1  [etExcep........x]
7F12A35D0D30 0C180871 78070D2E 0C180871 78070D2E  [q......xq......x]
7F12A35D0D40 0C180871 C1020D2E 02FFFF02 02FF49C1  [q............I..]
7F12A35D0D50 C30407C1 01243807 12002C80 1006C304  [.....8$..,......]
7F12A35D0D60 C102FF24 632F1E02 35373539 415F3336  [$...../c957563_A]
7F12A35D0D70 69727474 65747562 55746553 696C6974  [ttributeSetUtili]
7F12A35D0D80 73656974 FF02C102 0706C102 18087178  [ties........xq..]
7F12A35D0D90 070D2E0C 18087178 070D2E0C 18087178  [....xq......xq..]
7F12A35D0DA0 020D2E0C FFFF02C1 01FF8001 07C30480  [................]
7F12A35D0DB0 C1022438 12002C02 1006C304 8001FF23  [8$...,......#...]
7F12A35D0DC0 39632F1E 36353735 74415F33 62697274  [./c957563_Attrib]
7F12A35D0DD0 53657475 74557465 74696C69 02736569  [uteSetUtilities.]
7F12A35D0DE0 02FF02C1 78071EC1 0C180871 78070D2E  [.......xq......x]
7F12A35D0DF0 0C180871 78070D2E 0C180871 C1020D2E  [q......xq.......]
7F12A35D0E00 02FFFF02 02FF49C1 C30407C1 01243807  [.....I.......8$.]
7F12A35D0E10 12002C80 1006C304 C102FF22 322F1E02  [.,......"...../2]
7F12A35D0E20 35626665 5F373938 72747441 74756269  [efb5897_Attribut]
7F12A35D0E30 74655365 6C697455 65697469 FF02C102  [eSetUtilitie....]
7F12A35D0E40 0706C102 18087178 070D2E0C 18087178  [....xq......xq..]
7F12A35D0E50 070D2E0C 18087178 020D2E0C FFFF02C1  [....xq..........]
7F12A35D0E60 01FF8001 07C30480 C1022438 12002C02  [........8$...,..]
7F12A35D0E70 1006C304 8001FF21 65322F1E 38356266  [....!..../2efb58]
7F12A35D0E80 415F3739 69727474 65747562 55746553  [97_AttributeSetU]
7F12A35D0E90 696C6974 02656974 02FF02C1 78071EC1  [tilitie........x]
7F12A35D0EA0 0C180871 78070D2E 0C180871 78070D2E  [q......xq......x]
7F12A35D0EB0 0C180871 C1020D2E 02FFFF02 02FF49C1  [q............I..]
7F12A35D0EC0 C30407C1 01243807 12002C80 1006C304  [.....8$..,......]
7F12A35D0ED0 C102FF20 612F1E02 32323566 5F343663  [ ...../af522c64_]
7F12A35D0EE0 72747441 74756269 74655365 6C697455  [AttributeSetUtil]
7F12A35D0EF0 65697469 FF02C102 0706C102 18087178  [itie........xq..]
7F12A35D0F00 070D2E0C 18087178 070D2E0C 18087178  [....xq......xq..]
7F12A35D0F10 020D2E0C FFFF02C1 01FF8001 07C30480  [................]
7F12A35D0F20 C1022438 12002C02 1006C304 8001FF1F  [8$...,..........]
7F12A35D0F30 66612F1E 63323235 415F3436 69727474  [./af522c64_Attri]
7F12A35D0F40 65747562 55746553 696C6974 02656974  [buteSetUtilitie.]
7F12A35D0F50 02FF02C1 78071EC1 0C180871 78070D2E  [.......xq......x]
7F12A35D0F60 0C180871 78070D2E 0C180871 C1020D2E  [q......xq.......]
7F12A35D0F70 02FFFF02 02FF49C1 C30407C1 01243807  [.....I.......8$.]
7F12A35D0F80 12002C80 1006C304 C102FF1E 352F1E02  [.,............/5]
7F12A35D0F90 64306537 5F646333 72747441 74756269  [7e0d3cd_Attribut]
7F12A35D0FA0 74655365 6C697455 65697469 FF02C102  [eSetUtilitie....]
7F12A35D0FB0 0706C102 18087178 070D2E0C 18087178  [....xq......xq..]
7F12A35D0FC0 070D2E0C 18087178 020D2E0C FFFF02C1  [....xq..........]
7F12A35D0FD0 01FF8001 07C30480 C1022438 12002C02  [........8$...,..]
7F12A35D0FE0 1006C304 8001FF1D 37352F1E 33643065  [........./57e0d3]
7F12A35D0FF0 415F6463 69727474 65747562 55746553  [cd_AttributeSetU]
7F12A35D1000 696C6974 02656974 02FF02C1 78071EC1  [tilitie........x]
7F12A35D1010 0C180871 78070D2E 0C180871 78070D2E  [q......xq......x]
7F12A35D1020 0C180871 C1020D2E 02FFFF02 02FF49C1  [q............I..]
7F12A35D1030 C30407C1 01243807 12002C80 1006C304  [.....8$..,......]
7F12A35D1040 C102FF1C 392F1E02 35613738 5F323934  [....../987a5492_]
7F12A35D1050 72747441 74756269 74655365 6C697455  [AttributeSetUtil]
7F12A35D1060 65697469 FF02C102 0706C102 18087178  [itie........xq..]
7F12A35D1070 070D2E0C 18087178 070D2E0C 18087178  [....xq......xq..]
7F12A35D1080 020D2E0C FFFF02C1 01FF8001 07C30480  [................]
7F12A35D1090 C1022438 12002C02 1006C304 8001FF1B  [8$...,..........]
7F12A35D10A0 38392F1E 34356137 415F3239 69727474  [./987a5492_Attri]
7F12A35D10B0 65747562 55746553 696C6974 02656974  [buteSetUtilitie.]
7F12A35D10C0 02FF02C1 78071EC1 0C180871 78070D2E  [.......xq......x]
7F12A35D10D0 0C180871 78070D2E 0C180871 C1020D2E  [q......xq.......]
7F12A35D10E0 02FFFF02 02FF49C1 C30407C1 01243807  [.....I.......8$.]
7F12A35D10F0 12002C80 1006C304 C102FF1A 352F1A02  [.,............/5]
7F12A35D1100 38366564 5F663064 6E697250 626F4A74  [de68d0f_PrintJob]
7F12A35D1110 7473694C 72656E65 FF02C102 0706C102  [Listener........]
7F12A35D1120 18087178 070D2E0C 18087178 070D2E0C  [xq......xq......]
7F12A35D1130 18087178 020D2E0C FFFF02C1 01FF8001  [xq..............]
7F12A35D1140 07C30480 C1022438 12002C02 1006C304  [....8$...,......]
7F12A35D1150 8001FF19 64352F1A 64383665 505F6630  [...../5de68d0f_P]
7F12A35D1160 746E6972 4C626F4A 65747369 0272656E  [rintJobListener.]
7F12A35D1170 02FF02C1 78071EC1 0C180871 78070D2E  [.......xq......x]
7F12A35D1180 0C180871 78070D2E 0C180871 C1020D2E  [q......xq.......]
7F12A35D1190 02FFFF02 02FF49C1 C30407C1 01243807  [.....I.......8$.]
7F12A35D11A0 12002C80 1006C304 C102FF18 322F1702  [.,............/2]
7F12A35D11B0 39663432 5F303563 6E697250 626F4A74  [24f9c50_PrintJob]
7F12A35D11C0 6E657645 02C10274 06C102FF 08717807  [Event........xq.]
7F12A35D11D0 0D2E0C18 08717807 0D2E0C18 08717807  [.....xq......xq.]
7F12A35D11E0 0D2E0C18 FF02C102 FF8001FF C3048001  [................]
7F12A35D11F0 02243807 002C02C1 06C30412 01FF1710  [.8$...,.........]
7F12A35D1200 322F1780 39663432 5F303563 6E697250  [../224f9c50_Prin]
7F12A35D1210 626F4A74 6E657645 02C10274 1EC102FF  [tJobEvent.......]
7F12A35D1220 08717807 0D2E0C18 08717807 0D2E0C18  [.xq......xq.....]
7F12A35D1230 08717807 0D2E0C18 FF02C102 49C102FF  [.xq............I]
7F12A35D1240 07C102FF 3807C304 2C800124 C3041200  [.......8$..,....]
7F12A35D1250 FF161006 1E02C102 6664382F 32613831  [......../8df18a2]
7F12A35D1260 72505F61 4A746E69 7441626F 62697274  [a_PrintJobAttrib]
7F12A35D1270 53657475 C1027465 C102FF02 71780706  [uteSet........xq]
7F12A35D1280 2E0C1808 7178070D 2E0C1808 7178070D  [......xq......xq]
7F12A35D1290 2E0C1808 02C1020D 8001FFFF 048001FF  [................]
7F12A35D12A0 243807C3 2C02C102 C3041200 FF151006  [..8$...,........]
7F12A35D12B0 2F1E8001 31666438 61326138 6972505F  [.../8df18a2a_Pri]
7F12A35D12C0 6F4A746E 74744162 75626972 65536574  [ntJobAttributeSe]
7F12A35D12D0 02C10274 1EC102FF 08717807 0D2E0C18  [t........xq.....]
7F12A35D12E0 08717807 0D2E0C18 08717807 0D2E0C18  [.xq......xq.....]
7F12A35D12F0 FF02C102 49C102FF 07C102FF 3807C304  [.......I.......8]
7F12A35D1300 2C800124 C3041200 FF141006 1802C102  [$..,............]
7F12A35D1310 6176616A 72702F78 2F746E69 6E697250  [javax/print/Prin]
7F12A35D1320 72655374 65636976 FF02C102 0706C102  [tService........]
7F12A35D1330 18087178 070D2E0C 18087178 070D2E0C  [xq......xq......]
7F12A35D1340 18087178 020D2E0C FFFF02C1 01FF8001  [xq..............]
7F12A35D1350 07C30480 C1022438 12002C02 1006C304  [....8$...,......]
7F12A35D1360 8001FF13 76616A18 702F7861 746E6972  [.....javax/print]
7F12A35D1370 6972502F 6553746E 63697672 02C10265  [/PrintService...]
7F12A35D1380 1EC102FF 08717807 0D2E0C18 08717807  [.....xq......xq.]
7F12A35D1390 0D2E0C18 08717807 0D2E0C18 FF02C102  [.....xq.........]
7F12A35D13A0 49C102FF 07C102FF 3807C304 2C800124  [...I.......8$..,]
7F12A35D13B0 C3041200 FF121006 1C02C102 6176616A  [............java]
7F12A35D13C0 72702F78 2F746E69 76726553 55656369  [x/print/ServiceU]
7F12A35D13D0 63614649 79726F74 FF02C102 0706C102  [IFactory........]
7F12A35D13E0 18087178 070D2E0C 18087178 070D2E0C  [xq......xq......]
7F12A35D13F0 18087178 020D2E0C FFFF02C1 01FF8001  [xq..............]
7F12A35D1400 07C30480 C1022438 12002C02 1006C304  [....8$...,......]
7F12A35D1410 8001FF11 76616A1C 702F7861 746E6972  [.....javax/print]
7F12A35D1420 7265532F 65636976 61464955 726F7463  [/ServiceUIFactor]
7F12A35D1430 02C10279 1EC102FF 08717807 0D2E0C18  [y........xq.....]
7F12A35D1440 08717807 0D2E0C18 08717807 0D2E0C18  [.xq......xq.....]
7F12A35D1450 FF02C102 49C102FF 07C102FF 3807C304  [.......I.......8]
7F12A35D1460 2C800124 C3041200 FF101006 1E02C102  [$..,............]
7F12A35D1470 3439382F 36306661 72505F66 53746E69  [/894af06f_PrintS]
7F12A35D1480 69767265 74416563 62697274 C1027475  [erviceAttribut..]
7F12A35D1490 C102FF02 71780706 2E0C1808 7178070D  [......xq......xq]
7F12A35D14A0 2E0C1808 7178070D 2E0C1808 02C1020D  [......xq........]
7F12A35D14B0 8001FFFF 048001FF 243807C3 2C02C102  [..........8$...,]
7F12A35D14C0 C3041200 FF0F1006 2F1E8001 61343938  [.........../894a]
7F12A35D14D0 66363066 6972505F 6553746E 63697672  [f06f_PrintServic]
7F12A35D14E0 74744165 75626972 02C10274 1EC102FF  [eAttribut.......]
7F12A35D14F0 08717807 0D2E0C18 08717807 0D2E0C18  [.xq......xq.....]
7F12A35D1500 08717807 0D2E0C18 FF02C102 49C102FF  [.xq............I]
7F12A35D1510 07C102FF 3807C304 2C800124 C3041200  [.......8$..,....]
7F12A35D1520 FF0E1006 1E02C102 3938342F 37623734  [......../48947b7]
7F12A35D1530 72505F33 53746E69 69767265 74416563  [3_PrintServiceAt]
7F12A35D1540 62697274 C1027475 C102FF02 71780706  [tribut........xq]
7F12A35D1550 2E0C1808 7178070D 2E0C1808 7178070D  [......xq......xq]
7F12A35D1560 2E0C1808 02C1020D 8001FFFF 048001FF  [................]
7F12A35D1570 243807C3 2C02C102 C3041200 FF0D1006  [..8$...,........]
7F12A35D1580 2F1E8001 34393834 33376237 6972505F  [.../48947b73_Pri]
7F12A35D1590 6553746E 63697672 74744165 75626972  [ntServiceAttribu]
7F12A35D15A0 02C10274 1EC102FF 08717807 0D2E0C18  [t........xq.....]
7F12A35D15B0 08717807 0D2E0C18 08717807 0D2E0C18  [.xq......xq.....]
7F12A35D15C0 FF02C102 49C102FF 07C102FF 3807C304  [.......I.......8]
7F12A35D15D0 2C800124 C3041200 FF0C1006 1E02C102  [$..,............]
7F12A35D15E0 6366352F 64656566 72505F39 53746E69  [/5fcfeed9_PrintS]
7F12A35D15F0 69767265 74416563 62697274 C1027475  [erviceAttribut..]
7F12A35D1600 C102FF02 71780706 2E0C1808 7178070D  [......xq......xq]
7F12A35D1610 2E0C1808 7178070D 2E0C1808 02C1020D  [......xq........]
7F12A35D1620 8001FFFF 048001FF 243807C3 2C02C102  [..........8$...,]
7F12A35D1630 C3041200 FF0B1006 2F1E8001 66636635  [.........../5fcf]
7F12A35D1640 39646565 6972505F 6553746E 63697672  [eed9_PrintServic]
7F12A35D1650 74744165 75626972 02C10274 1EC102FF  [eAttribut.......]
7F12A35D1660 08717807 0D2E0C18 08717807 0D2E0C18  [.xq......xq.....]
7F12A35D1670 08717807 0D2E0C18 FF02C102 49C102FF  [.xq............I]
7F12A35D1680 07C102FF 3807C304 2C800124 C3041200  [.......8$..,....]
7F12A35D1690 FF0A1006 1E02C102 6466322F 63656139  [......../2fd9aec]
7F12A35D16A0 6F445F37 616C4663 53726F76 49565245  [7_DocFlavorSERVI]
7F12A35D16B0 465F4543 C102524F C102FF02 71780706  [CE_FOR........xq]
7F12A35D16C0 2E0C1808 7178070D 2E0C1808 7178070D  [......xq......xq]
7F12A35D16D0 2E0C1808 02C1020D 8001FFFF 048001FF  [................]
7F12A35D16E0 243807C3 2C02C102 C3041200 FF091006  [..8$...,........]
7F12A35D16F0 2F1E8001 39646632 37636561 636F445F  [.../2fd9aec7_Doc]
7F12A35D1700 76616C46 4553726F 43495652 4F465F45  [FlavorSERVICE_FO]
7F12A35D1710 02C10252 1EC102FF 08717807 0D2E0C18  [R........xq.....]
7F12A35D1720 08717807 0D2E0C18 08717807 0D2E0C18  [.xq......xq.....]
7F12A35D1730 FF02C102 49C102FF 07C102FF 3807C304  [.......I.......8]
7F12A35D1740 2C800124 C3041200 FF081006 1502C102  [$..,............]
7F12A35D1750 6176616A 72702F78 2F746E69 46636F44  [javax/print/DocF]
7F12A35D1760 6F76616C 02C10272 06C102FF 08717807  [lavor........xq.]
7F12A35D1770 0D2E0C18 08717807 0D2E0C18 08717807  [.....xq......xq.]
7F12A35D1780 0D2E0C18 FF02C102 FF8001FF C3048001  [................]
7F12A35D1790 02243807 002C02C1 06C30412 01FF0710  [.8$...,.........]
7F12A35D17A0 616A1580 2F786176 6E697270 6F442F74  [..javax/print/Do]
7F12A35D17B0 616C4663 02726F76 02FF02C1 78071EC1  [cFlavor........x]
7F12A35D17C0 0C180871 08002C2E 2350C203 4C494D06  [q....,....P#.MIL]
7F12A35D17D0 0552454C 52454C43 4EC2034B B6770753  [LER.CLERK..NS.w.]
7F12A35D17E0 01011701 0EC20201 0BC102FF 0308002C  [............,...]
7F12A35D17F0 040350C2 44524F46 414E4107 5453594C  [.P..FORD.ANALYST]
7F12A35D1800 434CC203 0CB57707 01010103 FF1FC202  [..LC.w..........]
7F12A35D1810 2C15C102 C2020800 414A0550 0553454D  [...,....P.JAMES.]
7F12A35D1820 52454C43 4DC2034B B5770763 0101030C  [CLERK..Mc.w.....]
7F12A35D1830 0AC20301 C102FF33 08002C1F 4D4FC203  [....3....,....OM]
7F12A35D1840 41444105 4305534D 4B52454C 594EC203  [.ADAMS.CLERK..NY]
7F12A35D1850 05BB7707 01010117 FF0CC202 2C15C102  [.w.............,]
7F12A35D1860 C2030800 54062D4F 454E5255 41530852  [....O-.TURNER.SA]
7F12A35D1870 4D53454C C2034E41 7707634D 010809B5  [LESMAN..Mc.w....]
7F12A35D1880 C2020101 02800110 002C1FC1 4FC20308  [..........,....O]
7F12A35D1890 494B0428 5009474E 49534552 544E4544  [(.KING.PRESIDENT]
7F12A35D18A0 B57707FF 0101110B 33C20201 0BC102FF  [..w........3....]
7F12A35D18B0 0308002C 05594EC2 544F4353 4E410754  [,....NY.SCOTT.AN]
7F12A35D18C0 53594C41 4CC20354 BB770743 01011304  [ALYST..LC.w.....]
7F12A35D18D0 1FC20201 15C102FF 0308002C 05534EC2  [........,....NS.]
7F12A35D18E0 52414C43 414D074B 4547414E 4FC20352  [CLARK.MANAGER..O]
7F12A35D18F0 B5770728 01010906 19C20301 C102FF33  [(.w.........3...]
7F12A35D1900 08002C0B 634DC203 414C4205 4D07454B  [.,....Mc.BLAKE.M]
7F12A35D1910 47414E41 C2035245 7707284F 010105B5  [ANAGER..O(.w....]
7F12A35D1920 C2030101 02FF331D 002C1FC1 4DC20308  [.....3....,....M]
7F12A35D1930 414D0637 4E495452 4C415308 414D5345  [7.MARTIN.SALESMA]
7F12A35D1940 4DC2034E B5770763 01011C09 0DC20301  [N..Mc.w.........]
7F12A35D1950 0FC20233 2C1FC102 C2030800 4A05434C  [3......,....LC.J]
7F12A35D1960 53454E4F 4E414D07 52454741 284FC203  [ONES.MANAGER..O(]
7F12A35D1970 04B57707 01010102 4C1EC203 15C102FF  [.w.........L....]
7F12A35D1980 0308002C 04164CC2 44524157 4C415308  [,....L..WARD.SAL]
7F12A35D1990 414D5345 4DC2034E B5770763 01011602  [ESMAN..Mc.w.....]
7F12A35D19A0 0DC20301 06C20233 2C1FC102 C2030800  [....3......,....]
7F12A35D19B0 4105644B 4E454C4C 4C415308 414D5345  [Kd.ALLEN.SALESMA]
7F12A35D19C0 4DC2034E B5770763 01011402 11C20201  [N..Mc.w.........]
7F12A35D19D0 0204C202 012C1FC1 4AC20308 4D530546  [......,....JF.SM]
7F12A35D19E0 05485449 52454C43 50C2034B B4770703  [ITH.CLERK..P..w.]
7F12A35D19F0 0101110C 09C20201 15C102FF 687F0602  [...............h]
Block header dump:  0x01000097
 Object id on Block? Y
 seg/obj: 0x15444  csc: 0x00.13687c  itc: 2  flg: E  typ: 1 - DATA
 =================================ktbbh=================================
     brn: 0  bdba: 0x1000090 ver: 0x01 opc: 0
     inc: 0  exflg: 0
 
 Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x000a.013.000002ee  0x00c00a3d.0080.1b  --U-    1  fsc 0x0000.0013687f
0x02   0x0009.017.000003e8  0x00c00713.00bd.34  C---    0  scn 0x0000.001364b1
=================================ktbbh=================================
bdba: 0x01000097
data_block_dump,data header at 0x7f12a35cfa64
=================================kdbh=================================
===============
tsiz: 0x1f98                                                                           
hsiz: 0x2e
pbl: 0x7f12a35cfa64
     76543210
flag=--------
ntab=1
nrow=14
frre=-1
fsbo=0x2e
fseo=0x1d61
avsp=0x1d33
tosp=0x1d33
=================================kdbh=================================
=================================Table Directory(kdbt)=================================
0xe:pti[0]      nrow=14 offs=0                                                         =================================Table Directory(kdbt)=================================
=================================Row Directory(kdbr)=================================
0x12:pri[0]     offs=0x1f72
0x14:pri[1]     offs=0x1f47
0x16:pri[2]     offs=0x1f1c
0x18:pri[3]     offs=0x1ef3
0x1a:pri[4]     offs=0x1ec6
0x1c:pri[5]     offs=0x1e9d
0x1e:pri[6]     offs=0x1e74
0x20:pri[7]     offs=0x1e4c
0x22:pri[8]     offs=0x1e26
0x24:pri[9]     offs=0x1dfb
0x26:pri[10]    offs=0x1dd5
0x28:pri[11]    offs=0x1daf
0x2a:pri[12]    offs=0x1d88
0x2c:pri[13]    offs=0x1d61
=================================Row Directory(kdbr)=================================
block_row_dump:
=================================rowdata =================================
tab 0, row 0, @0x1f72
tl: 38 fb: --H-FL-- lb: 0x1  cc: 8
col  0: [ 3]  c2 4a 46
col  1: [ 5]  53 4d 49 54 48
col  2: [ 5]  43 4c 45 52 4b
col  3: [ 3]  c2 50 03
col  4: [ 7]  77 b4 0c 11 01 01 01
col  5: [ 2]  c2 09
col  6: *NULL*
col  7: [ 2]  c1 15
tab 0, row 1, @0x1f47
tl: 43 fb: --H-FL-- lb: 0x0  cc: 8
col  0: [ 3]  c2 4b 64
col  1: [ 5]  41 4c 4c 45 4e
col  2: [ 8]  53 41 4c 45 53 4d 41 4e
col  3: [ 3]  c2 4d 63
col  4: [ 7]  77 b5 02 14 01 01 01
col  5: [ 2]  c2 11
col  6: [ 2]  c2 04
col  7: [ 2]  c1 1f
tab 0, row 2, @0x1f1c
tl: 43 fb: --H-FL-- lb: 0x0  cc: 8
col  0: [ 3]  c2 4c 16
col  1: [ 4]  57 41 52 44
col  2: [ 8]  53 41 4c 45 53 4d 41 4e
col  3: [ 3]  c2 4d 63
col  4: [ 7]  77 b5 02 16 01 01 01
col  5: [ 3]  c2 0d 33
col  6: [ 2]  c2 06
col  7: [ 2]  c1 1f
tab 0, row 3, @0x1ef3
tl: 41 fb: --H-FL-- lb: 0x0  cc: 8
col  0: [ 3]  c2 4c 43
col  1: [ 5]  4a 4f 4e 45 53
col  2: [ 7]  4d 41 4e 41 47 45 52
col  3: [ 3]  c2 4f 28
col  4: [ 7]  77 b5 04 02 01 01 01
col  5: [ 3]  c2 1e 4c
col  6: *NULL*
col  7: [ 2]  c1 15
tab 0, row 4, @0x1ec6
tl: 45 fb: --H-FL-- lb: 0x0  cc: 8
col  0: [ 3]  c2 4d 37
col  1: [ 6]  4d 41 52 54 49 4e
col  2: [ 8]  53 41 4c 45 53 4d 41 4e
col  3: [ 3]  c2 4d 63
col  4: [ 7]  77 b5 09 1c 01 01 01
col  5: [ 3]  c2 0d 33
col  6: [ 2]  c2 0f
col  7: [ 2]  c1 1f
tab 0, row 5, @0x1e9d
tl: 41 fb: --H-FL-- lb: 0x0  cc: 8
col  0: [ 3]  c2 4d 63
col  1: [ 5]  42 4c 41 4b 45
col  2: [ 7]  4d 41 4e 41 47 45 52
col  3: [ 3]  c2 4f 28
col  4: [ 7]  77 b5 05 01 01 01 01
col  5: [ 3]  c2 1d 33
col  6: *NULL*
col  7: [ 2]  c1 1f
tab 0, row 6, @0x1e74
tl: 41 fb: --H-FL-- lb: 0x0  cc: 8
col  0: [ 3]  c2 4e 53
col  1: [ 5]  43 4c 41 52 4b
col  2: [ 7]  4d 41 4e 41 47 45 52
col  3: [ 3]  c2 4f 28
col  4: [ 7]  77 b5 06 09 01 01 01
col  5: [ 3]  c2 19 33
col  6: *NULL*
col  7: [ 2]  c1 0b
tab 0, row 7, @0x1e4c
tl: 40 fb: --H-FL-- lb: 0x0  cc: 8
col  0: [ 3]  c2 4e 59
col  1: [ 5]  53 43 4f 54 54
col  2: [ 7]  41 4e 41 4c 59 53 54
col  3: [ 3]  c2 4c 43
col  4: [ 7]  77 bb 04 13 01 01 01
col  5: [ 2]  c2 1f
col  6: *NULL*
col  7: [ 2]  c1 15
tab 0, row 8, @0x1e26
tl: 38 fb: --H-FL-- lb: 0x0  cc: 8
col  0: [ 3]  c2 4f 28
col  1: [ 4]  4b 49 4e 47
col  2: [ 9]  50 52 45 53 49 44 45 4e 54
col  3: *NULL*
col  4: [ 7]  77 b5 0b 11 01 01 01
col  5: [ 2]  c2 33
col  6: *NULL*
col  7: [ 2]  c1 0b
tab 0, row 9, @0x1dfb
tl: 43 fb: --H-FL-- lb: 0x0  cc: 8
col  0: [ 3]  c2 4f 2d
col  1: [ 6]  54 55 52 4e 45 52
col  2: [ 8]  53 41 4c 45 53 4d 41 4e
col  3: [ 3]  c2 4d 63
col  4: [ 7]  77 b5 09 08 01 01 01
col  5: [ 2]  c2 10
col  6: [ 1]  80
col  7: [ 2]  c1 1f
tab 0, row 10, @0x1dd5
tl: 38 fb: --H-FL-- lb: 0x0  cc: 8
col  0: [ 3]  c2 4f 4d
col  1: [ 5]  41 44 41 4d 53
col  2: [ 5]  43 4c 45 52 4b
col  3: [ 3]  c2 4e 59
col  4: [ 7]  77 bb 05 17 01 01 01
col  5: [ 2]  c2 0c
col  6: *NULL*
col  7: [ 2]  c1 15
tab 0, row 11, @0x1daf
tl: 38 fb: --H-FL-- lb: 0x0  cc: 8
col  0: [ 2]  c2 50
col  1: [ 5]  4a 41 4d 45 53
col  2: [ 5]  43 4c 45 52 4b
col  3: [ 3]  c2 4d 63
col  4: [ 7]  77 b5 0c 03 01 01 01
col  5: [ 3]  c2 0a 33
col  6: *NULL*
col  7: [ 2]  c1 1f
tab 0, row 12, @0x1d88
tl: 39 fb: --H-FL-- lb: 0x0  cc: 8
col  0: [ 3]  c2 50 03
col  1: [ 4]  46 4f 52 44
col  2: [ 7]  41 4e 41 4c 59 53 54
col  3: [ 3]  c2 4c 43
col  4: [ 7]  77 b5 0c 03 01 01 01
col  5: [ 2]  c2 1f
col  6: *NULL*
col  7: [ 2]  c1 15
tab 0, row 13, @0x1d61
tl: 39 fb: --H-FL-- lb: 0x0  cc: 8
col  0: [ 3]  c2 50 23
col  1: [ 6]  4d 49 4c 4c 45 52
col  2: [ 5]  43 4c 45 52 4b
col  3: [ 3]  c2 4e 53
col  4: [ 7]  77 b6 01 17 01 01 01
col  5: [ 2]  c2 0e
col  6: *NULL*
col  7: [ 2]  c1 0b
=================================rowdata =================================
end_of_block_dump
End dump data blocks tsn: 4 file#: 4 minblk 151 maxblk 151
​
​

2.1.4 数据格式转换

将字符或数值转换成裸数据(raw)十六进制格式:
select dump('SMITH','16') from dual;
​
DUMP('SMITH','16')
----------------------------
Typ=96 Len=5: 53,4d,49,54,48
​
​
select dump(7369,'16') from dual;
​
DUMP(7369,'16')
---------------------
Typ=2 Len=3: c2,4a,46
​
将裸数据(raw)十六进制转换成字符或数值格式:
select UTL_RAW.CAST_TO_VARCHAR2(replace('53 4d 49 54 48',' ')) as "char" from dual;
​
char
--------------------
SMITH
​
​
select UTL_RAW.CAST_TO_NUMBER(replace('c2 4a 46',' ')) as "number" from dual;
​
    number
----------
      7369
​

2.1.5 数据块地址(DBA,Data Block Address)

A Data Block Address (DBA) is the address of an Oracle data block for access purposes. 数据块地址是数据块用来被访问的地址。

2.1.5.1 确定某一行数据所在数据块地址
⑴、查询相对文件号(REL_FNO)和块号(BLOCKNO)信息
SELECT
dbms_rowid.rowid_object(rowid) DATA_OBJECT_ID,
dbms_rowid.rowid_relative_fno(rowid) REL_FNO,
dbms_rowid.rowid_block_number(rowid) BLOCKNO,
dbms_rowid.rowid_row_number(rowid) ROWNO,
empno, ename
FROM scott.emp WHERE empno = 7369;
​
DATA_OBJECT_ID    REL_FNO    BLOCKNO      ROWNO      EMPNO ENAME
-------------- ---------- ---------- ---------- ---------- ----------
         87108          4        151          0       7369 SMITH
⑵、将文件和块编号转换为 DBA 地址

(将相对文件号和块号转换成数据块地址,使用dbms_utility.make_data_block_address)

select dbms_utility.make_data_block_address(4,152) Data_Block_Address from dual;
​
DATA_BLOCK_ADDRESS
------------------
          16777368
2.1.5.2 将数据块地址(DBA)转换成相对文件号和块号

(使用dbms_utility.data_block_address_file、dbms_utility.data_block_address_block)

SELECT dbms_utility.data_block_address_file(16777368) "REL_FNO",dbms_utility.data_block_address_block(16777368) "BLOCKNO" FROM dual;
​
   REL_FNO    BLOCKNO
---------- ----------
         4        152

2.1.6 相对数据块地址(RDBA,Tablespace relative database block address)

2.1.6.1 rowid

rowid的定义:

数据库中某行的全局唯一地址。Oracle Database 使用 rowid 来唯一标识行。在内部,rowid 是一种结构,用于保存数据库访问行所需的信息。 rowid 分为extended rowid 和 restricted rowied.

Restricted ROWID

在内部,ROWID 是一种结构,用于保存数据库服务器访问行所需的信息。在大多数平台上,受限制的内部 ROWID 为 6 个字节。

Each restricted rowid includes the following data:

       (1)Datafile identifier
       (2)Block identifier
       (3)Row identifier

受限制的 ROWID 伪列以 18 个字符的字符串的形式返回给客户端应用程序,该字符串对 ROWID 的数据块、行和数据文件组件进行十六进制编码。

Extended ROWID

扩展的 ROWID 数据类型包括受限制的 rowid 中的数据以及数据对象编号。数据对象编号是分配给每个数据库段的标识号。在大多数平台上,扩展的内部 ROWID 为 10 个字节。

扩展 ROWID 伪列中的数据以 18 个字符的字符串(例如,“AAAA8mAALAAAAQkAAA”)的形式返回到客户端应用程序,该字符串表示扩展 ROWID 组件的以 64 为基数的编码,采用四件式格式 OOOOOOFFFBBBBBRRRR。 扩展的 rowid 不能直接使用。您可以使用提供的包 DBMS_ROWID 来解释扩展的 rowid 内容。 包函数提取并提供可直接从受限制的 rowid 获得的信息,以及特定于扩展 rowid 的信息。

查询 ROWID 伪列以显示员工 7521 的 employees 表中行的扩展 rowid。

SELECT
rowid,
dbms_rowid.rowid_relative_fno(rowid) REL_FNO,
dbms_rowid.rowid_block_number(rowid) BLOCKNO,
dbms_rowid.rowid_row_number(rowid) ROWNO,
empno, ename
FROM scott.emp WHERE empno = 7521;
​
ROWID                 REL_FNO    BLOCKNO      ROWNO      EMPNO ENAME
​
------------------ ---------- ---------- ---------- ---------- ----------
​
AAANc3AAEAAAAAeAAC          4         30          2       7521 WARD

扩展的 rowid 以四件式格式 OOOOOOFFFBBBBBBRRR 显示,该格式分为以下部分:

(1)OOOOOO(数据对象号data object number:AAANc3) 数据对象编号标识段 。为每个数据库段分配一个数据对象编号。 同一段中的架构对象(如表集群)具有相同的数据对象编号。

(2)FFF(相对文件号relative file number:AAE) 相对于表空间的数据文件编号标识,包含该行的数据文件 (file AAF in Example 12-1).

(3)BBBBBB(数据块号data block number:AAAAAe) 数据块号标识,包含该行的块(block AAAABS in Example 12-1). 块号相对于其数据文件,而不是其表空间。 因此,具有相同块号的两行可以驻留在同一个表空间的不同数据文件中。

(4)RRR(行号row number:AAC) 行号标识,该块中的行(row AAA in Example 12-1).

rowid 说明 rowid是伪列(pseudocolumn),伪列的意思是实际上这一列本身在数据字典中并不存在,在查询结果输出时它被构造出来的。 rowid并不会真正存在于表的data block中,但是他会存在于index当中,用来通过rowid来寻找表中的行数据。

ROWID 格式 扩展的ROWID 在磁盘上需要10 个字节的存储空间,并使用18 个字符来显示。

它包含下列组成元素: 1. 数据对象编号:每个数据对象(如表或索引)在创建时都分配有此编号,并且此编号在数据库中是唯一的 2. 相关文件编号:此编号对于表空间中的每个数据文件是唯一的 3. 块编号:表示包含此行的块在数据文件中的位置 4. 行编号:标识块头中行目录位置的位置

在内部,存储的10个字节(bytes),即80位(bit)又按如下规则进行划分: (1)数据对象编号需要32 bit (2)相关文件编号需要10 bit (3)块编号需要22 bit (4)行编号需要16 bit

在oracle 8以后, rowid的存储空间扩大到了10个字节(32bit object#+10bit rfile#+22bit block#+16bit row#),文件号仍然用10位表示,只是不再需要置换,为了向后兼容,同时引入了相对文件号(rfile#),所以从Oracle7到Oracle8,Rowid仍然无需发生变化.

Rdba(Tablespace relative database block address)就是rowid中的rfile#+block#.

rowid这样改变之后,数据库中数据库文件个数的限制从整个数据库最多只能有的2^10-2=1022个数据文件(去掉全0和全1), 变为了每个表空间中可以最多有2^10-2个数据文件。 所以说,数据库能支持的数据文件最大数是受rowid的长度限制的。

可以通过dbms_rowid这个包来转换我们的rowid成不同组成部分:

dbms_rowid.rowid_object(rowid)---> 32bit object#
dbms_rowid.rowid_relative_fno(rowid)---> 10bit rfile#
dbms_rowid.rowid_block_number(rowid)---> 22bit block#
dbms_rowid.rowid_row_number(rowid)---> 16bit row#

2.1.6.2 将数据块地址转换成相对文件号和块号

数据块转储内容:

Start dump data blocks tsn: 4 file#:4 minblk 151 maxblk 151
Block dump from cache:
Dump of buffer cache at level 4 for tsn=4 rdba=16777367
BH (0x000007FF037D7AE8) file#: 4 rdba: 0x01000097 (4/151) class: 1 ba: 0x000007FF0342E000
  set: 9 pool: 3 bsz: 8192 bsi: 0 sflg: 2 pwc: 18,19
  dbwrid: 0 obj: 86893 objn: 86893 tsn: 4 afn: 4 hint: f
  hash: [0x000007FF037D8428,0x000007FF0FD6C7D0] lru: [0x000007FF037D7D10,0x000007FF037D7968]
  ckptq: [NULL] fileq: [NULL] objq: [0x000007FF037D85C0,0x000007FF0044B050] objaq: [0x000007FF037D85D0,0x000007FF0044B040]
  st: XCURRENT md: NULL fpin: 'kdswh11: kdst_fetch' tch: 3
  flags: block_written_once redo_since_read
  LRBA: [0x0.0.0] LSCN: [0x0.0] HSCN: [0xffff.ffffffff] HSUB: [1]
BH (0x000007FF037D8370) file#: 4 rdba: 0x01000097 (4/151) class: 1 ba: 0x000007FF0343C000
  set: 9 pool: 3 bsz: 8192 bsi: 0 sflg: 2 pwc: 18,19
  dbwrid: 0 obj: 86893 objn: 86893 tsn: 4 afn: 4 hint: f
  hash: [0x000007FF0A7F9788,0x000007FF037D7BA0] lru: [0x000007FF037D7F80,0x000007FF037D8940]
  lru-flags: moved_to_tail
  ckptq: [NULL] fileq: [NULL] objq: [NULL] objaq: [NULL]
  st: CR md: NULL fpin: 'kdswh11: kdst_fetch' tch: 1
  cr: [scn: 0x0.ebe6e],[xid: 0x0.0.0],[uba: 0x0.0.0],[cls: 0x0.ebe6e],[sfl: 0x0],[lc: 0x0.d9f55]
  flags: only_sequential_access
Block dump from disk:
buffer tsn: 4 rdba: 0x01000097 (4/151)    ----**相对数据块地址0x01000097**
scn: 0x0000.000ebe73 seq: 0x02 flg: 0x06 tail: 0xbe730602
frmt: 0x02 chkval: 0xaf1f type: 0x06=trans data
Hex dump of block: st=0, typ_found=1

SELECT DBMS_UTILITY.data_block_address_file (TO_NUMBER (LTRIM ('0x01000097', '0x'), 'xxxxxxxx')) AS REL_FNO,DBMS_UTILITY.data_block_address_block (TO_NUMBER (LTRIM ('0x01000097', '0x'), 'xxxxxxxx')) AS BLOCKNO FROM DUAL;
​
   REL_FNO    BLOCKNO
---------- ----------
      4        151

2.2 数据块校验参数

db_block_checksum db_block_checking

2.3 数据恢复原理

2.3.1 实例恢复

需要实例恢复的判断

实例启动时,数据库打开前(mount)v$datafile last_change#为空(即controlfile DATA FILE RECORDS Stop scn: 0xffff.ffffffff)

select file#,checkpoint_change#,last_change# from v$datafile;
​
实例恢复本质

恢复内存buffer cache中提交和未提交的脏块

实例恢复原理

从控制文件中找到恢复起始点rba(检查点进度记录CHECKPOINT PROGRESS RECORDS:low cache rba:(0x1b.ea8.0)),到redo中读取恢复起始点rba至最新的所有redo。

控制文件检查点进度记录CHECKPOINT PROGRESS RECORDS:low cache rba平常为空值,当实例非一致性关闭后,启动到mount时,查看low cache rba此时有值,记录含义为检查点当前位置。从此位置到落盘的最新redo之间的rba记录都需要在实例恢复时恢复到buffer cache。

根据fast_startup_mttr_target配置,ckpt维护检查点队列:保证按数据块变脏的顺序写脏块。

所有数据块(包含undo块)修改与redo对应的,只要修改就产生redo。

数据块修改前需获得检查点队列latch。同一个数据块修改多次还未写盘前,检查点队列中只排队一次,使用第一次更改时的rba记录(low rba)。(high rba是最后一次更改)

rba格式:日志序号(logseq).块号.偏移量

控制文件检查点进度记录
***************************************************************************
CHECKPOINT PROGRESS RECORDS
***************************************************************************
 (size = 8180, compat size = 8180, section max = 11, section in-use = 0,
  last-recid= 0, old-recno = 0, last-recno = 0)
 (extent = 1, blkno = 2, numrecs = 11)
THREAD #1 - status:0x2 flags:0x0 dirty:13
low cache rba:(0x1b.ea8.0) on disk rba:(0x1b.eba.0)      ##实例恢复起点rba和终点rba
on disk scn: 0x0000.00b50f17 02/25/2024 16:45:15
resetlogs scn: 0x0000.001554ab 01/19/2024 21:51:40
heartbeat: 1161846856 mount id: 1689607865

实例恢复过程alert日志
++++++++++++++++++++++++
Sun Feb 25 16:58:40 2024
alter database open
Block change tracking file is current.
Beginning crash recovery of 1 threads                      ##实例恢复开始
 parallel recovery started with 2 processes
Started redo scan                                          ##扫描redo      
Completed redo scan
 read 9 KB redo, 13 data blocks need recovery              ##确认需恢复的数据块数量         
Started redo application at                                ##应用redo开始       
 Thread 1: logseq 27, block 3752            ##恢复起点rba,控制文件检查点进度记录:low cache rba
Recovery of Online Redo Log: Thread 1 Group 3 Seq 27 Reading mem 0
  Mem# 0: /oracle/oradata/orcl/redo03.log
Completed redo application of 0.01MB                       ####应用redo完成
Completed crash recovery at
 Thread 1: logseq 27, block 3770, scn 11885879  ##恢复终点rba,控制文件检查点进度记录:on disk rba
 13 data blocks read, 13 data blocks written, 9 redo k-bytes read    ##实例恢复完成
Sun Feb 25 16:58:40 2024
LGWR: STARTING ARCH PROCESSES
Sun Feb 25 16:58:40 2024
ARC0 started with pid=22, OS id=69694 
ARC0: Archival started
LGWR: STARTING ARCH PROCESSES COMPLETE
ARC0: STARTING ARCH PROCESSES
Thread 1 advanced to log sequence 28 (thread open)
Sun Feb 25 16:58:41 2024
ARC1 started with pid=23, OS id=69697 
Thread 1 opened at log sequence 28
  Current log# 1 seq# 28 mem# 0: /oracle/oradata/orcl/redo01.log
Successful open of redo thread 1
MTTR advisory is disabled because FAST_START_MTTR_TARGET is not set
Sun Feb 25 16:58:41 2024
ARC2 started with pid=24, OS id=69699 
Starting background process CTWR
Sun Feb 25 16:58:41 2024
CTWR started with pid=25, OS id=69701 
Block change tracking service is active.
Sun Feb 25 16:58:41 2024
SMON: enabling cache recovery
Sun Feb 25 16:58:41 2024
ARC3 started with pid=26, OS id=69703 
ARC1: Archival started
ARC2: Archival started
ARC1: Becoming the 'no FAL' ARCH
ARC1: Becoming the 'no SRL' ARCH
ARC2: Becoming the heartbeat ARCH
Archived Log entry 79 added for thread 1 sequence 27 ID 0x6485fdb7 dest 1:
[69019] Successfully onlined Undo Tablespace 9.
Undo initialization finished serial:0 start:74469334 end:74469394 diff:60 (0 seconds)
Verifying file header compatibility for 11g tablespace encryption..
Verifying 11g file header compatibility for tablespace encryption completed
SMON: enabling tx recovery
Database Characterset is ZHS16GBK
No Resource Manager plan active
replication_dependency_tracking turned off (no async multimaster replication found)
Starting background process QMNC
Sun Feb 25 16:58:42 2024
QMNC started with pid=27, OS id=69705 
Completed: alter database open
ARC3: Archival started
ARC0: STARTING ARCH PROCESSES COMPLETE
Sun Feb 25 16:58:43 2024
Starting background process CJQ0
Sun Feb 25 16:58:43 2024
CJQ0 started with pid=29, OS id=69718 
Setting Resource Manager plan SCHEDULER[0x32DF]:DEFAULT_MAINTENANCE_PLAN via scheduler window
Setting Resource Manager plan DEFAULT_MAINTENANCE_PLAN via parameter
Sun Feb 25 16:58:46 2024
Starting background process VKRM
Sun Feb 25 16:58:46 2024
VKRM started with pid=28, OS id=69722 

控制文件头dump主要条目解析
Db ID
Db Name
DATABASE ENTRY:##数据库检查点SCN  ##控制文件检查点SCN
CHECKPOINT PROGRESS RECORDS:low cache rba:(0xffffffff.ffffffff.ffff) on disk rba:(0x12.23d3.0)
REDO THREAD RECORDS:Checkpointed at scn:  0x0000.001120b0  thread:1 rba:(0x12.2.10)
LOG FILE RECORDS: Low scn: 0x0000.001120b0  Next scn: 0xffff.ffffffff
DATA FILE RECORDS:Checkpoint cnt:510 scn: 0x0000.001120b0  Stop scn: 0xffff.ffffffff
RMAN CONFIGURATION RECORDS
RESTORE POINT RECORDS
LOG FILE HISTORY RECORDS
ARCHIVED LOG RECORDS:Earliest record    Latest record
BACKUP SET RECORDS
BACKUP PIECE RECORDS
BACKUP DATAFILE RECORDS
BACKUP LOG RECORDS
DATAFILE COPY RECORDS
​

select group#,thread#,sequence#,first_change#,next_change#,status from v$log;

2.3.2 介质恢复

判断是否需要介质恢复

v$datafile_header(数据文件头)中的此数据文件的checkpoint_change#与v$datafile(控制文件)中的此数据文件的checkpoint_change#是否一样

select file#,checkpoint_change# from v$datafile;
select file#,checkpoint_change# from v$datafile_header;
​
确定从哪里开始恢复

数据文件头记载的此数据文件的介质恢复起点rba。

v$database中checkpoint_change#的作用

用来确认控制文件是否是旧的。与v$datafile_header(数据文件头)中的heckpoint_change#比对。

若控制文件是旧的,恢复数据库时需使用using backup controlfile选项,恢复后打开数据库时需使用resetlogs选项。

为避免使用resetlogs方式打开,可在还原控制文件后,生成控制文件trace文本,然后据此重新创建控制文件(采用noresetlogs方式)。然后正常recover database后,正常打开即可。

2.4、BBED常用命令

2.4.1 几个常用命令

set 设定当前的环境 show 查看当前的环境参数,跟sqlplus的同名命令类似。

map显示数据块的结构名及偏移量。map显示一级结构,map /v显示内容包含二级结构

print显示某个结构下所有子结构或元素的偏移量及值

examine 格式化输出显示块中的行数据值

dump 列出指定block的内容 find 在指定的block中查找指定的字符串,结果是显示出字符串,及其偏移量-offset,偏移量就是在block中的字节数,并将当前偏移量指针指向偏移量位置。 modify 修改指定block的指定偏移量的值,可以在线修改。 copy 把一个block的内容copy到另一个block中 verify 检查当前环境是否有坏块 sum 计算block的checksum,modify之后block就被标识为坏块,current checksum与reqired checksum不一致。sum命令可以计算出新的checksum,若需计算出新的checksum并应用到当前块,则执行sum apply。 undo 回滚当前的修改操作,如果手误做错了,undo一下就ok了,回到原来的状态。 revert 回滚所有之前的修改操作,意思就是 undo all

2.4.2 set

2.4.2.1 set dba

查询DATA_OBJECT_ID,REL_FNO,BLOCKNO,ROWNO信息:

SELECT
dbms_rowid.rowid_object(rowid) DATA_OBJECT_ID,
dbms_rowid.rowid_relative_fno(rowid) REL_FNO,
dbms_rowid.rowid_block_number(rowid) BLOCKNO,
dbms_rowid.rowid_row_number(rowid) ROWNO,
empno, ename
FROM scott.emp WHERE empno = 7369;
​
DATA_OBJECT_ID    REL_FNO    BLOCKNO      ROWNO      EMPNO ENAME
​
-------------- ---------- ---------- ---------- ---------- ----------
​
         86893          4        151          0       7369 SMITH

设置file 4,block 151

##特别注意:

在windows系统上,上面查询出块号为151号,但实际上是从0号块开始(windows特有)数到151号块,因此实际用bbed进行dump时要dump第152号块!!!即,在windows上,用bbed进行dump时,标识块时指的是从头数第xxx块,而不是块编号!!!(在linux系统上无此问题,查询是151号块就dump151号块即可!)

BBED> set dba 4,151
​
            DBA             0x01000097 (16777367 4,151)

如果设置成功,会返回该block的RDBA (Relative Data Block Address),即0x01000097,rdba就是rowid中的rfile#+block#。括号里面的是DBA值 和 file id和block。

2.4.2.2 set filename

将当前文件设置为指定的文件。它必须是有效的 Oracle 数据文件,并且必须用单引号括起来。如果文件不在当前路径中,则它也必须是完全限定的。如果成功,bbed 将响应,显示正在访问的文件。

BBED> set filename 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\LVS\USERS01.DBF'
​
        FILENAME        D:\ORACLE\PRODUCT\10.2.0\ORADATA\LVS\USERS01.DBF
2.4.2.3 set file
BBED> set file 4
        FILE#           4

注意这里的number,是我们之前配置的filelist里的number。

2.4.2.4 set block

设置当前块。该块相对于已设置的文件名或文件。 可以指定绝对块,也可以使用加号 (+) 或 (-) 符号指定当前块的偏移量。 如果成功,bbed 将响应并显示当前块。 注意这里的block是一个相对的位置,我们需要先指定一个file,然后在指定block。 即对应file里的block。可以对当前block的位置进行+和-操作。

BBED> set block 30
        BLOCK#          30
BBED> set block +10
        BLOCK#          40
BBED> set block -10
        BLOCK#          30
2.4.2.5 set offset

偏移量是相对block顶部的偏移量,可以用+和-进行操作

BBED> set offset 20
        OFFSET          20
BBED> set offset +2
        OFFSET          22
BBED> set offset -2
        OFFSET          20
2.4.2.6 set blocksize

设置当前datafile 的blocksize 大小,该大小必须和datafile 的实际block 匹配,否则会报错。

BBED> set blocksize 8192
        BLOCKSIZE       8192
2.4.2.7 set listfile

在前面讲过,可以通过parameter file 来指定bbed的属性,当然也可以通过set 来指定这些信息。对于listfile的文件,必须用单引号括起来。

BBED> set listfile 'd:\bbed\filelist.txt'
        LISTFILE        d:\bbed\filelist.txt
2.4.2.8 set width

设定当前屏幕的宽度,默认是80.

BBED> set width 65
        WIDTH           80
2.4.2.9 set count

设置dump 命令显示bytes的数量。默认是512 bytes。通常设置为128比较适合。

BBED> set count 128
        COUNT           128
2.4.2.10 set ibase

设置内部的数字格式,默认是十进制。 也可以设置为十六进制或者八进制。设置完数字格式之后,可是使用该格式来设置blcok,offset等。

BBED> show ibase
        IBASE           Dec
BBED> set ibase hex
        IBASE           Hex
BBED> set block +D
        BLOCK#          14
BBED> set ibase decimal
        IBASE           Dec
2.4.2.11 set obase

The purpose of this command is unknown.

2.4.2.12 set mode

设置bbed 的浏览或编辑模式,有2种:browse 和 edit。 browse 模式不允许进行修改。 如果要修改,就选择edit模式。 这个在我们的之前的配置文件里,我们选择了edit。

BBED> show mode
        MODE            Edit
BBED> set mode browse
        MODE            Browse
BBED> set mode edit
        MODE            Edit
2.4.2.13 spool & logfile

logfile选项:指定命令及结果输出的日志。 spool选项:可选项为:yes或no 。默认为no。选择是否将操作的全部命令结果输出到LOGFILE指定的日志文件中,默认只输出命令本身而没有命令结果。

注意:经实际验证,此spool选项以及logfile选项只能在parameter file中指定,不能使用set命令设置!!!

2.4.3 show

显示当前的配置选项。

BBED> show
        FILE#           1
        BLOCK#          14
        OFFSET          0
        DBA             0x0040000e (4194318 1,14)
        FILENAME        D:\ORACLE\PRODUCT\10.2.0\ORADATA\LVS\SYSTEM01.DBF
        BIFILE          bifile.bbd
        LISTFILE        d:\bbed\filelist.txt
        BLOCKSIZE       8192
        MODE            Edit
        EDIT            Unrecoverable
        IBASE           Dec
        OBASE           Dec
        WIDTH           80
        COUNT           512
        LOGFILE         bbed.log
        SPOOL           Yes

也可单独看某个选项的值:

BBED> show dba offset
        DBA             0x00400001 (4194305 1,1)
        OFFSET          140
BBED> show count
        COUNT           32

2.4.4 info

显示当前可以进行browse 或者edit 的file。即我们filelist 里指定的datafile信息。

BBED> info
​
 File#  Name                                                        Size(blks)
-----  ----                                                        ----------
     1  D:\APP\LVS\ORADATA\LVS\SYSTEM01.DBF                              94720
     2  D:\APP\LVS\ORADATA\LVS\SYSAUX01.DBF                              62720
     3  D:\APP\LVS\ORADATA\LVS\UNDOTBS01.DBF                              8960
     4  D:\APP\LVS\ORADATA\LVS\USERS01.DBF                                 640

若一行不能完整显示,设置一下width 参数(set width 80),就ok了

2.4.5 map

Map会通过偏移量来显示数据块的结构信息,如block header,data block header 和row directory。

使用/v 选项,可以查看更详细的信息。 在不指定block的情况下,会显示当前block的信息,如果想显示其他block的信息,可以使用file name,file id,block 和DBA 来指定要显示的block。

BBED> set dba 4,152 offset 0
        DBA             0x01000098 (16777368 4,152)
        OFFSET          0
BBED> map           ##只显示块中的各个结构(Structure)信息
 File: D:\APP\LVS\ORADATA\LVS\USERS01.DBF (4)
​
 Block: 152                                   Dba:0x01000098
------------------------------------------------------------
​
 KTB Data Block (Table/Cluster)
​
 struct kcbh, 20 bytes                      @0
​
 struct ktbbh, 72 bytes                     @20
​
 struct kdbh, 14 bytes                      @100
​
 struct kdbt[1], 4 bytes                    @114
​
 sb2 kdbr[14]                               @118
​
 ub1 freespace[7475]                        @146
​
 ub1 rowdata[567]                           @7621
​
 ub4 tailchk                                @8188
​
​
这个是默认情况,@后面代表的对应的信息在block里的偏移量,即offset。
​
BBED> map /v dba 4,152   (通过dba 来指定某个block)       ##不仅显示块中的各个结构(Structure)信息,而且每个结构中的元素(Element)信息也显示出来。(每项内容解释见注释)
​
 File: D:\APP\LVS\ORADATA\LVS\USERS01.DBF (4)
​
 Block: 152                                   Dba:0x01000098
------------------------------------------------------------
​
 KTB Data Block (Table/Cluster)
(结构及元素Structure/Element)  (在块中的偏移量offset)    (结构或元素的含义)
 struct kcbh, 20 bytes                 @0        ##解释 Block Header Structure(块头结构)        查看:p kcbh 或 dump /v dba 4,152 offset 0 count 20
    ub1 type_kcbh                      @0        ##解释 Block type (see “Header Block Types” below)        查看:p type_kcbh 或 dump /v dba 4,152 offset 0 count 1  值为:0x06
    ub1 frmt_kcbh                      @1        ##解释 Block format 1=Oracle 7, 2=Oracle 8+        查看:p frmt_kcbh 或 dump /v dba 4,152 offset 1 count 1  值为:0xa2
    ub1 spare1_kcbh                    @2        ##解释 Not used        查看:p spare1_kcbh 或 dump /v dba 4,152 offset 2 count 1  值为:0x00
    ub1 spare2_kcbh                    @3        ##解释 Not used        查看:p spare2_kcbh 或 dump /v dba 4,152 offset 3 count 1  值为:0x00
    ub4 rdba_kcbh                      @4        ##解释 RDBA -Relative Data Block Address        查看:p rdba_kcbh 或 dump /v dba 4,152 offset 4 count 4  值为:0x000ebe73
    ub4 bas_kcbh                       @8        ##解释 SCN Base        查看:p bas_kcbh 或 dump /v dba 4,152 offset 8 count 4  值为:f0024400
    ub2 wrp_kcbh                       @12       ##解释 SCN Wrap        查看:p wrp_kcbh 或 dump /v dba 4,152 offset 12 count 2  值为:0x0000
    ub1 seq_kcbh                       @14       ##解释 Sequence number, incremented for every change made to the block at the same SCN        查看:p seq_kcbh 或 dump /v dba 4,152 offset 14 count 1  值为:0x02
    ub1 flg_kcbh                       @15       ##解释 Flag:0x01 New Block ;0x02 Delayed Logging Change advanced SCN/seq ;0x04 Check value saved - block XOR‘s to zero ;0x08 Temporary block ;        查看:p flg_kcbh 或 dump /v dba 4,152 offset 15 count 1  值为:0x06 (KCBHFDLC, KCBHFCKV)
    ub2 chkval_kcbh                    @16       ##解释 Optional block checksum (if DB_BLOCK_CHECKSUM=TRUE)        查看:pchkval_kcbh 或 dump /v dba 4,152 offset 16 count 2  值为:0xaf1f
    ub2 spare3_kcbh                    @18       ##解释 Not used        查看:p spare3_kcbh 或 dump /v dba 4,152 offset 18 count 2  值为:0x0000
​
 struct ktbbh, 72 bytes                @20       ##解释 Transaction Fixed Header Structure(事务表块头结构)        查看:p ktbbh 或 dump /v dba 4,152 offset 20 count 72
    ub1 ktbbhtyp                       @20       ##解释 Block type (1=DATA, 2=INDEX)        查看:p ktbbhtyp 或 dump /v dba 4,152 offset 20 count 4  值为:0x01 (KDDBTDATA)
    union ktbbhsid, 4 bytes            @24       ##解释 Segment/Object ID        查看:p ktbbhsid 或 dump /v dba 4,152 offset 24 count 4  值为:0x0001536d    进而查询对象名:select owner,object_name,object_type from dba_objects where data_object_id=(select to_number('0001536d','XXXXXXXX') from dual);  ##特别注意bbed dump显示为6d530100,但查询对象名时要用'0001536d'查询!!!理解为:bbed dump中,左边为低位值,右边为高位值!此值在dump trace文件中就看得很清楚。
    struct ktbbhcsc, 8 bytes           @28       ##解释 SCN at last block clean out        查看:p ktbbhcsc 或 dump /v dba 4,152 offset 28 count 8  值为:0x000ebe6f 0x0000
    b2 ktbbhict                        @36       ##解释 Number of ITL slots        查看:p ktbbhict 或 dump /v dba 4,152 offset 36 count 2  值为:2
    ub1 ktbbhflg                       @38       ##解释 0=on the freelist        查看:p ktbbhflg 或 dump /v dba 4,152 offset 38 count 1  值为:0x32 (NONE)
    ub1 ktbbhfsl                       @39       ##解释 ITL TX freelist slot        查看:p ktbbhfsl 或 dump /v dba 4,152 offset 39 count 1  值为:0x00
    ub4 ktbbhfnx                       @40       ##解释 DBA of next block on the freelist        查看:p ktbbhfnx 或 dump /v dba 4,152 offset 40 count 4  值为:0x01000090
    struct ktbbhitl[2], 48 bytes       @44       ##解释 ITL list index        查看:p ktbbhitl 或 dump /v dba 4,152 offset 44 count 48
​
 struct kdbh, 14 bytes                 @100      ##解释 Data Header Structure(数据块头结构)        查看:p kdbh 或 dump /v dba 4,152 offset 100 count 14
    ub1 kdbhflag                       @100      ##解释 N=pctfree hit(clusters); F=do not put on freelist; K=flushable cluster keys        查看:p kdbhflag 或 dump /v dba 4,152 offset 100 count 1  值为:0x00 (NONE)
    b1 kdbhntab                        @101      ##解释 Number of tables (>1 in clusters)        查看:p kdbhntab 或 dump /v dba 4,152 offset 101 count 1  值为:1
    b2 kdbhnrow                        @102      ##解释 Number of rows        查看:p kdbhnrow 或 dump /v dba 4,152 offset 102 count 2  值为:14
    sb2 kdbhfrre                       @104      ##解释 First free row entry index; -1 = you have to add one        查看:p kdbhfrre 或 dump /v dba 4,152 offset 104 count 2  值为:-1
    sb2 kdbhfsbo                       @106      ##解释 Freespace begin offset        查看:p kdbhfsbo 或 dump /v dba 4,152 offset 106 count 2  值为:46
    sb2 kdbhfseo                       @108      ##解释 Freespace end offset        查看:p kdbhfseo 或 dump /v dba 4,152 offset 108 count 2  值为:7521
    b2 kdbhavsp                        @110      ##解释 Available space in the block        查看:p kdbhavsp 或 dump /v dba 4,152 offset 110 count 2  值为:7475
    b2 kdbhtosp                        @112      ##解释 Total available space when all TXs commit        查看:p kdbhtosp 或 dump /v dba 4,152 offset 112 count 2  值为:7475
​
 struct kdbt[1], 4 bytes               @114      ##解释 Table Directory Entry Structure(表目录结构)        查看:p kdbt 或 dump /v dba 4,152 offset 114 count 3  值为:000000
    b2 kdbtoffs                        @114      ##解释        查看:p kdbtoffs 或 dump /v dba 4,152 offset 114 count 2  值为:0
    b2 kdbtnrow                        @116      ##解释        查看:p kdbtnrow 或 dump /v dba 4,152 offset 116 count 1  值为:14
​
 sb2 kdbr[14]                          @118      ##解释 Row Directory(行目录)        查看:p kdbr
​
 ub1 freespace[7475]                   @146      ##解释 Free Space(空闲空间)        查看:p freespace
​
 ub1 rowdata[567]                      @7621     ##解释 Row Data(行数据)        查看:p rowdata
​
 ub4 tailchk                           @8188     ##解释 (See Tailchecks below)(块尾检查)        查看:p tailchk 或 dump /v dba 4,152 offset 8188    值为:0xbe730602
​
​
BBED> p kcbh
struct kcbh, 20 bytes                       @0
   ub1 type_kcbh                            @0        0x06
   ub1 frmt_kcbh                            @1        0xa2
   ub1 spare1_kcbh                          @2        0x00
   ub1 spare2_kcbh                          @3        0x00
   ub4 rdba_kcbh                            @4        0x01000097
   ub4 bas_kcbh                             @8        0x000ebe73
   ub2 wrp_kcbh                             @12       0x0000
   ub1 seq_kcbh                             @14       0x02
   ub1 flg_kcbh                             @15       0x06 (KCBHFDLC, KCBHFCKV)
   ub2 chkval_kcbh                          @16       0xaf1f
   ub2 spare3_kcbh                          @18       0x0000
​
BBED> p type_kcbh
ub1 type_kcbh                               @0        0x06
​
BBED> p ktbbh
struct ktbbh, 72 bytes                      @20
   ub1 ktbbhtyp                             @20       0x01 (KDDBTDATA)
   union ktbbhsid, 4 bytes                  @24
      ub4 ktbbhsg1                          @24       0x0001536d
      ub4 ktbbhod1                          @24       0x0001536d
   struct ktbbhcsc, 8 bytes                 @28
      ub4 kscnbas                           @28       0x000ebe6f
      ub2 kscnwrp                           @32       0x0000
   b2 ktbbhict                              @36       2
   ub1 ktbbhflg                             @38       0x32 (NONE)
   ub1 ktbbhfsl                             @39       0x00
   ub4 ktbbhfnx                             @40       0x01000090
   struct ktbbhitl[0], 24 bytes             @44
      struct ktbitxid, 8 bytes              @44
         ub2 kxidusn                        @44       0x0007
         ub2 kxidslt                        @46       0x000f
         ub4 kxidsqn                        @48       0x00000285
      struct ktbituba, 8 bytes              @52
         ub4 kubadba                        @52       0x00c17bb2
         ub2 kubaseq                        @56       0x0063
         ub1 kubarec                        @58       0x39
      ub2 ktbitflg                          @60       0x8000 (KTBFCOM)
      union _ktbitun, 2 bytes               @62
         b2 _ktbitfsc                       @62       0
         ub2 _ktbitwrp                      @62       0x0000
      ub4 ktbitbas                          @64       0x000d9f55
   struct ktbbhitl[1], 24 bytes             @68
      struct ktbitxid, 8 bytes              @68
         ub2 kxidusn                        @68       0x0004
         ub2 kxidslt                        @70       0x0019
         ub4 kxidsqn                        @72       0x00000298
      struct ktbituba, 8 bytes              @76
         ub4 kubadba                        @76       0x00c002e7
         ub2 kubaseq                        @80       0x0088
         ub1 kubarec                        @82       0x38
      ub2 ktbitflg                          @84       0x2001 (KTBFUPB)
      union _ktbitun, 2 bytes               @86
         b2 _ktbitfsc                       @86       0
         ub2 _ktbitwrp                      @86       0x0000
      ub4 ktbitbas                          @88       0x000ebe73
​
BBED> p kdbh
struct kdbh, 14 bytes                       @100
   ub1 kdbhflag                             @100      0x00 (NONE)
   b1 kdbhntab                              @101      1
   b2 kdbhnrow                              @102      14
   sb2 kdbhfrre                             @104     -1
   sb2 kdbhfsbo                             @106      46
   sb2 kdbhfseo                             @108      7521
   b2 kdbhavsp                              @110      7475
   b2 kdbhtosp                              @112      7475
​
BBED> p kdbt
struct kdbt[0], 4 bytes                     @114
   b2 kdbtoffs                              @114      0
   b2 kdbtnrow                              @116      14
​
BBED> p kdbr                  ##查看共有多少行
sb2 kdbr[0]                                 @118      8050
sb2 kdbr[1]                                 @120      8007
sb2 kdbr[2]                                 @122      7964
sb2 kdbr[3]                                 @124      7923
sb2 kdbr[4]                                 @126      7878
sb2 kdbr[5]                                 @128      7837
sb2 kdbr[6]                                 @130      7796
sb2 kdbr[7]                                 @132      7756
sb2 kdbr[8]                                 @134      7718
sb2 kdbr[9]                                 @136      7675
sb2 kdbr[10]                                @138      7637
sb2 kdbr[11]                                @140      7599
sb2 kdbr[12]                                @142      7560
sb2 kdbr[13]                                @144      7521
​
我们可以使用kdbr[0] 作为一个指针来print 它对应的内容。
这个kdbr[0] 是一个本地的data structure,此时print 需要加*号前缀。
​
BBED> p *kdbr[0]               ##转到某一行的偏移量位置
​
rowdata[529]
------------
​
ub1 rowdata[529]                            @8150     0x2c
​
BBED> show
        FILE#           4
        BLOCK#          152
        OFFSET          8150
        DBA             0x01000098 (16777368 4,152)
        FILENAME        D:\APP\LVS\ORADATA\LVS\USERS01.DBF
        BIFILE          bifile.bbd
        LISTFILE        filelist.txt
        BLOCKSIZE       8192
        MODE            Edit
        EDIT            Unrecoverable
        IBASE           Dec
        OBASE           Dec
        WIDTH           80
        COUNT           128
        LOGFILE         bbed.log
        SPOOL           Yes
​
BBED> dump /v                  ##dump方式查看某一行的内容
 File: D:\APP\LVS\ORADATA\LVS\USERS01.DBF (4)
​
 Block: 152     Offsets: 8150 to 8191  Dba:0x01000098
-------------------------------------------------------
​
 2c000803 c24a4605 534d4954 4805434c l ,...翵F.SMITH.CL
 45524b03 c2500307 77b40c11 01010102 l ERK.翽..w?.....
 c209ff02 c1150206 73be              l ?..?..s?
​
 <16 bytes per line>
​
BBED> x /rnccntnn                 ##格式化查看某一行各列的内容
​
rowdata[529]
------------
​
flag@8150: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@8151: 0x00
cols@8152:    8
​
col    0[3] @8153: 7369
col    1[5] @8157: SMITH
col    2[5] @8163: CLERK
col    3[3] @8169: 翽.
col    4[7] @8173: w?....
col    5[2] @8181: ?
col    6[0] @8184: *NULL*
col    7[2] @8185: ?
​
​
关于tailchk:
​
BBED> set offset 8188
        OFFSET          8188
​
BBED> dump /v
 File: D:\APP\LVS\ORADATA\LVS\USERS01.DBF (4)
​
 Block: 152     Offsets: 8188 to 8191  Dba:0x01000098
-------------------------------------------------------
​
 020673be                            l ..s?                 ##020673be:低位在前,高位在后。
​
 <16 bytes per line>
​
BBED> p tailchk
ub4 tailchk                                 @8188     0xbe730602
​
​
##关于在数据块dump trace中显示的seg/obj以及数据块的bbed dump偏移量24位置为Segment/Object ID,指的都是DATA_OBJECT_ID,不是OBJECT_ID。
union ktbbhsid, 4 bytes           @24       ##解释 Segment/Object ID
​
查看:dump /v dba 4,152 offset 24 count 4  值为:0x0001536d
进而查询对象名:select owner,object_name,object_type from dba_objects where data_object_id=(select to_number('0001536d','XXXXXXXX') from dual);
##特别注意bbed dump显示为6d530100,但查询对象名时要用'0001536d'查询!!!理解为:bbed dump中,左边为低位值,右边为高位值!此值在dump trace文件中就看得很清楚。
​
##OBJECT_ID和DATA_OBJECT_ID的区别:
​
OBJECT_ID和DATA_OBJECT_ID同样是表示数据库对象的唯一标示,但是OBJECT_ID标示的是逻辑id,DATA_OBJECT_ID标示的物理id。
如果一些object不存在物理属性则不会存在DATA_OBJECT_ID,例如FUNCTION,PROCEDURE,PACKAGE,DATA TYPE,DBLINK,MV定义,VIEW定义,临时表定义,分区表定义等等这些object都是没有对应着某个segment,因此它们的DATA_OBJECT_ID都是为null。
​
当表刚刚create的时候,OBJECT_ID和DATA_OBJECT_ID的值是相等的,但是当表进行TRUNCATE和MOVE操作的时候,DATA_OBJECT_ID会发生变化。
如果一张表的DATA_OBJECT_ID的值大于OBJECT_ID说明该表做过TRUNCATE或者MOVE操作。
​
​
##ORACLE十进制与十六进制的转换:
​
十进制-->十六进制
select to_char(86893,'XXXXX') HEX from dual;
​
十六进制-->十进制
select to_number('0001536d','XXXXXXXX') DEC from dual;
​
其中XX为格式,注意XX的位数不能小于传入的参数。
​
或使用windows计算器转换:(程序员模式)
十进制-->十六进制:在“十进制”模式下,粘贴入十进制值,然后再选择为“十六进制”模式,即可显示出此十进制值的十六进制数据。
十六进制-->十进制:在“十六进制”模式下,粘贴入十六进制值,然后再选择为“十进制”模式,即可显示出此十六进制值的十进制数据。
​
​
##根据数据块的bbed dump,偏移量24的值,即DATA_OBJECT_ID来确定对象名及类型:
​
select owner,object_name,object_type from dba_objects where data_object_id=(select to_number('0001536d','XXXXXXXX') from dual);
​
OWNER                          OBJECT_NAME          OBJECT_TYPE
------------------------------ -------------------- -------------------
SCOTT                          EMP                  TABLE
​
select to_number('0001536d','XXXXXXXX') DEC from dual;
​
       DEC
----------
     86893
​
select to_char(86893,'XXXXX') HEX from dual;
​
HEX
------
 1536D
​
select owner,object_name,object_type from dba_objects where data_object_id=86893;
​
OWNER                          OBJECT_NAME          OBJECT_TYPE
------------------------------ -------------------- -------------------
SCOTT                          EMP                  TABLE
​
select object_id,data_object_id from dba_objects where owner='SCOTT' and object_name='EMP';
​
 OBJECT_ID DATA_OBJECT_ID
---------- --------------
     86893          86893
​
select rowid,empno,ename from scott.emp;
​
ROWID                   EMPNO ENAME
------------------ ---------- ----------
AAAVNtAAEAAAACXAAA       7369 SMITH
AAAVNtAAEAAAACXAAB       7499 ALLEN
AAAVNtAAEAAAACXAAC       7521 WARD
AAAVNtAAEAAAACXAAD       7566 JONES
AAAVNtAAEAAAACXAAE       7654 MARTIN
AAAVNtAAEAAAACXAAF       7698 BLAKE
AAAVNtAAEAAAACXAAG       7782 CLARK
AAAVNtAAEAAAACXAAH       7788 SCOTT
AAAVNtAAEAAAACXAAI       7839 KING
AAAVNtAAEAAAACXAAJ       7844 TURNER
AAAVNtAAEAAAACXAAK       7876 ADAMS
​
ROWID                   EMPNO ENAME
------------------ ---------- ----------
AAAVNtAAEAAAACXAAL       7900 JAMES
AAAVNtAAEAAAACXAAM       7902 FORD
AAAVNtAAEAAAACXAAN       7934 MILLER
​
已选择14行。
​
select dbms_rowid.rowid_object(rowid),empno,ename from scott.emp;
​
DBMS_ROWID.ROWID_OBJECT(ROWID)      EMPNO ENAME
------------------------------ ---------- ----------
                         86893       7369 SMITH
                         86893       7499 ALLEN
                         86893       7521 WARD
                         86893       7566 JONES
                         86893       7654 MARTIN
                         86893       7698 BLAKE
                         86893       7782 CLARK
                         86893       7788 SCOTT
                         86893       7839 KING
                         86893       7844 TURNER
                         86893       7876 ADAMS
​
DBMS_ROWID.ROWID_OBJECT(ROWID)      EMPNO ENAME
------------------------------ ---------- ----------
                         86893       7900 JAMES
                         86893       7902 FORD
                         86893       7934 MILLER
​
已选择14行。
​
​
##数据块dump出来的数据格式为裸数据(raw)格式:
如:
block_row_dump:
tab 0, row 0, @0x1d61
tl: 38 fb: --H-FL-- lb: 0x0  cc: 8
col  0: [ 3]  c2 4a 46
col  1: [ 5]  53 4d 49 54 48
col  2: [ 5]  43 4c 45 52 4b
col  3: [ 3]  c2 50 03
col  4: [ 7]  77 b4 0c 11 01 01 01
col  5: [ 2]  c2 09
col  6: *NULL*
col  7: [ 2]  c1 15
​
​
通过block 来map
BBED> map block 152
 File: D:\APP\LVS\ORADATA\LVS\USERS01.DBF (4)
​
 Block: 152                                   Dba:0x01000098
------------------------------------------------------------
​
 KTB Data Block (Table/Cluster)
​
 struct kcbh, 20 bytes                      @0
​
 struct ktbbh, 72 bytes                     @20
​
 struct kdbh, 14 bytes                      @100
​
 struct kdbt[1], 4 bytes                    @114
​
 sb2 kdbr[14]                               @118
​
 ub1 freespace[7475]                        @146
​
 ub1 rowdata[567]                           @7621
​
 ub4 tailchk                                @8188

Header Block Types Different block types are designated by the first byte of the block. The following table shows how to decode the block type: 不同的block 可以第一个byte的值是不一样的。 具体值对应block 类型如下。

ID           Type
1            Undo segment header
2            Undo data block
3            Save undo header
4            Save undo data block
5            Data segment header (temp, index, data and so on)
6            KTB managed data block (with ITL)
7            Temp table data block (no ITL)
8            Sort Key
9            Sort Run
10           Segment free list block
11           Data file header

Tailchecks oracle blocks 的最后4个bytes 是tail check。 下面看一下的tail check 组成。 The tail of an Oracle 8+ block is a concatenation of the lower order two bytes of the SCN base, the block type and the SCN sequence number. Oracle block tail 由4个bytes组成,但实际上只用了低2个bytes来存放。 2个bytes的tail 由scn base,block type 和 scn sequence 组成。

dump trace:

Block dump from disk:
buffer tsn: 4 rdba: 0x01000097 (4/151)
scn: 0x0000.000ebe73 seq: 0x02 flg: 0x06 tail: 0xbe730602               ##块头tailchk:BE730602
frmt: 0x02 chkval: 0xaf1f type: 0x06=trans data
Hex dump of block: st=0, typ_found=1
Dump of memory from 0x000000000D29AA00 to 0x000000000D29CA00
00D29AA00 0000A206 01000097 000EBE73 06020000  [........s.......]
00D29AA10 0000AF1F 00000001 0001536D 000EBE6F  [........mS..o...]
......    ......
00D29C9C0 4DC2034E B5770763 01011402 11C20201  [N..Mc.w.........]
00D29C9D0 0204C202 002C1FC1 4AC20308 4D530546  [......,....JF.SM]
00D29C9E0 05485449 52454C43 50C2034B B4770703  [ITH.CLERK..P..w.]
00D29C9F0 0101110C 09C20201 15C102FF BE730602  [..............s.]        ##块尾为:BE730602

如上dump trace显示, the SCN base number is 0x0000.000ebe73,the block type is 06 and the SCN sequence number is 0x02, the tail check is 0xbe730602。

注意:不同硬件平台,存储tail check机制不同。 Although this tail check value is generated from three components, Oracle treats thefinal value as a single unsigned integer stored as a word (4-bytes). On little-endian architecture machines, which include Intel, the value will bestores as low-order byte first. 虽然tail check 由3个部分组成,但是oracle 把这3部分作为一个整体来存储,并且占用4个bytes。 对于little-endian(低端)架构的机器,包括Intel, 他们会先存放low-order byte,即低位字节。

Therefore if the tail check is examined in the block using a standard block editor, orthe dump command which will be explained in the next section, the byte ordermay look different. A tail check of 0x97280602 stored on an Intel machine wouldbe written to disk as "02062897". 可以通过标准block editor 或者dump 来查看tail check。 对于不同的机器,他们存储的顺序是不一样的。 比如tail check 0x97280602 在Intel Machine 就被存储为02062897,因为它会先保存low-order bytes。

2.4.6 dump(d)

dump命令可以将block 的内容显示到屏幕。每次显示的bytes由count控制,默认是512 bytes。

通常使用 /v 选项,可以显示更多详细信息。

显示某结构单元内的内容时,注意大小端平台区别(字节排列顺序)。x86架构属于小端,高位在右,低位在左。

windows平台输出结果:

BBED> dump /v dba 4,152 offset 0 count 128
##需结合前面的“map /v dba 4,152”内容一起看。map看到的是块结构,print看的是结构和值,dump看的是块内容,examine(x /rncc)看到的是格式化的内容!!!
 File: D:\APP\LVS\ORADATA\LVS\USERS01.DBF (4)
 Block: 152     Offsets:    0 to  127  Dba:0x01000098                           ##Dba:0x01000098
-------------------------------------------------------                         
 06a20000 97000001 73be0e00 00000206 l .?.....s?.....                           ##rDba:0x01000097
 1faf0000 01000000 6d530100 6fbe0e00 l .?.....mS..o?.
 00000000 02003200 90000001 07000f00 l ......2.........
 85020000 b27bc100 63003900 00800000 l ....瞷?c.9.....
 559f0d00 04001900 98020000 e702c000 l U...........??
 88003800 01200000 73be0e00 00000000 l ..8.. ..s?.....
 00000000 00010e00 ffff2e00 611d331d l ............a.3.
 331d0000 0e00721f 471f1c1f f31ec61e l 3.....r.G...??
​
 <16 bytes per line>
​
我们看一下block header 中第一行16个bytes 的架构:
​
Type  Format  Unused  RDBA    SCN Base   SCN Wrap   Seq     Flag
 06    a2    0000    01000097   000ebe73    0000       02      06
 ##windows中,RDBA比DBA少1。即,查询时显示块号为151,但bbed时确认DBA为152。
 ##linux中,RDBA与DBA一致。

而dump trace为:

Block dump from disk:
buffer tsn: 4 rdba: 0x01000097 (4/151)
scn: 0x0000.000ebe73 seq: 0x02 flg: 0x06 tail: 0xbe730602
frmt: 0x02 chkval: 0xaf1f type: 0x06=trans data
Hex dump of block: st=0, typ_found=1
Dump of memory from 0x000000000D29AA00 to 0x000000000D29CA00
00D29AA00 0000A206 01000097 000EBE73 06020000  [........s.......]               ##rDba:0x01000097。这个dump trace的内容与上面block header架构能对上!
00D29AA10 0000AF1F 00000001 0001536D 000EBE6F  [........mS..o...]

linux平台输出结果:

BBED> dump /v dba 4,151 offset 0 count 128
 File: /oracle/oradata/lvs/users01.dbf (4)
 Block: 151     Offsets:    0 to  127  Dba:0x01000097                           ##Dba:0x01000097
-------------------------------------------------------                         ##rDba:0x01000097
 06a20000 97000001 eec61000 00000206 l ................
 0f210000 01000300 44540100 eac61000 l .!......DT......
 0000e81f 021f3200 90000001 08000100 l ......2.........
 ca030000 1004c000 ad001d00 01200000 l ............. ..
 eec61000 08000800 c9030000 0d04c000 l ................
 ad002500 00800000 dac11000 00000000 l ..%.............
 00000000 00010e00 ffff2e00 611d331d l ............a.3.
 331d0000 0e00721f 471f1c1f f31ec61e l 3.....r.G.......
​
 <16 bytes per line>
​
我们看一下block header 中第一行16个bytes 的架构:
​
Type    Format    Unused    RDBA    SCN Base    SCN Wrap    Seq     Flag
06       a2        0000   01000097  0010c6ee      0000       02      06         ##RDBA与DBA一致。

而dump trace为:

Dump of buffer cache at level 4 for tsn=4 rdba=16777367
Block dump from disk:
buffer tsn: 4 rdba: 0x01000097 (4/151)
scn: 0x0000.0010c6ee seq: 0x02 flg: 0x06 tail: 0xc6ee0602
frmt: 0x02 chkval: 0x210f type: 0x06=trans data
Hex dump of block: st=0, typ_found=1
Dump of memory from 0x00007FCB981D6200 to 0x00007FCB981D8200
7FCB981D6200 0000A206 01000097 0010C6EE 06020000  [................]        ##rDba:0x01000097。这个dump trace的内容与上面blockheader架构能对上!
7FCB981D6210 0000210F 00030001 00015444 0010C6EA  [.!......DT......]

  • 13
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值