sqltrpt 工具

针对 sql 优化 ,我们使用 sqltrpt 工具可以一气呵成,其中会使用到 dbms_sqltune.accept_sql_profile 

ACCEPT_SQL_PROFILE                 #接受及应用一个SQL_PROFILE执行计划给某条SQL


DBMS_SQLTUNE.ACCEPT_SQL_PROFILE (
   task_name    IN  VARCHAR2,                    -------------->执行优化的任务名
   object_id    IN  NUMBER   := NULL,           -------------->对象编号,一般不填
   name         IN  VARCHAR2 := NULL,              -------------->制定的sql_profile名称,如果不填则由系统指派
   description  IN  VARCHAR2 := NULL,               -------------->该执行计划的描述信息 
   category     IN  VARCHAR2 := NULL);             ------------->需要与该SESSION的sqltune_category参数相匹配
   task_owner   IN VARCHAR2  := NULL,             ------------->任务的所有者
   replace      IN BOOLEAN   := FALSE,             ------------->如果此sql_profile已存在,则决定是否替换,默认值为不替换
   force_match  IN BOOLEAN   := FALSE,           ------------->是否强制匹配此执行计划与所有HASH值相同的SQL,类似                                                                                                        CURSOR_SHARING参数的FORCE
   profile_type IN VARCHAR2  := REGULAR_PROFILE);   ------------->sql_profile的类型,默认为REGULAR_PROFILE,可修改为                                                                              PX_PROFILE,表示此执行计划变更为并行执行

 

 

使用 profile :

execute dbms_sqltune.accept_sql_profile(task_name => 'TASK_35330',task_owner => 'SYS', replace => TRUE);

execute dbms_sqltune.accept_sql_profile(task_name => 'TASK_35330',task_owner => 'SYS', replace => TRUE, profile_type =>DBMS_SQLTUNE.PX_PROFILE);

在sql 的执行计划里面我们可以看到以下信息 :

SQL profile SYS_SQLPROF_016c98ffe13c0001 used for this statement

同时我们可以在 dba_sql_profiles 里面查看profile 信息

Note
-----
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
   - dynamic sampling used for this statement (level=6)
   - automatic DOP: skipped because of IO calibrate statistics are missing
   - SQL profile SYS_SQLPROF_016c98ffe13c0001 used for this statement
87 rows selected


 

 

 

 

 

如果我们 不想要  profile 应用在sql 上,可以使用下面的方法进行drop

 exec dbms_sqltune.drop_sql_profile('SYS_SQLPROF_016c98ffe13c0001');

 

如果我们想再次应用profile 怎么办呢?再次执行 

execute dbms_sqltune.accept_sql_profile(task_name => 'TASK_35330',task_owner => 'SYS', replace => TRUE);

execute dbms_sqltune.accept_sql_profile(task_name => 'TASK_35330',task_owner => 'SYS', replace => TRUE, profile_type =>DBMS_SQLTUNE.PX_PROFILE);

 

但这时候profile 的name 已经改变 

Note
-----
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
   - dynamic sampling used for this statement (level=6)
   - automatic DOP: skipped because of IO calibrate statistics are missing
   - SQL profile SYS_SQLPROF_016c994c2b560002 used for this statement
87 rows selected

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

huangliang0703

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值