首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Oracle SQL 性能调优:使用SqlPatch固定执行计划(二)19c

Oracle SQL 性能调优:使用SqlPatch固定执行计划(二)19c

作者头像
SQLplusDB
发布2022-08-19 20:17:31
发布2022-08-19 20:17:31
1.2K0
举报

编者按:

本文作者系Scott(中文名陈晓辉),现任大连华信资深分析师 ,ORACLE数据库专家,曾就职于甲骨文中国。个人主页:segmentfault.com/u/db_perf ,经其本人授权发布。

今天在19c上又做了一次SqlPatch,发现上次写的在11gR2的方法总是报错,于是又看了19c的Online Documents。更新了一下SqlPatch的做成方法。

Oracle SQL 性能调优:使用SqlPatch固定执行计划(一)

  1. 做成TEST用户和Table,Index。
代码语言:javascript
复制
 SQL> grant connect,resource,unlimited tablespace to test3 identified by test3;

 権限付与が成功しました。

 SQL> grant administer sql management object to test3;

 権限付与が成功しました。

 SQL> conn test3/test3@localhost:1521/pdb
 接続されました。
 SQL> create table tab2(c1 number, c2 number, c3 varchar2(10));

 表が作成されました。

 SQL> declare
   a number;
 begin
   a := 1;
   for i in 1 .. 50 loop
 for j in 1 .. 100 loop
   insert into tab2 values(a,j,'a');
   commit;
   a := a+1;
 end loop;
   end loop;
 end;
 /

 PL/SQLプロシージャが正常に完了しました。

 SQL> create index ind2_2 on tab2(c2);

 索引が作成されました。

2. 做成SQLPATCH。

代码语言:javascript
复制
SQL> var cnt varchar2(200);
SQL> exec :cnt := DBMS_SQLDIAG.CREATE_SQL_PATCH (sql_text => TO_CLOB('select * from tab2 where c2=1'),hint_text => TO_CLOB('INDEX_RS_ASC(@"SEL$1" "TAB2"@"SEL$1" ("TAB2"."C2"))'));

PL/SQLプロシージャが正常に完了しました。
  1. 验证SQLPATCH。
代码语言:javascript
复制
SQL> set autot traceonly exp
SQL> set lin 120 pages 999
SQL> select * from tab2 where c2=1;

実行計画
----------------------------------------------------------
Plan hash value: 616764305

----------------------------------------------------------------------------------------------
| Id  | Operation   | Name   | Rows  | Bytes | Cost (%CPU)| Time |
----------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT||50 |  1650 |11   (0)| 00:00:01 |
|   1 |  TABLE ACCESS BY INDEX ROWID BATCHED| TAB2   |50 |  1650 |11   (0)| 00:00:01 |
|*  2 |   INDEX RANGE SCAN  | IND2_2 |50 |   | 1   (0)| 00:00:01 |
----------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

2 - access("C2"=1)

Note
-----
- dynamic statistics used: dynamic sampling (level=2)
- SQL patch "SYS_SQLPTCH_0178349b7d430005" used for this statement
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SQL和数据库技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档