暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

性能优化之等待事件direct path write的解决方法

Oracle微学堂 2017-11-29
2092
class
direct path write

1.从PGA写入数据文件,一个会话可以发布多个写入请求和连续的处理。


2.直接写入可以按同步或异步方式执行,取决于平台和DISK_ASYNC_IO参数的值。


3.通常用于在数据加载(APPEND提示、CTAS-CREATE TABLE AS SELECT)、并行DML操作时写入到临时段。


4.在使用异步IO时,direct path write事件产生的等待时间不准确,所以通过v$sesstat视图来获得直接写入次数来评估该事件的影响情况:

SELECT a.NAME,
 b.sid,   b.VALUE,
 round((SYSDATE - c.logon_time) * 24) hours_connected
FROM v$statname a, v$sesstat b, v$session c
WHERE a.statistic# = b.statistic# AND b.sid = c.sid
AND b.VALUE > 0 AND a.NAME = 'physical writes direct'


5.参数说明:

  事件号:213

  事件名:direct path write  

  参数一:要写入的绝对文件号file number,可发现所进行的操作性质(如:排序/并行操作)

  参数二:起始块号first dba

  参数三:块数block cnt,可发现直接写入IO的大小

由参数P1与P2推得访问的数据对象:

select s.segment_name, s.partition_name
from dba_extents s
where <P2的值> between s.block_id and (s.block_id + s.blocks -1) and s.file_id = <P1的值>

注:

>> 1. 如果是Temp文件,则表示该会话正在写入临时表空间,查明使用临时段的类型,有助于了解会话所做的事情。

SELECT DISTINCT decode(t.ktssosegt,
     1,'SORT',
     2,'HASH',      3,'DATA',          4,'INDEX',
     5,'LOB_DATA',
     6,'LOB_INDEX',
     'UNDEFINED')
FROM sys.x$ktsso t
WHERE t.inst_id = userenv('instance') AND
 t.kssoses = <当前session地址> AND
 t.ktssosno = <serial#>

>> 2. 如果是数据文件,则可能正在执行一项直接路径加载操作,通过P1值确定数据文件的名称:

select s.NAME from v$datafile s where s.FILE# = <P1的值>
union all
select a.name
from v$tempfile a, v$parameter b
where b.NAME = 'db_files'
 and a.FILE# + b.VALUE = <P1的值>


6.等待时间:无超时

扫描二维码关注我的微学堂

搜索刘老师微信号:Rman-2014,备注“Oracle学习与咨询”,即可添加好友;或者扫描下面二维码,关注我的“微学堂”公众号,了解最新OCP认证动态、题库及答案解析、培训机构及讲师介绍、课堂授课内容等。每天还有一篇技术文章发布哦!



最后修改时间:2019-12-20 16:37:31
文章转载自Oracle微学堂,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论