[20240314]建立完善sqlpatch.sql脚本.txt --//以前写的脚本sql语句只能从v$sql视图抽取,但是有一些情况不在共享池,要从DBA_HIST_SQLTEXT抽取. --//纠正一些拼写错误.加入一些版本信息.如果在共享池改写为gv$sqlarea视图. $ cat sqlpatchz.sql -- Copyright 2023 lfree. All rights reserved. -- Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms and conditions. -------------------------------------------------------------------------------- -- -- File name: sqlpatch.sql -- Purpose: sql patch -- -- Author: lfree -- -- Usage: -- @sqlpatch <sql_id> 'hint_text' -- -- Example: -- @sqlpatch <sql_id> bind_aware -- @sqlpatch <sql_id> cursor_sharing_exact -- -- -------------------------------------------------------------------------------- prompt prompt input @sqlpatch <sql_id> 'hint_text' oracle_version(11 or 12) prompt drop sql patch ,run exec sys.dbms_sqldiag.drop_sql_patch('sqlpatch_&1');; prompt display sql patch message , run @spext &1 prompt define noprint='noprint' set term off col tpt_version_old &noprint new_value _tpt_version_old col tpt_version_new &noprint new_value _tpt_version_new col tpt_comment1 &noprint new_value _tpt_comment1 col tpt_comment2 &noprint new_value _tpt_comment2 col tpt_noprint &noprint new_value _tpt_noprint SELECT decode(cnt, 1,'',0,'--') tpt_comment1 ,decode(cnt,1,'--',0,'') tpt_comment2 FROM (SELECT count(*) cnt FROM gv$sqlarea WHERE sql_id = '&1' AND rownum = 1); WITH version AS (SELECT TO_NUMBER (SUBSTR (version, 1, 2)) v FROM v$instance) SELECT CASE WHEN v <= 11 THEN '' ELSE '--' END tpt_version_old ,CASE WHEN v > 11 THEN '' ELSE '--' END tpt_version_new FROM version; set term on declare v_sql CLOB; patch_name VARCHAR2 (100); begin &&_tpt_comment1 select sql_fulltext into v_sql from gv$sqlarea where sql_id='&1' and rownum=1; &&_tpt_comment2 select sql_text into v_sql from DBA_HIST_SQLTEXT where sql_id='&1' and rownum=1; &&_tpt_version_old sys.dbms_sqldiag_internal.i_create_patch( &&_tpt_version_old sql_text => v_sql, &&_tpt_version_old hint_text => '&2', &&_tpt_version_old name => 'sqlpatch_&1'); &&_tpt_version_new patch_name := &&_tpt_version_new sys.DBMS_SQLDIAG.create_sql_patch &&_tpt_version_new ( &&_tpt_version_new sql_text => v_sql &&_tpt_version_new ,hint_text => '&2' &&_tpt_version_new ,name => 'sqlpatch_&1' &&_tpt_version_new ); end; /
[20240314]建立完善sqlpatch.sql脚本.txt
来源:这里教程网
时间:2026-03-03 19:41:16
作者:
编辑推荐:
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- 数据库管理-第158期 Oracle Vector DB & AI-09(20240304)
- 透视B站财报:从前景看“钱景”
透视B站财报:从前景看“钱景”
26-03-03 - Oracle数据恢复—Oracle数据库意外删表?教您如何恢复Oracle数据?
- 19c补丁后oracle属主变化,导致不能识别磁盘组
19c补丁后oracle属主变化,导致不能识别磁盘组
26-03-03 - 数据库管理-第154期 Oracle Vector DB & AI-06(20240223)
- 某DG库磁盘IO性能问题之根因探究
某DG库磁盘IO性能问题之根因探究
26-03-03 - 豪华纯电第一股,迎来“繁花”开放
豪华纯电第一股,迎来“繁花”开放
26-03-03 - 欧菲斯冲刺IPO、齐心集团聚焦AI,数字化采购企业集体发力
欧菲斯冲刺IPO、齐心集团聚焦AI,数字化采购企业集体发力
26-03-03 - 从通用大模型到行业大模型,云厂商上演“宫斗剧”
从通用大模型到行业大模型,云厂商上演“宫斗剧”
26-03-03 - 吉时利Keithley2400数字源表
吉时利Keithley2400数字源表
26-03-03
