在测试环境TRUNCATE一张按天分区的大表,数据量大概30G,速度非常慢,大概需要半个小时,检查发现等待的是log file switch事件。本案例数据库版本为11.2.0.4.0,操作系统为OEL 6.5。
SQL> select sql_id,OSUSER,MACHINE,TERMINAL,PROGRAM,EVENT,STATE from v$session where username='CHGSHS';
SQL_ID EVENT STATE
------------- ---------------------------------------- ----------
74jc7bvw5p1fg log file switch (checkpoint incomplete) WAITING
SQL> select SQL_TEXT from v$sqltext where sql_id='74jc7bvw5p1fg';
SQL_TEXT
----------------------------------------------------------------
truncate table ORD_ORD_BSC_M
过一会再次查询,等待事件变成了local write wait。
SQL> select sql_id,OSUSER,MACHINE,TERMINAL,PROGRAM,EVENT,STATE from v$session where username='CHGSHS';
SQL_ID EVENT STATE
------------- ---------------------------------------- ----------
74jc7bvw5p1fg local w