使用或中的DELETE_SQLSET过程从STS删除SQL语句。 DBMS_SQLTUNEDBMS_SQLSET
您可以使用该UPDATE_SQLSET过程在由STS名称和SQL ID标识的现有STS中更新SQL语句的属性(例如PRIORITY或OTHER)。
假设条件
本教程假定您要进行SQLT_WKLD_STS如下修改:
- 您要删除所有读取计数超过100的SQL语句。
- 您想要将ID
fudq5z56g642p为的SQL语句的优先级更改为1。在运行SQL Tuning Advisor时,可以将优先级用作排名标准。 - 您使用
DBMS_SQLTUNE代替DBMS_SQLSET。
修改STS的内容:
- 在SQL * Plus或SQL Developer中,以具有必要特权的用户身份登录数据库。
- (可选)使用
TABLE函数查询STS内容。例如,执行以下查询:
SELECT SQL_ID, ELAPSED_TIME, FETCHES, EXECUTIONS FROM TABLE(DBMS_SQLTUNE.SELECT_SQLSET('SQLT_WKLD_STS'));输出示例如下:
SQL_ID ELAPSED_TIME FETCHES EXECUTIONS ------------- ------------ ---------- ---------- 2cqsw036j5u7r 3407459 2 1 79f8shn041a1f 9453965 61258 1 bzmnj0nbvmz8t 401869 1 1 fudq5z56g642p 5300264 1 1 - 根据用户指定的条件删除SQL语句。
使用
basic_filter谓词从的属性定义的STS中过滤SQLSQLSET_ROW。下面的示例将删除STS中获取计数超过100的所有语句:BEGIN DBMS_SQLTUNE.DELETE_SQLSET ( sqlset_name => 'SQLT_WKLD_STS' , basic_filter => 'fetches > 100' ); END; / - 设置SQL语句的属性值。
以下示例将语句的优先级设置
2cqsw036j5u7r为1:BEGIN DBMS_SQLTUNE.UPDATE_SQLSET ( sqlset_name => 'SQLT_WKLD_STS' , sql_id => '2cqsw036j5u7r' , attribute_name => 'PRIORITY' , attribute_value => 1 ); END; / - (可选)查询STS以确认是否进行了预期的修改。
例如,执行以下查询:
SELECT SQL_ID, ELAPSED_TIME, FETCHES, EXECUTIONS, PRIORITY FROM TABLE(DBMS_SQLTUNE.SELECT_SQLSET('SQLT_WKLD_STS'));输出示例如下:
SQL_ID ELAPSED_TIME FETCHES EXECUTIONS PRIORITY ------------- ------------ ---------- ---------- ---------- 2cqsw036j5u7r 3407459 2 1 1 bzmnj0nbvmz8t 401869 1 1 fudq5z56g642p 5300264 1 1
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




