- 最后登录
- 2019-12-25
- 在线时间
- 34 小时
- 威望
- 20
- 金钱
- 111
- 注册时间
- 2012-12-19
- 阅读权限
- 10
- 帖子
- 42
- 精华
- 1
- 积分
- 20
- UID
- 823
|
7#
发表于 2013-1-5 13:11:17
Maclean Liu(刘相兵 发表于 2013-1-4 22:20
请仔细按照我给出的步骤去做!!!
不好意思 上面的操作自以为然了。感谢刘大师耐心指点。
可是通过自己的实践又有了新的问题,感觉又迷糊了,下面是实验的步骤:
先确定了x$bh中ba列的整体格式- 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;
- LRU_FLAG BA
- ---------- --------
- 1 20A2C000
- 1 2158E000
- 1 230B2000
- 1 22596000
- 1 20CA8000
- 5 22992000
- 5 239DC000
- 5 22910000
- 9 239E8000
- 9 21704000
- 9 22170000
- 9 20992000
- 9 20D2E000
- 9 2208C000
- 9 23628000
- 9 21E68000
- 9 20DDA000
- 9 210F0000
- 9 221A4000
复制代码 然后用oradebug dump 文件(这次的操作绝对没错,列出文件名以证明没打开其他的文件)- SYS>oradebug tracefile_name
- /u01/oracle/admin/zip/udump/zip_ora_15287.trc
复制代码- [oracle@god ~]$ cd /u01/oracle/admin/zip/udump/
- [oracle@god udump]$ ls
- zip_ora_15204.trc zip_ora_15287.trc
- [oracle@god udump]$ ll -trh
- total 419M
- -rw-r----- 1 oracle oinstall 803 Jan 4 22:18 zip_ora_15204.trc
- -rw-r----- 1 oracle oinstall 418M Jan 5 10:49 zip_ora_15287.trc
- [oracle@god udump]$ vim zip_ora_15287.trc
复制代码 这里做了与第一步查询只不过没有进行行数的限制,结果集7千多行就不列举。
然后按照查询结果此trace文件中寻找答案。- SYS>select lru_flag,ba from x$bh where lru_flag=1 and rownum<5;
- LRU_FLAG BA
- ---------- --------
- 1 20A2C000
- 1 20CA8000
- 1 22596000
- 1 230B2000
- BH (0x20bf1f2c) file#: 2 rdba: 0x00800e37 (2/3639) class: 30 ba: 0x20a2c000
- set: 3 blksize: 8192 bsi: 0 set-flg: 0 pwbcnt: 0
- dbwrid: 0 obj: -1 objn: 0 tsn: 1 afn: 2
- hash: [3054e860,3054e860] lru: [20bf2190,227ebbd0]
- lru-flags: hot_buffer
- ckptq: [NULL] fileq: [NULL] objq: [20bf21e4,227ebc24]
- st: XCURRENT md: NULL tch: 1
- flags: gotten_in_current_mode block_written_once redo_since_read
- LRBA: [0x0.0.0] HSCN: [0xffff.ffffffff] HSUB: [1]
- buffer tsn: 1 rdba: 0x00800e37 (2/3639)
- scn: 0x0000.00129581 seq: 0x01 flg: 0x04 tail: 0x95810201
- frmt: 0x02 chkval: 0xa58a type: 0x02=KTU UNDO BLOCK
- Hex dump of block: st=0, typ_found=1
- Dump of memory from 0x20A2C000 to 0x20A2E000
- SYS>select lru_flag from x$bh where ba=upper('20a2c000');
- LRU_FLAG
- ----------
- 1
- ============================================================
- BH (0x20fe991c) file#: 2 rdba: 0x00800b78 (2/2936) class: 30 ba: 0x20ca6000
- set: 3 blksize: 8192 bsi: 0 set-flg: 0 pwbcnt: 0
- dbwrid: 0 obj: -1 objn: 0 tsn: 1 afn: 2
- hash: [305a25a8,305a25a8] lru: [223e6320,20be8bb0]
- lru-flags: hot_buffer
- ckptq: [NULL] fileq: [NULL] objq: [223e6374,20be8c04]
- st: XCURRENT md: NULL tch: 0
- flags: gotten_in_current_mode block_written_once redo_since_read
- LRBA: [0x0.0.0] HSCN: [0xffff.ffffffff] HSUB: [1]
- buffer tsn: 1 rdba: 0x00800b78 (2/2936)
- scn: 0x0000.00117a9e seq: 0x01 flg: 0x04 tail: 0x7a9e0201
- frmt: 0x02 chkval: 0x9284 type: 0x02=KTU UNDO BLOCK
- Hex dump of block: st=0, typ_found=1
- Dump of memory from 0x20CA6000 to 0x20CA8000
- SYS>select lru_flag from x$bh where ba=upper('20ca6000');
- LRU_FLAG
- ----------
- 9
复制代码 查找ba地址为20CA8000的但在trace文件中真实的地址却是20ca6000
疑问在于 LRU_FLAG标记值不同但在lru链上的位置都是在hot 这里就有些不理解了 从其他信息来看也看不出什么区别。
请刘大师指点。 |
|