ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:21.21KB ,
资源ID:22666125      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22666125.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Oracle深度学习笔记SQL基线Word格式.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Oracle深度学习笔记SQL基线Word格式.docx

1、计划基线由一个或多个已经被接受到的SQL查询执行计划组成。运行一个查询,且该查询已经存在计划基线,优化器就会优先考虑计划基线中的执行计划。3. 测试用SQL_ID创建基线tpccTOADDB create table t as select * from all_objects;Table created. create index t_idx on t(object_name);Index created.收集统计信息: exec dbms_stats.gather_table_stats(user,t,cascade=true);PL/SQL procedure successfully

2、completed. select /*test_01*/object_id,object_type from t where object_name =DUAL; OBJECT_ID OBJECT_TYPE- - 142 TABLE 143 SYNONYM查找所执行SQL的ID select sql_id,sql_text from v$sql where sql_text like select /*test_01*/%SQL_ID-SQL_TEXT-farns9fxz7dumselect /*test_01*/object_id,object_type from t where obje

3、ct_name =SQL计划基线的管理,需要拥有administer sql management object权限。查看已有基线:SQLselect sql_handle,plan_name from dba_sql_plan_baselines where sql_text like no rows selected使用dbms_spm.load_plans_from_cursor_cache加载sql_id对应的SQL的执行计划。declare x pls_integer;begin x := dbms_spm.load_plans_from_cursor_cache(sql_id =

4、farns9fxz7dum);end; /再查看创建的基线如下: select sql_handle,plan_name from dba_sql_plan_baselines where sql_text like SQL_HANDLEPLAN_NAMESQL_718c094fd7a20a4dSQL_PLAN_733099zbu42kda0b930be如此就为需要创建计划基线的SQL创建了计划基线用sql文本来创建计划基线如下select object_id from t where object_name = OBJECT_ID- 142 143 begin= dbms_spm.load_

5、plans_from_cursor_cache( attribute_name =SQL_TEXT, attribute_value =select object_id from t% dbms_output.put_line(x); end;查看如下:SQL_b7598beb2a522d9dSQL_PLAN_bfqcbxcp54bcxa0b930be显示一条SQL的执行计划我们可以使用dbms_xplan.display_sql_plan_baseline来完成,如下: select sql_handlefrom dba_sql_plan_baselineswhere plan_name =

6、 SQL_PLAN_bfqcbxcp54bcxa0b930be/ select * from table(dbms_xplan.display_sql_plan_baseline(sql_handle =SQL_b7598beb2a522d9d);PLAN_TABLE_OUTPUT-SQL handle: SQL_b7598beb2a522d9dSQL text: select object_id from t where object_name = Plan name: SQL_PLAN_bfqcbxcp54bcxa0b930be Plan id: 2696491198Enabled: YE

7、S Fixed: NO Accepted: YES Origin: MANUAL-LOADPlan rows: From dictionaryPlan hash value: 767293772-| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | 0 | SELECT STATEMENT | | | | 4 (100)| | 1 | TABLE ACCESS BY INDEX ROWID BATCHED| T | 2 | 60 | 4 (0)| 00:00:01 |* 2 | INDEX RANGE SCAN | T_IDX

8、 | 2 | | 3 (0)| 00:Predicate Information (identified by operation id):- 2 - access(OBJECT_NAME=)26 rows selected.也可以输入plan_name,或是两者都输入。还有一个参数为format,来用决定所显示计划的详细信息,其值可以为baice,typical或all。4. 创建一个AWR基线通过如下命令来实现。dbms_workload_repository.create_baseline( start_snap_id = xxxxx, end_snap_id = yyyy, basel

9、ine_name =temp_baseline_name快照点,我们可以使用dba_hist_snapshot视图查找如下: select snap_id from dba_hist_snapshot; SNAP_ID 78 79 92 93 82 95 76 77 86 83 84 85 88 89 94 73 80 81 87 90 91 74 7523 rows selected.然后执行如下,创建AWR基线: dbms_workload_repository.create_baseline(start_snap_id =91,end_snap_id = 92,baseline_name

10、 =创建一个SQL调优集。dbms_sqltune.create_sqlset( sqlset_name =temp_sqlset description =sql tune set from awr从awr基线中找到占较高资源的查询来填充SQL调优集。base_cur dbms_sqltune.sqlset_cursor;open base_cur forselect value(x)from table(dbms_sqltune.select_workload_repository( ,null,null,elapsed_time null,null,null,15) x;dbms_sql

11、tune.load_sqlset( populate_cursor = base_cur);为SQL调优集中的每一个查询SQL创建计划基线。x pls_integer;x := dbms_spm.load_plans_from_sqlset( sqlset_name =这样就完成了调优集中查询SQL的计划基线的创建。5. SQL基线综合性使用很多的时候,优化器只选择一种执行计划,我们尝试使用hint改变这个执行计划,且执行效率有很较大的提升。但是通常是不能够改变产品系统里面的SQL代码的。在这种情况下,会用到SQL 计划基线,在不改变SQL的情况下让优化器选择我们加个hint后的执行计划。使用

12、SQL计划基线是一个不错的选择。测试如下:准备表 drop table t purge;Table dropped.variable name varchar2(30)exec :name := 执行SQL select count(*) from t where object_name = :name; COUNT(*) 2常看刚执行SQL的SQL_ID Select sql_id, child_number from v$sql where sql_text like select count(*) from t where object_name = :nameSQL_ID CHILD_

13、NUMBER- -astw879f24195 0显示执行计划: select * from table(dbms_xplan.display_cursor(sql_id=astw879f24195SQL_ID astw879f24195, child number 0-name 293504097-| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | 0 | SELECT STATEMENT | | | | 3 (100)| | 1 | SORT AGGREGATE | | 1 | 25 | | |* 2 | INDEX RA

14、NGE SCAN| T_IDX | 2 | 50 | 3 (0)| 00:=:NAME)19 rows selected.带HINT执行 select /*+full(t)*/ count(*) from t where object_name = :查看执行计划的SQL_ID如下: select sql_id, child_number from v$sql where sql_text like select /*+full(t)*/ count(*) from t where object_name = :9rsq8360s27zu 0查看执行计划:9rsq8360s27zuSQL_ID 9rsq8360s27zu, child number 0 2966233522| 0 | SELECT STATEMENT | | | | 422 (100)| |* 2 | TABLE ACCESS FULL| T | 2 | 50 | 422 (1)| 00: 2 - filter(然后改变第一个执行SQL(未带HINT)的执行计划,让其走使用hint后的SQL“9rsq8360s27zu”的执行计划,也就是让它走全表扫描创建两条SQL计划基线 Select sql_id,hash_value,child_number from v

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1