[20161124]bbed使用问题.txt

[20161124]bbed使用问题.txt

--最近一致在使用bbed探究oracle数据库,遇到一些问题做一些记录。

1.环境:
SCOTT@book> @ &r/ver1

PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

CREATE TABLESPACE SUGAR DATAFILE
  '/mnt/ramdisk/book/sugar01.dbf' SIZE 40M AUTOEXTEND ON NEXT 16M MAXSIZE UNLIMITED
LOGGING
ONLINE
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
BLOCKSIZE 8K
SEGMENT SPACE MANAGEMENT AUTO
FLASHBACK ON;

SCOTT@book> create table t4 tablespace sugar select rownum id ,lpad('A',32,'A') name from dual connect by level<=1e5;
Table created.

SCOTT@book> column PARTITION_NAME noprint
SCOTT@book> select * from dba_extents where owner=user and segment_name='T4';
OWNER  SEGMENT_NAME SEGMENT_TYPE TABLESPACE_NAME  EXTENT_ID    FILE_ID   BLOCK_ID      BYTES     BLOCKS RELATIVE_FNO
------ ------------ ------------ --------------- ---------- ---------- ---------- ---------- ---------- ------------
SCOTT  T4           TABLE        SUGAR                    0          6        128      65536          8            6
SCOTT  T4           TABLE        SUGAR                    1          6        136      65536          8            6
SCOTT  T4           TABLE        SUGAR                    2          6        144      65536          8            6
SCOTT  T4           TABLE        SUGAR                    3          6        152      65536          8            6
SCOTT  T4           TABLE        SUGAR                    4          6        160      65536          8            6
SCOTT  T4           TABLE        SUGAR                    5          6        168      65536          8            6
SCOTT  T4           TABLE        SUGAR                    6          6        176      65536          8            6
SCOTT  T4           TABLE        SUGAR                    7          6        184      65536          8            6
SCOTT  T4           TABLE        SUGAR                    8          6        192      65536          8            6
SCOTT  T4           TABLE        SUGAR                    9          6        200      65536          8            6
SCOTT  T4           TABLE        SUGAR                   10          6        208      65536          8            6
SCOTT  T4           TABLE        SUGAR                   11          6        216      65536          8            6
SCOTT  T4           TABLE        SUGAR                   12          6        224      65536          8            6
SCOTT  T4           TABLE        SUGAR                   13          6        232      65536          8            6
SCOTT  T4           TABLE        SUGAR                   14          6        240      65536          8            6
SCOTT  T4           TABLE        SUGAR                   15          6        248      65536          8            6
SCOTT  T4           TABLE        SUGAR                   16          6        256    1048576        128            6
SCOTT  T4           TABLE        SUGAR                   17          6        384    1048576        128            6
SCOTT  T4           TABLE        SUGAR                   18          6        512    1048576        128            6
SCOTT  T4           TABLE        SUGAR                   19          6        640    1048576        128            6
20 rows selected.

SCOTT@book> select SEGMENT_NAME,HEADER_FILE,HEADER_BLOCK,BYTES,BLOCKS,EXTENTS from dba_segments where owner=user and segment_name='T4';
SEGMENT_NAME         HEADER_FILE HEADER_BLOCK      BYTES     BLOCKS    EXTENTS
-------------------- ----------- ------------ ---------- ---------- ----------
T4                             6          130    5242880        640         20

--从这里看出段头位于130块是PAGETABLE SEGMENT HEADER,而前面的128,129块是1级,2级是FIRST LEVEL BITMAP BLOCK,SECOND LEVEL BITMAP BLOCK。


2.而bbed是无法识别这些块的,当访问这些块时出现如下提示。

BBED> set dba 6,128
        DBA             0x01800080 (25165952 6,128)

BBED> map /v
File: /mnt/ramdisk/book/sugar01.dbf (6)
Block: 128                                   Dba:0x01800080
------------------------------------------------------------
BBED-00400: invalid blocktype (32)

SCOTT@book> select rowid,t4.id from t4 where id=1;
ROWID                      ID
------------------ ----------
AAAVwFAAGAAAACDAAA          1

SCOTT@book> @ &r/rowid AAAVwFAAGAAAACDAAA
    OBJECT       FILE      BLOCK        ROW ROWID_DBA            DBA                  TEXT
---------- ---------- ---------- ---------- -------------------- -------------------- ----------------------------------------
     89093          6        131          0  0x1800083           6,131                alter system dump datafile 6 block 131 ;

SCOTT@book> update t4 set name=upper(name) where id=1;
1 row updated.

SCOTT@book> commit ;
Commit complete.

--//这样块131,132的scn号不一样。
    
3.我遇到的问题。我的设置已经建立了listfile文件。如果你执行bbed,马上输入show all,结果如下:
BBED> show all
        FILE#           1
        BLOCK#          1
        OFFSET          0
        DBA             0x00400001 (4194305 1,1)
        FILENAME        /mnt/ramdisk/book/system01.dbf
        BIFILE          bifile.bbd
        LISTFILE        /home/oracle/bbed/filelist.txt
        BLOCKSIZE       8192
        MODE            Edit
        EDIT            Unrecoverable
        IBASE           Dec
        OBASE           Dec
        WIDTH           160
        COUNT           64
        LOGFILE         log.bbd
        SPOOL           Yes

--实际上我的测试无论/home/oracle/bbed/filelist.txt中/mnt/ramdisk/book/system01.dbf在哪一行,执行都是像上面那样。

--显示P命令的执行方式:
BBED> help p
PRINT[/x|d|u|o|c] [ DBA | FILE | FILENAME | BLOCK | OFFSET | symbol | *symbol ]

--如果我执行如下:
BBED> p tailchk dba 6,131
ub4 tailchk                                 @8188     0x70200602

BBED> p tailchk dba 6,128
BBED-00400: invalid blocktype (32)


BBED> p tailchk dba 6,131
BBED-00400: invalid blocktype (32)

--很明显第2次我再执行p tailchk dba 6,131,出现错误,从invalid blocktype (32)提示看访问的是dba=6,128.
--而这样执行就没有问题了。

BBED> p  dba 6,131 tailchk
ub4 tailchk                                 @8188     0x70200602

BBED> p tailchk dba 6,132
ub4 tailchk                                 @8188     0x6d8e0602

--从显示结果看,这2种执行方式是等价的,但是当先访问了bbed无法识别的块。再执行p tailchk dba 6,132这种方式就报错。

BBED> p  dba 6,128 tailchk
BBED-00400: invalid blocktype (32)

BBED> show
        FILE#           6
        BLOCK#          128
        OFFSET          8188
        DBA             0x01800080 (25165952 6,128)
        FILENAME        /mnt/ramdisk/book/sugar01.dbf
        BIFILE          bifile.bbd
        LISTFILE        /home/oracle/bbed/filelist.txt
        BLOCKSIZE       8192
        MODE            Edit
        EDIT            Unrecoverable
        IBASE           Dec
        OBASE           Dec
        WIDTH           160
        COUNT           64
        LOGFILE         log.bbd
        SPOOL           Yes

BBED> p  dba 6,131 tailchk
ub4 tailchk                                 @8188     0x70200602

--看来在bbed执行时dba 之类的要写在前面,避免这种错误。

上一篇:插件与浏览器的关系


下一篇:CSDN-markdown编辑器之从本机导入Markdown文件(二)