Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

351

积分

0

好友

8

主题
1#
发表于 2012-5-16 14:36:44 | 查看: 4579| 回复: 4
1.一开始以为sql profile是通过sql的hash value来识别语句的,但是发现并不是这样的:

SQL> SELECT *
  2    FROM TEST
  3   WHERE status = 'VALID';
已选择72731行。

执行计划
----------------------------------------------------------
Plan hash value: 1357081020
--------------------------------------------------------------------------
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |      |  7252K|   670M|   306   (8)| 00:00:04 |
|*  1 |  TABLE ACCESS FULL| TEST |  7252K|   670M|   306   (8)| 00:00:04 |
--------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
   1 - filter("STATUS"='VALID')
Note
-----
   - SQL profile "SYS_SQLPROF_013755d4bbfe0000" used for this statement

SQL> select * from test where status = 'VALID' ;
已选择72731行。

执行计划
----------------------------------------------------------
Plan hash value: 1357081020
--------------------------------------------------------------------------
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |      |  7252K|   670M|   306   (8)| 00:00:04 |
|*  1 |  TABLE ACCESS FULL| TEST |  7252K|   670M|   306   (8)| 00:00:04 |
--------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
   1 - filter("STATUS"='VALID')
Note
-----
   - SQL profile "SYS_SQLPROF_013755d4bbfe0000" used for this statement

上面这两条语句都用到了sql profile,但是明显它们的hash value是不一样的。

2.sql profile什么时候会变无效,是否和执行计划一样,当sql语句依赖的对象发生ddl时候就无效?
PS:刚刚试验了一把,发现在test上执行ddl语句添加一列,此时执行计划会变无效,但是sql profile还是可以用。

[ 本帖最后由 gdpr-dba 于 2012-5-16 14:51 编辑 ]
2#
发表于 2012-5-16 14:39:28
执行计划 请用 code 模式
  1. 我是 code 模式
复制代码

回复 只看该作者 道具 举报

3#
发表于 2012-5-16 14:40:26
好的,下次会改正。

回复 只看该作者 道具 举报

4#
发表于 2012-5-16 17:31:49
sql profile有两种使用方式
1
使用sql tuning advisor自动创建
以sql_id为识别,你查一下两个sql的sql id是否一致就可以了

2
使用dmbs_sqltune.import_tuning_task手工创建
dbms_sqltune.import_sql_profile(force_match=> true|false);
查看force_match值是否为true

回复 只看该作者 道具 举报

5#
发表于 2012-5-17 08:51:47
刘大帮忙看看,谢谢。

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-12-26 02:22 , Processed in 0.050308 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569