• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

oracle等待事件3构造一个Direct Path write等待事件和构造一个Log File Sync等待事件

mysql 搞代码 4年前 (2022-01-09) 19次浏览 已收录 0个评论

第一篇《oracle等待事件1分别用表和索引上数据的访问来产生dbfilescatteredread等待事件》http://leonarding.blog.51cto.com/6045525/1105411第二篇《oracle等待

第一篇 《oracle等待事件1分别用表和索引上数据的访问来产生db file scattered read等待事件》
第二篇 《oracle等待事件2构造一个DB File Sequential Read等待事件和构造一个Direct Path Read等待事件》
第三篇 《oracle等待事件3构造一个Direct Path write等待事件和构造一个Log File Sync等待事件》

Dear All:
历经5天的oracle等待事件系列大功告成,不容易a多少个不眠之夜,多少次无尽猜想,在此做首打油诗留念

《2012终日有感》

壮志未酬oracle

夜点明灯苦用功

只为不白少年头

报答老师抱mm

五构造一个Direct Path write等待事件,等待事件需要在v$session_wait和10046 trace文件中显示出来,贴出整个演示过程。

Direct path write 等待事件:发生在“写入磁盘”的时候,因为写也是一种中间状态,只要是中间状态数据就没有必要共享给其他用户,所以这些数据也不会放在SGA中共享,从PGA中 -> 直接写入 -> 磁盘。

场景: append方式插入数据,这种方式插入数据的时候会跳过SGA的data_buffer_cache,直接插入数据文件,并且还不会扫描数据文件中的空闲空间直接插入到文件尾所以效率较高

当数据排序时候,如果PGA被装满,香港虚拟主机,就会被写入到磁盘的temp表空间里,美国服务器,因为排序的数据是中间状态也不会经过SGA,所以会产生“direct path write”等待事件

LEO1@LEO1> select table_name,index_name from user_indexes where table_name=’LEO1′; 利用leo1表

TABLE_NAME INDEX_NAME

—————————— ——————————————-

LEO1 IDX_LEO1

LEO1@LEO1> select count(*) from leo1; 有71959行记录

COUNT(*)

——————

71959

LEO1@LEO1> execute dbms_stats.gather_table_stats(ownname=>’LEO1′,tabname=>’LEO1′,cascade=>TRUE);

PL/SQL procedure successfully completed. 统计分析

v$session_wait视图中显示出来

LEO1@LEO1> set serveroutput on

LEO1@LEO1> create or replace procedure p4

as

begin

for i in 1..8

loop

insert /*+ append */ into leo1 select * from leo1;

rollback;

end loop;

dbms_output.put_line(‘successfully’);

end;

/

2 3 4 5 6 7 8 9 10 11

Procedure created.
创建存储过程p4循环8次,添加了append hint执行直接插入,在这个期间会发生“direct path write”等待事件

Append 注意事项

Append方式叫做直接路径加载,使用这种方式是因为oracle不会在扫描freelist链表中的空闲块,直接在高水线之后插入数据,所以速度比较快。

(1)append方式不记录redo,一旦在插入的过程中没有保存到磁盘或者发生掉电情况那么插入的数据不能恢复

(2)由于不在利用表的空闲空间,那么这种方式比较浪费存储空间,就是以空间换时间

(3)insert /*+ append */ into leo1 select * from leo1;会对这个表添加一个6级来2源gaodaima#com搞(代@码&网锁,意味着在没有commit/rollback前提下任何会话 insert update delete select 等操作都不允许,否则会报错

ORA-12838: cannot read/modify an object after modifying it in parallel

解释如下:


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:oracle等待事件3构造一个Direct Path write等待事件和构造一个Log File Sync等待事件

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址