导航菜单

【DB笔试面试608】在Oracle中,如何使用STA来生成SQL Profile?

在2天前调用的app2,我想分享一下吗?主题部分

在Oracle中,如何使用STA生成SQL配置文件?

?回答部分

在STA用于优化语句之后,STA分析语句,采用最优优化策略,并给出优化的查询计划。可以根据STA的建议重写该语句。但是,在某些情况下,您可能无法重写语句(例如,在生产环境中,SQL语句位于包中)。此时,您可以使用Sql语句的查询计划,并且不会使用现有的相关统计信息,而是使用配置文件策略生成新的查询计划。

第一步:为用户分配权限

第2步:创建并执行优化任务

或者您可以使用sqlid生成优化任务,如下所示:

第3步:查看优化建议

您可以在此处看到优化提议中提供了新的查询计划。现在,我们决定接受这个建议而不是重写声明。

第4步:接受个人资料

此处使用DBMS_SQLTUNE包的另一个功能:ACCEPT_SQL_PROFILE。其中,参数task_name是我们创建的优化建议任务的名称,名称是配置文件的名称,可以是任何合法名称。除了这个函数还有其他函数,以下是这个函数的原型:

描述是简档的描述; task_owner是优化建议任务的所有者;当replace为TRUE时,如果配置文件已经存在,则将其替换;当force_match为TURE时,表示匹配是强制的,即强制绑定变量,系统参数cursor_sharing类似于FORCE。当它为FALSE时,类似于cursor_sharing设置为EXACT时,即它是完全匹配。

声明,STA给出了优化建议,但你不敢轻率地实施它给出的建议(毕竟,它只是一台机器,你不能完全信任它),你可以创建一个带有特殊CATEGORY的配置文件,然后你自己在会话中,SQLTUNE_CATEGORY被定义为此特殊CATEGORY,因此您可以在不影响生产环境的情况下查看优化建议的实际效果。

此外,您可以使用视图DBA_SQL_PROFILES查看已创建的配置文件。

第5步:查看配置文件的效果

从NOTE部分可以看出,该语句使用配置文件中的数据来创建新的查询计划。查询计划中还有一些其他信息,表明该语句使用“SYS_SQLPROF_0154e728ad3f0000”配置文件,而不是基于对象统计信息生成的查询计划。

但是上面的方法主要依赖于sql tuning advisor。如果它无法生成所需的执行计划,您还可以手动通过sql配置文件添加提示。复杂的SQL提示可以由脚本coe_xfr_sql_profile.sql生成。原始语句的大纲数据和提示语句的大纲数据,然后替换相应的SYS.SQLPROF_ATTR,最后执行生成的sql。

使用PLSQL DEVELOPER 11查看执行计划,如下所示,新版本的好处:

image.php?url=0MpVOdq89M

本文取自《Oracle程序员面试笔试宝典》,作者:李华荣。

优质小麦课程

image.php?url=0MpVOdQ9mC

有关详细信息,您可以添加麦老师微信或QQ私聊。

关于我:小麦幼苗DBA系列

,学习最实用的数据库技术。

收集报告投诉