您的位置:首页 > 其它

PX Deq Credit: send blkd 等待事件

2015-10-19 15:34 246 查看
这个等待事件并不是oracle常见的等待之一。

--查看该等待事件属性

SELECT * FROM V$EVENT_NAME A WHERE A.NAME = 'PX Deq Credit: send blkd';

--等待时间次数等信息

SELECT a.* FROM V$SYSTEM_EVENT A WHERE A.EVENT = 'PX Deq Credit: send blkd';

--正在等待此类等待事件的sql

SELECT B.SID, B.SQL_ID, C.*, A.*

FROM V$SESSION_WAIT A, V$SESSION B, V$SQLAREA C

WHERE A.EVENT = 'PX Deq Credit: send blkd'

AND A.SID = B.SID

AND B.SQL_ID = C.SQL_ID

order by b.sql_id;

--查看这些sql的执行计划

select * from v$sql_plan a where a.sql_id = 'fj8m5hpfn7m00';

select dbms_xplan.display_cursor('fj8m5hpfn7m00') from dual;

select * from table(dbms_xplan.display_awr('fj8m5hpfn7m00'));

这些sql的一个共性就是并行执行,由于对这个等待事件不了解,找了一些资料也多描述与并行执行有关。

oracle的并行度的优先级:Hint>alter session force parallel>表和索引上的设定>系统参数。

这些sql都没有使用hint,对于alter session 查看了近期alert_log并没有发现,那么问题就往下定位到表和索引的degree上了

--查看表和索引的并行度

select distinct a.degree from dba_tables a where a.owner = '????';

select 'alter index '||c.owner||'.'||c.index_name||' parallel (degree 1);' from dba_indexes c where c.owner in (

select distinct a.owner

from dba_indexes a

where a.degree <> 1

and a.owner in (select username from dba_users b where b.user_id >= 57))

and c.degree <> 1

and c.index_type = 'NORMAL';

好了,问题就出在索引上,好多索引的并行度不是1,问题要追溯到几天前重建索引的时间用了并行

alter index index_name rebuild parallel 5;

原来重建索引时使用的并发度,在索引上自动也设置了该索引的并发度

select degree,a.* from user_indexes a

--查看系统的并行功能

select * from v$option where upper(parameter) like 'PARALLEL%';

--查看使用并行的进程

select * from v$px_session;

--查看与oracle 并行有关的参数,一搬不建议修改这些参数

ect * from v$spparameter a where upper(a.name) like '%PARALLEL%'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: