- 最后登录
- 2014-9-10
- 在线时间
- 34 小时
- 威望
- 62
- 金钱
- 508
- 注册时间
- 2012-1-30
- 阅读权限
- 50
- 帖子
- 53
- 精华
- 1
- 积分
- 62
- UID
- 187
|
1#
发表于 2012-7-26 14:25:48
|
查看: 3230 |
回复: 0
使用sqlpfile方式固定一条复杂的SQL语句的执行计划,但是发现SQL语句不按照SQLPROFILE规定的方式走。。。
固定的方法:
sqlplus窗口
SQL>explain plan for <sql statement>;
SQL>select * from table(dbms_xplan.display(null,null,'outline'));
获取输出内容的Outline Data部分,修改这部分为SQLPROF_ATTR接受的格式,然后使用DBMS_SQLTUNE.IMPORT_SQL_PROFILE导入。
导入后从V$SQL视图中可以看到新产生的cursor,sql_profile字段是前面创建的sqlprofile值,但是v$sql_plan检查cursor对应的执行计划发现和profile的执行计划不一致,可能是什么原因?
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bi
PL/SQL Release 10.2.0.3.0 - Production
CORE 10.2.0.3.0 Production
TNS for IBM/AIX RISC System/6000: Version 10.2.0.3.0 - Productio
NLSRTL Version 10.2.0.3.0 - Production |
|