执行计划的查看

explain plan for select * from scott.emp; 
select * from table(dbms_xplan.display)  --要配合 explain 使用

--查询最近执行过的sql 的执行计划,在sqlplus 在执行 前提是目标sql 还有shared pool 中
select * from table(dbms_xplan.display_cursor(null,null,'advanced'));
select * from table(dbms_xplan.display_cursor(null,null,'all'));

--查指定sql 的执行计划,前提是目标sql 还有shared pool 中,在sqlplus 在执行
select sql_text,sql_id,hash_value from v$SQL where sql_text like '%select * from scott.emp;%';
select * from table(dbms_xplan.display_cursor('b61wnr1gd72gv',0,'advanced'));
select * from table(dbms_xplan.display_cursor('b61wnr1gd72gv',0,'all'));


--手动收集 AWR 报告 
call dbms_workload_repository.create_snapshot();

--清空 shared pool  
alter  system flush shared_pool;

--select * from scott.emp;  查询已不在 shared pool 中了
select sql_text,sql_id,hash_value,child_number from v$SQL where sql_text like '%select * from scott.emp;%';


--可以用如下方法查目录SQL 的历史 执行计划,前提是要知道 sql_id 
select * from table(dbms_xplan.display_awr('b61wnr1gd72gv'));


--10046 事件, 可以 spool 出来
oradebug setmypid;
oradebug event 10046 trace name context forever,level 12;
select *from scott.dept;
oradebug tracefile_name;  --找到路径及名称 
oradebug event 10046 trace name context off;


--在cmd 命令中 用 tkprof 格式化
tkprof d:appadministratordiag
dbmsorclorcl	raceorcl_ora_9396.trc f:emp.txt


-- 安装 xplan 包后查看执行计划,可以显示出执行计划的执行顺序,而不是肉眼去观察
1、执行目标sql select puid,prid,puname,pucred from scott.provuser where puid=100234
2、查询目标sql 的 sql_id,child_number
select sql_text,sql_id,hash_value,child_number from v$SQL where sql_text like '%puid,prid,puname%';
select sql_text,sql_id,hash_value,child_number from v$sql order by last_load_time desc 

--v$sql 中有child_number    v$sqlarea 中无
select sql_text,sql_id,hash_value from v$SQLarea where sql_text like '%puid,prid,puname%';
select sql_text,sql_id,hash_value from v$SQLarea order by last_load_time desc 

--3、查看执行计划
select * from table(xplan.display_cursor('0va10m19a4xaz',0,'advanced'))



select ename,sal from scott.emp a where deptno in (select deptno from scott.dept b where loc='NEW YORK')
select * from v$sql order by last_load_time desc 
select * from table(xplan.display_cursor('gm28940mxxnst',0,'all'))
原文地址:https://www.cnblogs.com/tianmingt/p/4366056.html