Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

20

积分

1

好友

9

主题
1#
发表于 2013-1-4 13:08:34 | 查看: 7038| 回复: 21
   我的数据库版本:
  1. SYS>select * from v$version;

  2. BANNER
  3. ----------------------------------------------------------------
  4. Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
  5. PL/SQL Release 10.2.0.1.0 - Production
  6. CORE    10.2.0.1.0      Production
  7. TNS for Linux: Version 10.2.0.1.0 - Production
  8. NLSRTL Version 10.2.0.1.0 - Production
复制代码
因为在寻找真相时自己掌握的手段较少所以请大师们指点!


下面是实验过程:

确定实验对象的rowid
  1. select
  2. dbms_rowid.ROWID_OBJECT(rowid) AAAMit,
  3. dbms_rowid.ROWID_RELATIVE_FNO(rowid) AAE,
  4. dbms_rowid.ROWID_BLOCK_NUMBER(rowid) AAAABA,
  5. dbms_rowid.ROWID_ROW_NUMBER(rowid) AAN,
  6. rowid,empno
  7.   7  from e01;

  8.     AAAMIT        AAE     AAAABA        AAN ROWID                   EMPNO
  9. ---------- ---------- ---------- ---------- ------------------ ----------
  10.      51373          4         60          0 AAAMitAAEAAAAA8AAA       7369
  11.      51373          4         60          1 AAAMitAAEAAAAA8AAB       7499
  12.      51373          4         60          2 AAAMitAAEAAAAA8AAC       7521
  13.      51373          4         60          3 AAAMitAAEAAAAA8AAD       7566
  14.      51373          4         60          4 AAAMitAAEAAAAA8AAE       7654
  15.      51373          4         60          5 AAAMitAAEAAAAA8AAF       7698
  16.      51373          4         60          6 AAAMitAAEAAAAA8AAG       7782
  17.      51373          4         60          7 AAAMitAAEAAAAA8AAH       7788
  18.      51373          4         60          9 AAAMitAAEAAAAA8AAJ       7844
  19.      51373          4         60         10 AAAMitAAEAAAAA8AAK       7876
  20.      51373          4         60         11 AAAMitAAEAAAAA8AAL       7900
  21.      51373          4         60         12 AAAMitAAEAAAAA8AAM       7902
  22.      51373          4         60         13 AAAMitAAEAAAAA8AAN       7934
  23.      51373          4         61          0 AAAMitAAEAAAAA9AAA
  24.      51373          4         62          0 AAAMitAAEAAAAA+AAA       3422
  25.      51373          4         63          0 AAAMitAAEAAAAA/AAA       7839
  26.      51373          4         64          0 AAAMitAAEAAAABAAAA       7369
  27.      51373          4         64          1 AAAMitAAEAAAABAAAB       7499
  28.      51373          4         64          2 AAAMitAAEAAAABAAAC       7521
  29.      51373          4         64          3 AAAMitAAEAAAABAAAD       7566
  30.      51373          4         64          4 AAAMitAAEAAAABAAAE       7654
  31.      51373          4         64          5 AAAMitAAEAAAABAAAF       7698
  32.      51373          4         64          6 AAAMitAAEAAAABAAAG       7782
  33.      51373          4         64          7 AAAMitAAEAAAABAAAH       7788
  34.      51373          4         64          9 AAAMitAAEAAAABAAAJ       7844
  35.      51373          4         64         10 AAAMitAAEAAAABAAAK       7876
  36.      51373          4         64         11 AAAMitAAEAAAABAAAL       7900
  37.      51373          4         64         12 AAAMitAAEAAAABAAAM       7902
  38.      51373          4         64         13 AAAMitAAEAAAABAAAN       7934
  39.      51373          4         64         14 AAAMitAAEAAAABAAAO       9999
复制代码
  1. Select file#,dbablk,lru_flag,tch from x$bh
  2. where obj=(select object_id from dba_objects where object_name='E01' and owner='SCOTT');

  3.      FILE#     DBABLK   LRU_FLAG        TCH
  4. ---------- ---------- ---------- ----------
  5.          4         60          0         66
  6.          4         60          2          2
  7.          4         57          0          1
  8.          4         62          0        101
  9.          4         59          0        104
  10.          4         64          0         66
  11.          4         64          0          1
  12.          [color=Red]4         64          2          2[/color]         4         64          0          1
  13.          4         64          0          1
  14.          4         61          0        126
  15.          4         58          0          1
  16.          4         63          0        102
复制代码
在这里自己按顺序数出标红的字体可能是4号文件64号块的第2行数据。所以按前面的结果集进行了实验。
  1. SCOTT>/

  2.      EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
  3. ---------- ---------- --------- ---------- --------- ---------- ---------- ----------
  4.       7521 WARD       SALESMAN        7698 22-FEB-81          3        500         30

  5. Elapsed: 00:00:00.00
  6. SCOTT>l
  7.   1* select * from scott.e01 where rowid='AAAMitAAEAAAABAAAC'


  8. SYS>Select ADDR,HLADDR,file#,dbablk,lru_flag,tch,OBJ,BA from x$bh
  9.   2  where obj=(select object_id from dba_objects where object_name='E01' and owner='SCOTT');

  10. ADDR     HLADDR        FILE#     DBABLK   LRU_FLAG        TCH        OBJ BA
  11. -------- -------- ---------- ---------- ---------- ---------- ---------- --------
  12. B7E1DF50 3055BCFC          4         60          1         66      51373 26BD2000
  13. B7E1DE94 3055BCFC          4         60          3          2      51373 26BE2000
  14. B7E1DF50 305731A4          4         57          1          1      51373 26BCA000
  15. B7E1DF50 30581634          4         62          1        101      51373 26BDE000
  16. B7E1DF50 30598860          4         59          1        104      51373 26BE4000
  17. B7E1DF50 305A6F6C          4         64          1         70      51373 26BCE000
  18. B7E1DE94 305A6F6C          4         64          1          1      51373 26BD4000
  19. [color=Red]B7E1DDD8 305A6F6C          4         64          3          2      51373 26BD8000[/color]B7E1DD1C 305A6F6C          4         64          1          1      51373 26BD6000
  20. B7E1DC60 305A6F6C          4         64          1          1      51373 26BDA000
  21. B7E1DF50 305BE198          4         61          1        130      51373 26BE0000
  22. B7E1DF50 305D53C4          4         58          1          1      51373 26BCC000
  23. B7E1DF50 305E3AD0          4         63          1        102      51373 26BDC000
复制代码
这里出现了个问题,就是怎么确定我访问的就是64号块的第2行数据呢?

另外在Lru_flag列数值方面 也只查到了0,2,4,8的意义而且不敢确定,请大师给出各个数值的意义。

在验证Lru_flag各个数值意义的实验过程中,trace出来的文件自己不能确定是不是相应数值,也请大师给个方法,怎么做才能更明确lru_flag列每个数值的意义。也就是怎么去看每个数值的意义的实验(怎么dump 或 set events,有别的简洁的方法也请给出)。



已有 1 人评分威望 理由
Maclean Liu(刘相兵 + 20 值得肯定

总评分: 威望 + 20   查看全部评分

是龙先学会盘着,是虎先学会卧着,等待时机,蓄势待发
2#
发表于 2013-1-4 15:22:06
  1. Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
  2. With the Partitioning, OLAP, Data Mining and Real Application Testing options

  3. SQL>
  4. SQL> select distinct lru_flag from x$BH;

  5.   LRU_FLAG
  6. ----------
  7.          6
  8.          2
  9.          4
  10.          0
  11.                  
  12.                  
  13. LRU_FLAG    NUMBER     8.1+ LRU flag
  14.            KCBBHLDF   0x01     8.1  LRU Dump Flag used in debug print routine
  15.            KCBBHLMT   0x02     8.1  moved to tail of lru (for extended stats)
  16.            KCBBHLAL   0x04     8.1  on auxiliary list
  17.            KCBBHLHB   0x08     8.1  hot buffer - not in cold portion of lru

  18. SQL> oradebug setmypid
  19. Statement processed.
  20. SQL> oradebug dump buffers 4;
  21. Statement processed.
  22. SQL> oradebug tracefile_name
  23. /u01/app/oracle/diag/rdbms/crmv/CRMV/trace/CRMV_ora_1809.trc

  24. dump buffers里有对LRU_FLAG的解释



  25.    BH (0x65fed018) file#: 3 rdba: 0x00c0051d (3/1309) class: 20 ba: 0x65e02000
  26.       set: 6 pool: 3 bsz: 8192 bsi: 0 sflg: 2 pwc: 13,28
  27.       dbwrid: 0 obj: -1 objn: 0 tsn: 2 afn: 3 hint: f
  28.       hash: [0x7cf9f578,0x63f8c0b8] lru: [0x65fed230,0x7ef8c480]
  29.       lru-flags: debug_dump on_auxiliary_list
  30.       ckptq: [NULL] fileq: [NULL] objq: [NULL] objaq: [NULL]
  31.       st: FREE md: NULL fpin: 'ktuwh03: ktugnb' tch: 0 lfb: 33
  32.       flags:


  33. SQL> select lru_flag from x$bh where upper(BA) like '%65E02000%';

  34.   LRU_FLAG
  35. ----------
  36.          5
复制代码
==================================================>


这里能看到BA=0x65e02000 的BUFFER的LRU_FLAG=5 即 5=1+4= debug_dump + on_auxiliary_list= 0x01+0x04

回复 只看该作者 道具 举报

3#
发表于 2013-1-4 16:00:17
Maclean Liu(刘相兵 发表于 2013-1-4 15:22
==================================================>


我试验了下遇到了问题请刘大师看下!
SYS>oradebug tracefile_name
/u01/oracle/admin/zip/udump/zip_ora_1642.trc
SYS>!cat /u01/oracle/admin/zip/udump/zip_ora_1642.trc
cat: /u01/oracle/admin/zip/udump/zip_ora_1642.trc: No such file or directory

[oracle@god udump]$ cd ..
[oracle@god zip]$ ll | grep udump
drwxr-x--- 2 oracle oinstall 4096 Jan  4 15:42 udump

[oracle@god ~]$ cd /u01/oracle/admin/zip/udump
[oracle@god udump]$ ls
[oracle@god udump]$ ll
total 0
[oracle@god udump]$ du -h
4.0K    .


trace出来的文件找不到了 - -!

回复 只看该作者 道具 举报

4#
发表于 2013-1-4 16:18:23
1.重新执行 我给的步骤

2. 给出你tracefile_name前的步骤

回复 只看该作者 道具 举报

5#
发表于 2013-1-4 16:30:56
Maclean Liu(刘相兵 发表于 2013-1-4 16:18
1.重新执行 我给的步骤

2. 给出你tracefile_name前的步骤

SYS>oradebug setmypid;
Statement processed.
SYS>oradebug dump buffers 5;
--waits
Statement processed.
SYS>SYS>
SYS>oradebug tracefile_name
/u01/oracle/admin/zip/udump/zip_ora_1642.trc
SYS>!cat /u01/oracle/admin/zip/udump/zip_ora_1642.trc
cat: /u01/oracle/admin/zip/udump/zip_ora_1642.trc: No such file or directory

SYS>sho user
USER is "SYS"


SYS>sho parameter user

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
license_max_users                    integer     0
parallel_adaptive_multi_user         boolean     TRUE
user_dump_dest                       string      /u01/oracle/admin/zip/udump


[oracle@god ~]$ cd /u01/oracle/admin/zip/udump
[oracle@god udump]$ ls
[oracle@god udump]$ ll
total 0

回复 只看该作者 道具 举报

6#
发表于 2013-1-4 22:20:29
check.ora 发表于 2013-1-4 16:30
SYS>oradebug setmypid;
Statement processed.
SYS>oradebug dump buffers 5;

请仔细按照我给出的步骤去做!!!

回复 只看该作者 道具 举报

7#
发表于 2013-1-5 13:11:17
Maclean Liu(刘相兵 发表于 2013-1-4 22:20
请仔细按照我给出的步骤去做!!!

不好意思 上面的操作自以为然了。感谢刘大师耐心指点。

可是通过自己的实践又有了新的问题,感觉又迷糊了,下面是实验的步骤:

先确定了x$bh中ba列的整体格式
  1. SYS>select lru_flag,ba from x$bh where lru_flag in (0,1,2,3,4,5,6,7,8,9) and rownum<20 order by 1;

  2.   LRU_FLAG BA
  3. ---------- --------
  4.          1 20A2C000
  5.          1 2158E000
  6.          1 230B2000
  7.          1 22596000
  8.          1 20CA8000
  9.          5 22992000
  10.          5 239DC000
  11.          5 22910000
  12.          9 239E8000
  13.          9 21704000
  14.          9 22170000
  15.          9 20992000
  16.          9 20D2E000
  17.          9 2208C000
  18.          9 23628000
  19.          9 21E68000
  20.          9 20DDA000
  21.          9 210F0000
  22.          9 221A4000
复制代码
然后用oradebug dump 文件(这次的操作绝对没错,列出文件名以证明没打开其他的文件)
  1. SYS>oradebug tracefile_name
  2. /u01/oracle/admin/zip/udump/zip_ora_15287.trc
复制代码
  1. [oracle@god ~]$ cd /u01/oracle/admin/zip/udump/
  2. [oracle@god udump]$ ls
  3. zip_ora_15204.trc  zip_ora_15287.trc
  4. [oracle@god udump]$ ll -trh
  5. total 419M
  6. -rw-r----- 1 oracle oinstall  803 Jan  4 22:18 zip_ora_15204.trc
  7. -rw-r----- 1 oracle oinstall 418M Jan  5 10:49 zip_ora_15287.trc

  8. [oracle@god udump]$ vim zip_ora_15287.trc

复制代码
这里做了与第一步查询只不过没有进行行数的限制,结果集7千多行就不列举。

然后按照查询结果此trace文件中寻找答案。
  1. SYS>select lru_flag,ba from x$bh where lru_flag=1 and rownum<5;

  2.   LRU_FLAG BA
  3. ---------- --------
  4.          1 20A2C000
  5.          1 20CA8000
  6.          1 22596000
  7.          1 230B2000



  8.     BH (0x20bf1f2c) file#: 2 rdba: 0x00800e37 (2/3639) class: 30 ba: 0x20a2c000
  9.       set: 3 blksize: 8192 bsi: 0 set-flg: 0 pwbcnt: 0
  10.       dbwrid: 0 obj: -1 objn: 0 tsn: 1 afn: 2
  11.       hash: [3054e860,3054e860] lru: [20bf2190,227ebbd0]
  12.       lru-flags: hot_buffer
  13.       ckptq: [NULL] fileq: [NULL] objq: [20bf21e4,227ebc24]
  14.       st: XCURRENT md: NULL tch: 1
  15.       flags: gotten_in_current_mode block_written_once redo_since_read
  16.       LRBA: [0x0.0.0] HSCN: [0xffff.ffffffff] HSUB: [1]
  17.       buffer tsn: 1 rdba: 0x00800e37 (2/3639)
  18.       scn: 0x0000.00129581 seq: 0x01 flg: 0x04 tail: 0x95810201
  19.       frmt: 0x02 chkval: 0xa58a type: 0x02=KTU UNDO BLOCK
  20. Hex dump of block: st=0, typ_found=1
  21. Dump of memory from 0x20A2C000 to 0x20A2E000


  22. SYS>select lru_flag from x$bh where ba=upper('20a2c000');

  23.   LRU_FLAG
  24. ----------
  25.          1

  26. ============================================================


  27.     BH (0x20fe991c) file#: 2 rdba: 0x00800b78 (2/2936) class: 30 ba: 0x20ca6000
  28.       set: 3 blksize: 8192 bsi: 0 set-flg: 0 pwbcnt: 0
  29.       dbwrid: 0 obj: -1 objn: 0 tsn: 1 afn: 2
  30.       hash: [305a25a8,305a25a8] lru: [223e6320,20be8bb0]
  31.       lru-flags: hot_buffer
  32.       ckptq: [NULL] fileq: [NULL] objq: [223e6374,20be8c04]
  33.       st: XCURRENT md: NULL tch: 0
  34.       flags: gotten_in_current_mode block_written_once redo_since_read
  35.       LRBA: [0x0.0.0] HSCN: [0xffff.ffffffff] HSUB: [1]
  36.       buffer tsn: 1 rdba: 0x00800b78 (2/2936)
  37.       scn: 0x0000.00117a9e seq: 0x01 flg: 0x04 tail: 0x7a9e0201
  38.       frmt: 0x02 chkval: 0x9284 type: 0x02=KTU UNDO BLOCK
  39. Hex dump of block: st=0, typ_found=1
  40. Dump of memory from 0x20CA6000 to 0x20CA8000

  41. SYS>select lru_flag from x$bh where ba=upper('20ca6000');

  42.   LRU_FLAG
  43. ----------
  44.          9
复制代码
查找ba地址为20CA8000的但在trace文件中真实的地址却是20ca6000
疑问在于 LRU_FLAG标记值不同但在lru链上的位置都是在hot 这里就有些不理解了 从其他信息来看也看不出什么区别。

请刘大师指点。

回复 只看该作者 道具 举报

8#
发表于 2013-1-5 19:59:06
check.ora 发表于 2013-1-5 13:11
不好意思 上面的操作自以为然了。感谢刘大师耐心指点。

可是通过自己的实践又有了新的问题,感觉又迷糊 ...

没有看懂你的演示是什么意思

回复 只看该作者 道具 举报

9#
发表于 2013-1-6 09:50:22
本帖最后由 check.ora 于 2013-1-6 10:12 编辑
Maclean Liu(刘相兵 发表于 2013-1-5 19:59
没有看懂你的演示是什么意思


是这样,在上边的操作可以看出lru_flag=1时和Lru_flag=9的时候在我oradebug出来的trace文件中的意思在是一样的,即都是在lru的hot端,而且看trace文件中的flag那行的说明也都一样。如果1和9的在oracle中要表达的意思是一样的那为什么要用两个值来表达?!这里有点想不明白。


另外见下面的trace文件内容:
  1. BH (0x217ed0cc) file#: 3 rdba: 0x00c01473 (3/5235) class: 4 ba: 0x21548000
  2.       set: 3 blksize: 8192 bsi: 0 set-flg: 0 pwbcnt: 0
  3.       dbwrid: 0 obj: 51298 objn: 9069 tsn: 2 afn: 3
  4.       hash: [305899a0,305899a0] lru: [23ff5ec0,217ecc50]
  5.       lru-flags: hot_buffer
  6.       ckptq: [NULL] fileq: [NULL] objq: [2dc3f6b8,2dc3f6b8]
  7.       st: XCURRENT md: NULL tch: 1
  8.       flags:
  9.       LRBA: [0x0.0.0] HSCN: [0xffff.ffffffff] HSUB: [65535]
  10.       buffer tsn: 2 rdba: 0x00c01473 (3/5235)
  11.       scn: 0x0000.0006dd3e seq: 0x03 flg: 0x04 tail: 0xdd3e2303
  12.       frmt: 0x02 chkval: 0x63eb type: 0x23=PAGETABLE SEGMENT HEADER
  13. Hex dump of block: st=0, typ_found=1
  14. Dump of memory from 0x21548000 to 0x2154A000


  15. SYS>SELECT LRU_FLAG FROM X$BH WHERE BA=UPPER('21548000');

  16.   LRU_FLAG
  17. ----------
  18.          0

  19. ===========================================================

  20.     BH (0x233e9c8c) file#: 3 rdba: 0x00c074cb (3/29899) class: 4 ba: 0x230b0000
  21.       set: 3 blksize: 8192 bsi: 0 set-flg: 0 pwbcnt: 0
  22.       dbwrid: 0 obj: 51992 objn: 52066 tsn: 2 afn: 3
  23.       hash: [3058b6b0,3058b6b0] lru: [233e9c30,233e9d90]
  24.       lru-flags:
  25.       ckptq: [NULL] fileq: [NULL] objq: [233e9de4,2e03e898]
  26.       st: XCURRENT md: NULL tch: 1
  27.       flags:
  28.       LRBA: [0x0.0.0] HSCN: [0xffff.ffffffff] HSUB: [65535]
  29.       buffer tsn: 2 rdba: 0x00c074cb (3/29899)
  30.       scn: 0x0000.000f4bf8 seq: 0x03 flg: 0x04 tail: 0x4bf82303
  31.       frmt: 0x02 chkval: 0x1482 type: 0x23=PAGETABLE SEGMENT HEADER
  32. Hex dump of block: st=0, typ_found=1
  33. Dump of memory from 0x230B0000 to 0x230B2000



  34. SYS>SELECT LRU_FLAG FROM X$BH WHERE BA=UPPER('230b0000');

  35.   LRU_FLAG
  36. ----------
  37.          0


  38. ===========================================================


  39.     BH (0x233e8d6c) file#: 3 rdba: 0x00c0782b (3/30763) class: 4 ba: 0x23084000
  40.       set: 3 blksize: 8192 bsi: 0 set-flg: 0 pwbcnt: 0
  41.       dbwrid: 0 obj: 52053 objn: 52053 tsn: 2 afn: 3
  42.       hash: [30587794,30587794] lru: [23ffa170,223ea680]
  43.       lru-flags: hot_buffer
  44.       ckptq: [NULL] fileq: [NULL] objq: [223ea6d4,2d841a54]
  45.       st: XCURRENT md: NULL tch: 3
  46.       flags: gotten_in_current_mode block_written_once redo_since_read
  47.       LRBA: [0x0.0.0] HSCN: [0xffff.ffffffff] HSUB: [1]
  48.       buffer tsn: 2 rdba: 0x00c0782b (3/30763)
  49.       scn: 0x0000.000f7c8d seq: 0x02 flg: 0x04 tail: 0x7c8d2302
  50.       frmt: 0x02 chkval: 0x60d5 type: 0x23=PAGETABLE SEGMENT HEADER
  51. Hex dump of block: st=0, typ_found=1
  52. Dump of memory from 0x23084000 to 0x23086000




  53. SYS>SELECT LRU_FLAG FROM X$BH WHERE BA=UPPER('23084000');

  54.   LRU_FLAG
  55. ----------
  56.          0
复制代码
在查找lru_flags的时候发现有的有说明有的没说明,开始还以为下面的type是PAGETABLE SEGMENT HEADER造成的,可是经过上面的寻找,发现事情好像并没有这么简单。上图是我在trace文件中查找出来的lru_flag=0的三个结果的部分内容,他们的type都是PAGETABLE SEGMENT HEADER,可是他们的lru_flags和flags的标记真是一个“人”一个样!这又是为什么呢?请刘大指点。

回复 只看该作者 道具 举报

10#
发表于 2013-1-8 17:10:40

无法重现你的测试,你的测试似乎忽略了 一些操作对buffer header的影响。

请你给出客重复的 测试

回复 只看该作者 道具 举报

11#
发表于 2013-1-10 10:49:15
Maclean Liu(刘相兵 发表于 2013-1-8 17:10
无法重现你的测试,你的测试似乎忽略了 一些操作对buffer header的影响。

请你给出客重复的 测试 ...

感谢刘大师的指点,这两天比较忙,没来得及继续试验,不过通过你的指点,我自认为找到了一些研究的方法或者方向,下面自己再去做实验,如果再遇到问题,还请刘大师继续指点。当然当我做好了实验我会记录整个实验的步骤以供与我遇到同样问题的人作参考。

回复 只看该作者 道具 举报

12#
发表于 2013-1-10 11:00:11
check.ora 发表于 2013-1-10 10:49
感谢刘大师的指点,这两天比较忙,没来得及继续试验,不过通过你的指点,我自认为找到了一些研究的方法或 ...

你的学习精神值得肯定, 好好学, 1~2年 你可以成长很多。

回复 只看该作者 道具 举报

13#
发表于 2013-1-11 15:04:34
Maclean Liu(刘相兵 发表于 2013-1-10 11:00
你的学习精神值得肯定, 好好学, 1~2年 你可以成长很多。

感谢你的肯定,我想这会将会成为我在以后学习Oracle的道路上一个强有力的动力,也更使我坚定了信念。希望以后能够给这个论坛带来较大的帮助。不求成名,只愿自己分享的东西能给后来人或者进入瓶颈的人带来启发。

回复 只看该作者 道具 举报

14#
发表于 2013-1-16 21:38:34
本帖最后由 check.ora 于 2013-1-17 09:31 编辑

--------------------------------------完整的探知过程从这里开始---------------------------------------------------------
  1. --刚刚启动数据库,查看x$bh中file#=4 obj=(scott.e01这个表的对象号)
  2. SYS>select ADDR,HLADDR,LRU_FLAG,DBARFIL,DBABLK,BA,TCH from x$bh where obj=(select OBJECT_ID from dba_objects where owner='SCOTT' and object_name='E01');
  3. no rows selected

  4. --查询结果没有信息。这在一定程度上说明数据库启动跟用户表的交往几乎不存在。

  5. --在这里我们建立一个基线,为以后的操作动作作对比,一下都是对一个块进行操作来观察lru_flag这行的变化,这样使实验和实验结果都一目了然也都具有针对性。
  6. SYS>oradebug tracefile_name
  7. ORA-00074: no process has been specified
  8. SYS>oradebug setmypid
  9. Statement processed.
  10. SYS>oradebug tracefile_name
  11. /u01/oracle/admin/lun/udump/lun_ora_4671.trc
  12. SYS>oradebug dump buffers 4;
  13. Statement processed.
  14. SYS>!ls /u01/oracle/admin/lun/udump/lun_ora_4671.trc
  15. /u01/oracle/admin/lun/udump/lun_ora_4671.trc

  16. SYS>!cat /u01/oracle/admin/lun/udump/lun_ora_4671.trc | grep 'file#: 4'
  17.     BH (0x2abebacc) file#: 4 rdba: 0x01000002 (4/2) class: 13 ba: 0x2a908000

  18. 我们看到我用来作实验的这个文件在dump出的trace文件中只有一行信息,下面我们进入到文件中在进行进一步的确认:

  19. CHAIN: 15726 LOC: 0x300e6a54 HEAD: [NULL]
  20. CHAIN: 15727 LOC: 0x300e6a5c HEAD: [NULL]
  21. CHAIN: 15728 LOC: 0x300e6a64 HEAD: [NULL]
  22. CHAIN: 15729 LOC: 0x300e6a6c HEAD: [NULL]
  23. CHAIN: 15730 LOC: 0x300e6a74 HEAD: [NULL]
  24. CHAIN: 15731 LOC: 0x300e6a7c HEAD: [NULL]
  25. CHAIN: 15732 LOC: 0x300e6a84 HEAD: [NULL]
  26. CHAIN: 15733 LOC: 0x300e6a8c HEAD: [NULL]
  27. CHAIN: 15734 LOC: 0x300e6a94 HEAD: [2abebacc,2abebacc]
  28.     BH (0x2abebacc) file#: 4 rdba: 0x01000002 (4/2) class: 13 ba: 0x2a908000
  29.       set: 3 blksize: 8192 bsi: 0 set-flg: 2 pwbcnt: 19
  30.       dbwrid: 0 obj: -1 objn: 1 tsn: 4 afn: 4
  31.       hash: [300e6a94,300e6a94] lru: [2abebbd0,2abeba70]
  32.       lru-flags:
  33.       ckptq: [NULL] fileq: [NULL] objq: [2eb4edcc,2eb4edcc]
  34.       st: XCURRENT md: NULL tch: 1
  35.       flags: gotten_in_current_mode
  36.       LRBA: [0x0.0.0] HSCN: [0xffff.ffffffff] HSUB: [65535]
  37.       buffer tsn: 4 rdba: 0x01000002 (4/2)
  38.       scn: 0x0000.00074715 seq: 0x02 flg: 0x04 tail: 0x47151d02
  39.       frmt: 0x02 chkval: 0x4505 type: 0x1d=KTFB Bitmapped File Space Header
  40. Hex dump of block: st=0, typ_found=1
  41. Dump of memory from 0x2A908000 to 0x2A90A000
  42. ----------------------------
  43. --search hit BOTTOM, continuing at TOP  -->是对trace文件进行检索时的显示以证明符合检索条件的只此一行数据。
  44. ----------------------------
  45. --class=13  & type:=KTFB Bitmapped File Space Header (也说明了这个快的含义)
  46. --通过这两点我们大致可以了解这个快事文件头块。(受本人技术和知识的限制无法将内容深入的更细节,网上查了下st=XCURRENT的意思是实例以排他方式获取的当前模式数据块,但暂--时本人无法用具体的实验证明这一点,还请大师们指点,但单就这个实验的目的言我们暂不讨论这些也是可以进行的)。
复制代码

回复 只看该作者 道具 举报

15#
发表于 2013-1-16 21:40:51

  1. select
  2. dbms_rowid.ROWID_OBJECT(rowid) object#,
  3. dbms_rowid.ROWID_RELATIVE_FNO(rowid) file#,
  4. dbms_rowid.ROWID_BLOCK_NUMBER(rowid) block#,
  5. dbms_rowid.ROWID_ROW_NUMBER(rowid) row#,
  6. rowid,empno
  7.   7  from scott.e01;

  8.    OBJECT#      FILE#     BLOCK#       ROW# ROWID                   EMPNO
  9. ---------- ---------- ---------- ---------- ------------------ ----------
  10.      51353          4         60          0 AAAMiZAAEAAAAA8AAA       7369
  11.      51353          4         60          1 AAAMiZAAEAAAAA8AAB       7499
  12.      51353          4         60          2 AAAMiZAAEAAAAA8AAC       7521
  13.      51353          4         60          3 AAAMiZAAEAAAAA8AAD       7566
  14.      51353          4         60          4 AAAMiZAAEAAAAA8AAE       7654
  15.      51353          4         60          5 AAAMiZAAEAAAAA8AAF       7698
  16.      51353          4         60          6 AAAMiZAAEAAAAA8AAG       7782
  17.      51353          4         60          7 AAAMiZAAEAAAAA8AAH       7788
  18.      51353          4         60          8 AAAMiZAAEAAAAA8AAI       7839
  19.      51353          4         60          9 AAAMiZAAEAAAAA8AAJ       7844
  20.      51353          4         60         10 AAAMiZAAEAAAAA8AAK       7876
  21.      51353          4         60         11 AAAMiZAAEAAAAA8AAL       7900
  22.      51353          4         60         12 AAAMiZAAEAAAAA8AAM       7902
  23.      51353          4         60         13 AAAMiZAAEAAAAA8AAN       7934
  24.      51353          4         63          0 AAAMiZAAEAAAAA/AAA       8888
  25.      51353          4         63          1 AAAMiZAAEAAAAA/AAB       9999
  26.      51353          4         63          2 AAAMiZAAEAAAAA/AAC       6666

  27. --访问目标行
  28. declare
  29.   s_empno number;
  30. begin
  31.   for i in 1..600000 loop
  32.     select empno into s_empno from e01 where rowid='AAAMiZAAEAAAAA/AAA';
  33.     dbms_lock.sleep(0.001);
  34.   end loop;
  35. end;
  36. /

  37. --观察目标行tch计数

  38. SYS>select ADDR,HLADDR,LRU_FLAG,DBARFIL,DBABLK,BA,TCH from x$bh where obj=(select OBJECT_ID from dba_objects where owner='SCOTT' and object_name='E01');

  39. ADDR     HLADDR     LRU_FLAG    DBARFIL     DBABLK BA              TCH
  40. -------- -------- ---------- ---------- ---------- -------- ----------
  41. B6E01358 300CDFE8          1          4         60 28E50000          1
  42. B6E01358 300F3920          1          4         62 28E4C000          1
  43. B6E01358 3010AB4C          1          4         59 28E52000          1
  44. B6E0129C 3010AB4C          1          4         59 28E5C000          1
  45. B6E01358 30119258          1          4         64 28E48000          1
  46. B6E01358 30130484          1          4         61 28E4E000          1
  47. B6E01358 30155DBC          1          4         63 28E4A000          9

  48. 7 rows selected.

  49. --省略重复信息

  50. SYS>/

  51. ADDR     HLADDR     LRU_FLAG    DBARFIL     DBABLK BA              TCH
  52. -------- -------- ---------- ---------- ---------- -------- ----------
  53. B6E01358 300CDFE8          1          4         60 28E50000          1
  54. B6E01358 300F3920          1          4         62 28E4C000          1
  55. B6E01358 3010AB4C          1          4         59 28E52000          1
  56. B6E0129C 3010AB4C          1          4         59 28E5C000          1
  57. B6E01358 30119258          1          4         64 28E48000          1
  58. B6E01358 30130484          1          4         61 28E4E000          1
  59. B6E01358 30155DBC          1          4         63 28E4A000          9

  60. --下面我们对另一个块进行更新与查看

  61. begin
  62.   for i in 1..1500000 loop
  63.     update scott.e01 set sal=500 where rowid='AAAMiZAAEAAAAA8AAL';
  64.     dbms_lock.sleep(0.001);
  65.   end loop;
  66. end;
  67.   7  /

  68. --在更新的同时进行查询

  69. SYS>select * from scott.e01 where rowid='AAAMiZAAEAAAAA8AAL';

  70.      EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
  71. ---------- ---------- --------- ---------- --------- ---------- ---------- ----------
  72.       7900 JAMES      CLERK           7698 03-DEC-81        950                    30

  73. Elapsed: 00:00:04.60

  74. SYS>/
  75. --结果集与上步一样不再列出,发现查询返回时间很慢(buffer cache等待事件)
  76. Elapsed: 00:00:09.45

  77. SYS>/

  78. Elapsed: 00:00:05.59
复制代码

回复 只看该作者 道具 举报

16#
发表于 2013-1-16 21:41:33
本帖最后由 check.ora 于 2013-1-17 09:44 编辑
  1. --同时进行tch的观察

  2. SYS>select ADDR,HLADDR,LRU_FLAG,DBARFIL,DBABLK,BA,TCH from x$bh where obj=(select OBJECT_ID from dba_objects where owner='SCOTT' and object_name='E01');

  3. ADDR     HLADDR     LRU_FLAG    DBARFIL     DBABLK BA              TCH
  4. -------- -------- ---------- ---------- ---------- -------- ----------
  5. B6E01358 300CDFE8          1          4         60 28E50000          1
  6. B6E01358 300F3920          1          4         62 28E4C000          1
  7. B6E01358 3010AB4C          1          4         59 28E52000          1
  8. B6E0129C 3010AB4C          1          4         59 28E5C000          1
  9. B6E01358 30119258          1          4         64 28E48000          1
  10. B6E01358 30130484          1          4         61 28E4E000          1
  11. B6E01358 30155DBC          1          4         63 28E4A000          9

  12. 7 rows selected.

  13. Elapsed: 00:00:00.11

  14. SYS>/

  15. ADDR     HLADDR     LRU_FLAG    DBARFIL     DBABLK BA              TCH
  16. -------- -------- ---------- ---------- ---------- -------- ----------
  17. B6E01358 300CDFE8          1          4         60 28E50000         14
  18. B6E01358 300F3920          1          4         62 28E4C000          1
  19. B6E01358 3010AB4C          1          4         59 28E52000          2
  20. B6E0129C 3010AB4C          1          4         59 28E5C000          1
  21. B6E01358 30119258          1          4         64 28E48000          1
  22. B6E01358 30130484          1          4         61 28E4E000          1
  23. B6E01358 30155DBC          1          4         63 28E4A000          9

  24. 7 rows selected.

  25. Elapsed: 00:00:00.04
  26. SYS>/

  27. ADDR     HLADDR     LRU_FLAG    DBARFIL     DBABLK BA              TCH
  28. -------- -------- ---------- ---------- ---------- -------- ----------
  29. B6E01358 300CDFE8          1          4         60 28E50000         15
  30. B6E01358 300F3920          1          4         62 28E4C000          1
  31. B6E01358 3010AB4C          1          4         59 28E52000          2
  32. B6E0129C 3010AB4C          1          4         59 28E5C000          1
  33. B6E01358 30119258          1          4         64 28E48000          1
  34. B6E01358 30130484          1          4         61 28E4E000          1
  35. B6E01358 30155DBC          1          4         63 28E4A000          9

  36. 7 rows selected.

  37. Elapsed: 00:00:00.04
  38. SYS>/

  39. ADDR     HLADDR     LRU_FLAG    DBARFIL     DBABLK BA              TCH
  40. -------- -------- ---------- ---------- ---------- -------- ----------
  41. B6E01358 300CDFE8          1          4         60 28E50000         16
  42. B6E01358 300F3920          1          4         62 28E4C000          1
  43. B6E01358 3010AB4C          1          4         59 28E52000          2
  44. B6E0129C 3010AB4C          1          4         59 28E5C000          1
  45. B6E01358 30119258          1          4         64 28E48000          1
  46. B6E01358 30130484          1          4         61 28E4E000          1
  47. B6E01358 30155DBC          1          4         63 28E4A000          9

  48. 7 rows selected.

  49. Elapsed: 00:00:00.02
  50. SYS>/

  51. ADDR     HLADDR     LRU_FLAG    DBARFIL     DBABLK BA              TCH
  52. -------- -------- ---------- ---------- ---------- -------- ----------
  53. B6E01358 300CDFE8          1          4         60 28E50000         17
  54. B6E01358 300F3920          1          4         62 28E4C000          1
  55. B6E01358 3010AB4C          1          4         59 28E52000          2
  56. B6E0129C 3010AB4C          1          4         59 28E5C000          1
  57. B6E01358 30119258          1          4         64 28E48000          1
  58. B6E01358 30130484          1          4         61 28E4E000          1
  59. B6E01358 30155DBC          1          4         63 28E4A000          9

  60. 7 rows selected.

  61. Elapsed: 00:00:00.04
  62. SYS>/

  63. ADDR     HLADDR     LRU_FLAG    DBARFIL     DBABLK BA              TCH
  64. -------- -------- ---------- ---------- ---------- -------- ----------
  65. B6E01358 300CDFE8          1          4         60 28E50000         18
  66. B6E01358 300F3920          1          4         62 28E4C000          1
  67. B6E01358 3010AB4C          1          4         59 28E52000          2
  68. B6E0129C 3010AB4C          1          4         59 28E5C000          1
  69. B6E01358 30119258          1          4         64 28E48000          1
  70. B6E01358 30130484          1          4         61 28E4E000          1
  71. B6E01358 30155DBC          1          4         63 28E4A000          9

  72. 7 rows selected.
  73. SYS>/

  74. ADDR     HLADDR     LRU_FLAG    DBARFIL     DBABLK BA              TCH
  75. -------- -------- ---------- ---------- ---------- -------- ----------
  76. B6E01358 300CDFE8          1          4         60 28E50000         19
  77. B6E01358 300F3920          1          4         62 28E4C000          1
  78. B6E01358 3010AB4C          1          4         59 28E52000          2
  79. B6E0129C 3010AB4C          1          4         59 28E5C000          1
  80. B6E01358 30119258          1          4         64 28E48000          1
  81. B6E01358 30130484          1          4         61 28E4E000          1
  82. B6E01358 30155DBC          1          4         63 28E4A000          9

  83. 7 rows selected.

  84. Elapsed: 00:00:00.03

  85. SYS>/

  86. ADDR     HLADDR     LRU_FLAG    DBARFIL     DBABLK BA              TCH
  87. -------- -------- ---------- ---------- ---------- -------- ----------
  88. B6E01358 300CDFE8          1          4         60 28E50000         22
  89. B6E01358 300F3920          1          4         62 28E4C000          1
  90. B6E01358 3010AB4C          1          4         59 28E52000          2
  91. B6E0129C 3010AB4C          1          4         59 28E5C000          1
  92. B6E01358 30119258          1          4         64 28E48000          1
  93. B6E01358 30130484          1          4         61 28E4E000          1
  94. B6E01358 30155DBC          1          4         63 28E4A000          9

  95. 7 rows selected.

  96. Elapsed: 00:00:00.02
  97. SYS>/

  98. ADDR     HLADDR     LRU_FLAG    DBARFIL     DBABLK BA              TCH
  99. -------- -------- ---------- ---------- ---------- -------- ----------
  100. B6E01358 300CDFE8          1          4         60 28E50000         22
  101. B6E01358 300F3920          1          4         62 28E4C000          1
  102. B6E01358 3010AB4C          1          4         59 28E52000          2
  103. B6E0129C 3010AB4C          1          4         59 28E5C000          1
  104. B6E01358 30119258          1          4         64 28E48000          1
  105. B6E01358 30130484          1          4         61 28E4E000          1
  106. B6E01358 30155DBC          1          4         63 28E4A000          9

  107. 7 rows selected.

  108. Elapsed: 00:00:00.50
  109. SYS>/

  110. ADDR     HLADDR     LRU_FLAG    DBARFIL     DBABLK BA              TCH
  111. -------- -------- ---------- ---------- ---------- -------- ----------
  112. B6E01358 300CDFE8          1          4         60 25234000          1
  113. B6E0129C 300CDFE8          1          4         60 28E50000         29
  114. B6E01358 300F3920          1          4         62 28E4C000          1
  115. B6E01358 3010AB4C          1          4         59 28E52000          2
  116. B6E0129C 3010AB4C          1          4         59 28E5C000          1
  117. B6E01358 30119258          1          4         64 28E48000          1
  118. B6E01358 30130484          1          4         61 28E4E000          1
  119. B6E01358 30155DBC          1          4         63 28E4A000          9

  120. 8 rows selected.

  121. SYS>/

  122. ADDR     HLADDR     LRU_FLAG    DBARFIL     DBABLK BA              TCH
  123. -------- -------- ---------- ---------- ---------- -------- ----------
  124. B6E01358 300CDFE8          1          4         60 24A36000          0
  125. B6E0129C 300CDFE8          1          4         60 25234000          1
  126. B6E011E0 300CDFE8          1          4         60 28E50000         33
  127. B6E01358 300F3920          1          4         62 28E4C000          1
  128. B6E01358 3010AB4C          1          4         59 28E52000          2
  129. B6E0129C 3010AB4C          1          4         59 28E5C000          1
  130. B6E01358 30119258          1          4         64 28E48000          1
  131. B6E01358 30130484          1          4         61 28E4E000          1
  132. B6E01358 30155DBC          1          4         63 28E4A000          9

  133. 9 rows selected.

  134. Elapsed: 00:00:00.11
  135. SYS>/

  136. ADDR     HLADDR     LRU_FLAG    DBARFIL     DBABLK BA              TCH
  137. -------- -------- ---------- ---------- ---------- -------- ----------
  138. B6E01358 300CDFE8          1          4         60 24750000          1
  139. B6E0129C 300CDFE8          1          4         60 28E50000         39
  140. B6E011E0 300CDFE8          1          4         60 24A36000          1
  141. B6E01124 300CDFE8          1          4         60 25234000          1
  142. B6E01358 300F3920          1          4         62 28E4C000          1
  143. B6E01358 3010AB4C          1          4         59 28E52000          2
  144. B6E0129C 3010AB4C          1          4         59 28E5C000          1
  145. B6E01358 30119258          1          4         64 28E48000          1
  146. B6E01358 30130484          1          4         61 28E4E000          1
  147. B6E01358 30155DBC          1          4         63 28E4A000          9

  148. 10 rows selected.
  149. --省略了一些信息,省略信息中只是热点快tch计数的增加
  150. --我们观察到结果集所返回的行数和BA=28E50000的tch值都发生了改变
复制代码

回复 只看该作者 道具 举报

17#
发表于 2013-1-16 21:42:49
本帖最后由 check.ora 于 2013-1-17 09:47 编辑
  1. --另开一个会话进行dump(具体步骤不再列出)

  2. SYS>oradebug tracefile_name
  3. /u01/oracle/admin/lun/udump/lun_ora_28501.trc

  4. SYS>!ls /u01/oracle/admin/lun/udump/lun_ora_28501.trc
  5. /u01/oracle/admin/lun/udump/lun_ora_28501.trc

  6. --下面观察一下我们对e01表中的两行数据进行操作的trace结果

  7. CHAIN: 61585 LOC: 0x30155eb8 HEAD: [28ff297c,28ff297c]
  8.     BH (0x28ff297c) file#: 4 rdba: 0x0100003f (4/63) class: 1 ba: 0x28e4a000
  9.       set: 3 blksize: 8192 bsi: 0 set-flg: 2 pwbcnt: 220
  10.       dbwrid: 0 obj: 51353 objn: 51353 tsn: 4 afn: 4
  11.       hash: [30155eb8,30155eb8] lru: [28ff2c90,28ff2240]
  12.       lru-flags: hot_buffer
  13.       ckptq: [NULL] fileq: [NULL] objq: [28ff2974,28ff2ad4]
  14.       st: XCURRENT md: NULL tch: 0
  15.       flags: only_sequential_access
  16.       LRBA: [0x0.0.0] HSCN: [0xffff.ffffffff] HSUB: [65535]
  17.       buffer tsn: 4 rdba: 0x0100003f (4/63)
  18.       scn: 0x0000.0007648e seq: 0x01 flg: 0x04 tail: 0x648e0601
  19.       frmt: 0x02 chkval: 0xe224 type: 0x06=trans data
  20. Hex dump of block: st=0, typ_found=1
  21. Dump of memory from 0x28E4A000 to 0x28E4C000

  22. --以上是只进行查询的行的trace文件,对于这行的反复查询根据LRU算法和使用原则,可以观察到这个buffer在lru的MRU端(热端)

  23. end_of_block_dump
  24. CHAIN: 44021 LOC: 0x3012b4a4 HEAD: [NULL]
  25. CHAIN: 44022 LOC: 0x3012b4ac HEAD: [NULL]
  26. CHAIN: 44023 LOC: 0x3012b4b4 HEAD: [NULL]
  27. CHAIN: 44024 LOC: 0x3012b4bc HEAD: [NULL]
  28. CHAIN: 44025 LOC: 0x3012b4c4 HEAD: [NULL]
  29. CHAIN: 44026 LOC: 0x3012b4cc HEAD: [28ff2b8c,2a7ef95c]
  30.     BH (0x28ff2b8c) file#: 2 rdba: 0x00803448 (2/13384) class: 26 ba: 0x28e50000
  31.       set: 3 blksize: 8192 bsi: 0 set-flg: 2 pwbcnt: 220
  32.       dbwrid: 0 obj: -1 objn: 0 tsn: 1 afn: 2
  33.       hash: [2a7ef95c,3012b4cc] lru: [26be9ef0,223f7990]
  34.       lru-flags:
  35.       ckptq: [NULL] fileq: [NULL] objq: [26be9f44,223f79e4]
  36.       st: XCURRENT md: NULL tch: 1
  37.       flags: gotten_in_current_mode block_written_once redo_since_read
  38.       LRBA: [0x0.0.0] HSCN: [0xffff.ffffffff] HSUB: [1]
  39.       buffer tsn: 1 rdba: 0x00803448 (2/13384)
  40.       scn: 0x0000.00080914 seq: 0x06 flg: 0x04 tail: 0x09140206
  41.       frmt: 0x02 chkval: 0xa80a type: 0x02=KTU UNDO BLOCK
  42. Hex dump of block: st=0, typ_found=1
  43. Dump of memory from 0x28E50000 to 0x28E52000

  44. --以上是针对改行进行更新且查询所观察到的trace文件
  45. --为什么lru-flags一行没有值呢?我们可以观察flags和type来了解,以下只是本人的判断,不是文档中的东西,所以可能需要更多的经验来说明此事,不过就本人目前的经验来说只能依据这两点,望见谅。还请有识之士指点。
  46. --flags说明这个块已经开始被写,因为再跟新的同时我进行了读操作,那么他还被构造了一直性读(即以上信息中的redo_since_read)
  47. --那么我们可以了解到针对不同的操作lru-flags的结果是不同的,本人先把实验进行到这里,也算提供了一点方法,如有想深入了解的人可按此法继续了解,声明一下,你要相信你所反复实验的结果。另外在通过ba值我们也可以确定我们所针对的操作行是否一致:

  48. --以ba=28e50000为例:

  49. --我在上边的实验过程中根据下面观察到tch变化大的那个ba值,我的操作又是直接针对rowid的,那么就可以确定你所操作(rowid)的行是否是你操作后得到的结果。

  50. ADDR     HLADDR     LRU_FLAG    DBARFIL     DBABLK BA              TCH
  51. -------- -------- ---------- ---------- ---------- -------- ----------
  52. B6E01358 300CDFE8          1          4         60 24750000          1
  53. B6E0129C 300CDFE8          1          4         60 28E50000         39
  54. B6E011E0 300CDFE8          1          4         60 24A36000          1
  55. B6E01124 300CDFE8          1          4         60 25234000          1
  56. B6E01358 300F3920          1          4         62 28E4C000          1
  57. B6E01358 3010AB4C          1          4         59 28E52000          2
  58. B6E0129C 3010AB4C          1          4         59 28E5C000          1
  59. B6E01358 30119258          1          4         64 28E48000          1
  60. B6E01358 30130484          1          4         61 28E4E000          1
  61. B6E01358 30155DBC          1          4         63 28E4A000          9


  62. --感谢刘大师的指点,另外通过这段寻找真想的过程我也可以间接的了解其他自己未知的知识。另外本人技术水平有限,可能有大师有更加深入的了解,望不吝赐教。
复制代码
声明一点本人绝不是恶意刷帖,因字符限制,此乃无奈之举,望见谅。

补充一点有关一些x$bh详细说明在刘大师blog中有介绍下面附网址:

http://www.askmaclean.com/archives/oracle%E5%86%85%E9%83%A8%E8%A7%86%E5%9B%BExbh.html

回复 只看该作者 道具 举报

18#
发表于 2013-1-17 08:01:46
check.ora 发表于 2013-1-16 21:42
声明一点本人绝不是恶意刷帖,因字符限制,此乃无奈之举,望见谅。

补充一点有关一些x$bh详细说明在刘大师 ...

稀里糊涂花了几个小时的也跟着做了一遍,挺好的方法,我用
alter system flush buffer_cache;
来清空 buffer cache.

另外有个问题,你说的type在哪里啊?没有找到。

回复 只看该作者 道具 举报

19#
发表于 2013-1-17 09:28:20
本帖最后由 check.ora 于 2013-1-17 09:33 编辑
wind 发表于 2013-1-17 08:01
稀里糊涂花了几个小时的也跟着做了一遍,挺好的方法,我用
alter system flush buffer_cache;
来清空 buf ...


一下面这段代码为例子
  1. end_of_block_dump

  2. CHAIN: 44021 LOC: 0x3012b4a4 HEAD: [NULL]

  3. CHAIN: 44022 LOC: 0x3012b4ac HEAD: [NULL]

  4. CHAIN: 44023 LOC: 0x3012b4b4 HEAD: [NULL]

  5. CHAIN: 44024 LOC: 0x3012b4bc HEAD: [NULL]

  6. CHAIN: 44025 LOC: 0x3012b4c4 HEAD: [NULL]

  7. CHAIN: 44026 LOC: 0x3012b4cc HEAD: [28ff2b8c,2a7ef95c]

  8.    BH (0x28ff2b8c) file#: 2 rdba: 0x00803448 (2/13384) class: 26 ba: 0x28e50000

  9.       set: 3 blksize: 8192 bsi: 0 set-flg: 2 pwbcnt: 220

  10.       dbwrid: 0 obj: -1 objn: 0 tsn: 1 afn: 2

  11.       hash: [2a7ef95c,3012b4cc] lru: [26be9ef0,223f7990]

  12.       lru-flags:

  13.       ckptq: [NULL] fileq: [NULL] objq: [26be9f44,223f79e4]

  14.       st: XCURRENT md: NULL tch: 1

  15.       flags: gotten_in_current_mode block_written_once redo_since_read

  16.       LRBA: [0x0.0.0] HSCN: [0xffff.ffffffff] HSUB: [1]

  17.       buffer tsn: 1 rdba: 0x00803448 (2/13384)

  18.       scn: 0x0000.00080914 seq: 0x06 flg: 0x04 tail: 0x09140206

  19.       frmt: 0x02 chkval: 0xa80a [color=Red]type: 0x02=KTU UNDO BLOCK[/color]
  20. Hex dump of block: st=0, typ_found=1

  21. Dump of memory from 0x28E50000 to 0x28E52000

复制代码
标红的地方就是,即:type: 0x02=KTU UNDO BLOCK(刚发现貌似在code的世界里都是黑白色,所以特此标出)

回复 只看该作者 道具 举报

20#
发表于 2013-1-17 13:13:48
本帖最后由 wind 于 2013-1-17 13:16 编辑
check.ora 发表于 2013-1-17 09:28
一下面这段代码为例子标红的地方就是,即:type: 0x02=KTU UNDO BLOCK(刚发现貌似在code的世界里都是黑 ...


请看这个链接。说这个lru_flag不是太有用。

http://www.oracle-training.cc/oracle_tips_view_columns.htm

The LRU_FLAG column of X$BH contains information about LRU state of a block in the buffer cache, but this column does not reveal much useful information.

还有你说的type和这个lru_flag结合来看,我看不到啥。anyway, 收藏这个帖子了。多谢。

回复 只看该作者 道具 举报

21#
发表于 2013-1-17 14:17:06
本帖最后由 check.ora 于 2013-1-17 14:19 编辑
wind 发表于 2013-1-17 13:13
请看这个链接。说这个lru_flag不是太有用。

http://www.oracle-training.cc/oracle_tips_view_columns.h ...


这只是我在研究buffer cache时所遇到的一点不理解,所以才有了之后的“较真”,我享受在寻真过程中带给我的收获,感谢你的分享,也希望此贴能为以后能用得到的地方提供帮助。

回复 只看该作者 道具 举报

22#
发表于 2013-1-17 18:05:26
学习的步骤就是这样的, 愿意看文档+愿意做实验=》进步

持续 3-4年的进步=》高手

持续 10年以上的进步=》资深大师

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-12-26 03:47 , Processed in 0.060895 second(s), 22 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569