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

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

8

积分

1

好友

20

主题
1#
发表于 2013-3-13 10:10:44 | 查看: 5328| 回复: 5
小弟最近在优化一个大sql,在sql执行期间通过v$active_session_history视图查询到如下结果:
EVENT                                         CURRENT_OBJ#   COUNT(*)
--------------------------------------------- ------------ ----------
db file scattered read                               18548          1
db file sequential read                              22146          1
gc current block 2-way                               18524          2
db file sequential read                              18548          2
direct path write temp                               18524          2
gc current block 2-way                               18522          2
db file sequential read                              18550          3
                                                     18548          3
direct path read temp                                18522          5
gc cr multi block request                            18522          7
db file scattered read                               18550          7
gc cr grant 2-way                                    18548          7
db file scattered read                               18522          8
                                                     18550          9
db file scattered read                               18524         11
db file parallel read                                18524         11
db file sequential read                              18522         14
                                                     18522         15
db file parallel read                                18522         42
direct path read temp                            -40016301         50
                                                     18524         61
db file sequential read                          -40016301        329
db file scattered read                           -40016301        643
                                                    -40016301               2530

从查询结果中有如下两个疑问:
1.某些等待事件(db file  sequential /scattered read,direct path read temp)对应的current_obj#为-40016301(负数),负数是不是表示此等待事件并不针对特定的对象,但是对于db file sequencitial/scatterred这两个等待事件发生时必定是可以定位到某个对象 的,但是这里显示的current_obj#却为-40016301
2.查询结果中统计情况最多的既然是current_obj#为-40016301且等待事件为空,这种情况是表示oracle在采样时该sql并没有经历任何等待是这个意思吗?

希望各位不吝赐教!
2#
发表于 2013-3-13 11:00:21
10gr2官方定义该字段 current_obj#  映射关系只针对几种等待类:application,cluster,concurrency,userI/O, 对应v$session.row_wait_obj#;为什么为负数,还真不懂。坐等高人解释

回复 只看该作者 道具 举报

3#
发表于 2013-3-13 16:27:45
select event,p1,p2,p3,CURRENT_FILE#,CURRENT_BLOCK# ,CURRENT_OBJ#   from  v$active_session_history
where CURRENT_OBJ# <-10 and rownum<10;


先定位一下 这个 file、block对应的 对象 是否能确认。

PS; 任何发帖 先说版本!! 离开版本,一切都是空谈

回复 只看该作者 道具 举报

4#
发表于 2013-3-13 17:16:23
Maclean Liu(刘相兵 发表于 2013-3-13 16:27
select event,p1,p2,p3,CURRENT_FILE#,CURRENT_BLOCK# ,CURRENT_OBJ#   from  v$active_session_history
w ...

感谢刘大,补充信息如下:
SQL> select * from v$version;(OS:aix5.3)

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
PL/SQL Release 10.2.0.4.0 - Production
CORE    10.2.0.4.0      Production
TNS for IBM/AIX RISC System/6000: Version 10.2.0.4.0 - Productio
NLSRTL Version 10.2.0.4.0 - Production


SQL> select event,p1,p2,p3,CURRENT_FILE#,CURRENT_BLOCK# ,CURRENT_OBJ#   from  v$active_session_history
  2  where CURRENT_OBJ# <-10 and rownum<10;

EVENT                                                                    P1         P2         P3 CURRENT_FILE# CURRENT_BLOCK# CURRENT_OBJ#
---------------------------------------------------------------- ---------- ---------- ---------- ------------- -------------- ------------
db file sequential read                                                 205    2199759          1           205        2199759    -40016301
db file sequential read                                                 205    2199759          1           205        2199759    -40016301
db file sequential read                                                 205    2199759          1           205        2199759    -40016301
db file sequential read                                                 205    2199759          1           205        2199759    -40016301
db file sequential read                                                 205    2199759          1           205        2199759    -40016301
db file sequential read                                                 205    2199759          1           205        2199759    -40016301
db file sequential read                                                 205    2199759          1           205        2199759    -40016301
db file sequential read                                                 205    2199759          1           205        2199759    -40016301
db file sequential read                                                 205    2199759          1           205        2199759    -40016301

9 rows selected.

SQL> select segment_name from dba_extents where file_id=205 and 2199759 between block_id and block_id+blocks-1;

no rows selected

发现当current_obj#为负数时,通过p1,p2参数查不到任何对象! 继续求教我上面提出的两个问题!

回复 只看该作者 道具 举报

5#
发表于 2013-3-13 17:21:56
我想通了,谢谢刘大。。 读的书临时文件里面的数据库。。 当前生产库中最大数据文件号为113,而临时文件有8个。db_files参数为200,也就是说file_id=205是临时文件中的一个。。
已有 1 人评分威望 理由
Maclean Liu(刘相兵 + 8 很给力!

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

回复 只看该作者 道具 举报

6#
发表于 2013-3-13 19:17:39
bj-jn 发表于 2013-3-13 17:21
我想通了,谢谢刘大。。 读的书临时文件里面的数据库。。 当前生产库中最大数据文件号为113,而临时文件有8 ...

好的 结贴有奖。

回复 只看该作者 道具 举报

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

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

GMT+8, 2024-6-15 13:21 , Processed in 0.049080 second(s), 22 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

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