oracle logfile sync,oracle等待事件3构造一个DirectPathwrite等待事件和构造一个LogFileSync等待事件...
第一篇《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級鎖,意味著在沒有commit/rollback前提下任何會話 insert update delete select 等操作都不允許,否則會報錯
ORA-12838: cannot read/modify an object after modifying it in parallel
解釋如下:
總結
以上是生活随笔為你收集整理的oracle logfile sync,oracle等待事件3构造一个DirectPathwrite等待事件和构造一个LogFileSync等待事件...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: springboot使用mybatis_
- 下一篇: echo添加换行 linux_在 Lin