[20220329]19c sql语句打补丁.txt --//在19c优化sql语句使用sql profile模式交换执行计划时,出现无法稳定执行计划的情况。 --//尝试打补丁的方式,19c以上版本与以前11g的命令有一点点不同,做一个简单记录。 1.环境: > @pr ============================== PORT_STRING : x86_64/Linux 2.4.xx VERSION : 19.0.0.0.0 BANNER : Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production BANNER_FULL : Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.9.0.0.0 BANNER_LEGACY : Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production CON_ID : 0 PL/SQL procedure successfully completed. 1.打补丁: --//首先确定sql_id,执行如下命令: DECLARE v_sql CLOB; patch_name VARCHAR2 (100); BEGIN SELECT SQL_FULLTEXT INTO v_sql FROM v$sql WHERE sql_id = '&sql_id' AND ROWNUM = 1; patch_name := sys.DBMS_SQLDIAG.create_sql_patch ( sql_text => v_sql ,hint_text => 'USE_CONCAT(@"SEL$2BFA4EE4" 8 OR_PREDICATES(5)))' ,name => 'user_extents_patch &sql_id' ); END; / --//说明:我以前写的脚本使用SQL_TEXT,实际上其类型VARCHAR2(1000),不是clob,做测试可以,生产系统语句一般都很长不行。 --//以前11g使用sys.dbms_sqldiag_internal.i_create_patch,这个是一个存储过程,调用就ok了,无法定义变量patch_name。 YS@book> @ ver1 PORT_STRING VERSION BANNER ------------------------------ -------------- -------------------------------------------------------------------------------- x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production SYS@book> @ desc sys.dbms_sqldiag_internal PROCEDURE I_CREATE_HINTSET Argument Name Type In/Out Default? ------------------------------ ----------------------- ------ -------- SQL_TEXT CLOB IN HINT_TEXT VARCHAR2 IN NAME VARCHAR2 IN DEFAULT DESCRIPTION VARCHAR2 IN DEFAULT CATEGORY VARCHAR2 IN DEFAULT VALIDATE BOOLEAN IN DEFAULT PROCEDURE I_CREATE_PATCH ~~~~~~~~~~~~~~~~~~~~~~~~ Argument Name Type In/Out Default? ------------------------------ ----------------------- ------ -------- SQL_TEXT CLOB IN HINT_TEXT VARCHAR2 IN NAME VARCHAR2 IN DEFAULT DESCRIPTION VARCHAR2 IN DEFAULT CATEGORY VARCHAR2 IN DEFAULT VALIDATE BOOLEAN IN DEFAULT FUNCTION I_GENERATE_SS_IMPORT RETURNS VARCHAR2 FUNCTION I_GET_DBVERSION RETURNS VARCHAR2 FUNCTION I_GET_INCIDENTID RETURNS NUMBER Argument Name Type In/Out Default? ------------------------------ ----------------------- ------ -------- ID VARCHAR2 IN PROCEDURE I_INCIDENTID_2_SQL Argument Name Type In/Out Default? ------------------------------ ----------------------- ------ -------- INCIDENT_ID VARCHAR2 IN SQL_STMT SQLSET_ROW OUT PROBLEM_TYPE NUMBER OUT ERR_CODE BINARY_INTEGER OUT ERR_MESG VARCHAR2 OUT --//而19c使用sys.dbms_sqldiag包,CREATE_SQL_PATCH是一个函数,需要一个变量接收返回。 > @ desc sys.dbms_sqldiag ... FUNCTION CREATE_SQL_PATCH RETURNS VARCHAR2 Argument Name Type In/Out Default? ------------------------------ ----------------------- ------ -------- SQL_ID VARCHAR2 IN HINT_TEXT CLOB IN NAME VARCHAR2 IN DEFAULT DESCRIPTION VARCHAR2 IN DEFAULT CATEGORY VARCHAR2 IN DEFAULT VALIDATE BOOLEAN IN DEFAULT 2.查看打补丁信息: $ cat spext.sql /* Formatted on 2015/4/10 17:03:49 (QP5 v5.252.13127.32867) */ column hint format a200 column name format a30 SELECT EXTRACTVALUE (VALUE (h), '.') AS hint,so.name FROM SYS.sqlobj$data od ,SYS.sqlobj$ so ,TABLE ( XMLSEQUENCE ( EXTRACT (XMLTYPE (od.comp_data), '/outline_data/hint') ) ) h WHERE ( so.NAME in ( 'profile &&1', 'tuning &&1','switch tuning &&1') or lower(so.name) like lower('%&&1%')) AND so.signature = od.signature AND so.CATEGORY = od.CATEGORY AND so.obj_type = od.obj_type AND so.plan_id = od.plan_id; > @ spext gk5ttf0jpf88k HINT NAME ------------------------------------------------ ------------------------------ USE_CONCAT(@"SEL$2BFA4EE4" 8 OR_PREDICATES(5))) user_extents_patch gk5ttf0jpf88k 3.删除sql补丁执行如下: exec sys.dbms_sqldiag.drop_sql_patch('user_extents_patch &sql_id'); 4.检查是否生效: @ dpc gk5ttf0jpf88k outline '' --//始终搞不明白为什么sql profile交换执行计划不行。
[20220329]19c sql语句打补丁.txt
来源:这里教程网
时间:2026-03-03 17:32:38
作者:
编辑推荐:
- 敏涵控股集团:让世界看到民族品牌崛起的力量03-03
- IT运维人员的神兵利器03-03
- [20220329]19c sql语句打补丁.txt03-03
- 敏涵控股集团:以初心致匠心 践行实业报国梦03-03
- [20220329]是否开发写错sql语句.txt03-03
- [20220330]编写sql打补丁的脚本.txt03-03
- 深耕AI立体显示 广东未来科技领跑创新产业新赛道03-03
- 敏涵控股集团刘敏:一个85后创业者的民族使命03-03
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- IT运维人员的神兵利器
IT运维人员的神兵利器
26-03-03 - [20220329]19c sql语句打补丁.txt
[20220329]19c sql语句打补丁.txt
26-03-03 - Oracle database buffer cache
Oracle database buffer cache
26-03-03 - 智能门锁赛道:先行者凯迪仕出海谋生,后来者华为先声夺人
智能门锁赛道:先行者凯迪仕出海谋生,后来者华为先声夺人
26-03-03 - [重庆思庄每日技术分享]-安装oracle19c时报错DBT-50000
[重庆思庄每日技术分享]-安装oracle19c时报错DBT-50000
26-03-03 - 东航空难为什么找不见人却能找着身份证,难道身份证不被烧毁吗?
东航空难为什么找不见人却能找着身份证,难道身份证不被烧毁吗?
26-03-03 - OGG的replicat进程的Time Since Chkpt一直增加,进程处于假死状态
- 《Oracle 19c从入门到精通(视频教学超值版)》简介
《Oracle 19c从入门到精通(视频教学超值版)》简介
26-03-03 - 职业教育:旧挑战、后来者、新方向
职业教育:旧挑战、后来者、新方向
26-03-03 - 云安对于数据中心容灾恢复及数据库监控
云安对于数据中心容灾恢复及数据库监控
26-03-03
