[20181007]12cR2 Using SQL Patch 2.txt

--//12cR2 已经把sql打补丁集成进入dbms_sqldiag,不是11g的 DBMS_SQLDIAG_INTERNAL.I_CREATE_PATCH .做一个记录.
--//以前的链接:http://blog.itpub.net/267265/viewspace-751900/=>[20121231]给sql打补丁.txt
--//想看看打补丁的提示写入那张表.奇怪没有地方显示hint_text信息.

1.环境:
[email protected]> @ ver1
PORT_STRING                    VERSION        BANNER                                                                               CON_ID
------------------------------ -------------- -------------------------------------------------------------------------------- ----------
IBMPC/WIN_NT64-9.1.0           12.2.0.1.0     Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production              0

[email protected]> select /*+ full(dept) */ * from dept where deptno=10;
           DEPTNO DNAME                LOC
----------------- -------------------- -------------
               10 ACCOUNTING           NEW YORK

--//sql_id=g0qybdz1796cn

[email protected]> select text_vc c100 from dba_views where view_name=‘DBA_SQL_PATCHES‘;
C100
----------------------------------------------------------------------------------------------------
SELECT
    so.name, so.category, so.signature, st.sql_text,
    ad.created, ad.last_modified, ad.description,
    DECODE(BITAND(so.flags, 1), 1, ‘ENABLED‘, ‘DISABLED‘),
    DECODE(BITAND(sq.flags, 1), 1, ‘YES‘, ‘NO‘),
    ad.task_id, ad.task_exec_name, ad.task_obj_id, ad.task_fnd_id,
    ad.task_rec_id
FROM
    sqlobj$        so,
    sqlobj$auxdata ad,
    sql$text       st,
    sql$           sq
WHERE
    so.signature = st.signature AND
    so.signature = ad.signature AND
    so.category  = ad.category  AND
    so.signature = sq.signature AND
    so.obj_type = 3 AND
    ad.obj_type = 3

--//我查询这些sqlobj$,sqlobj$auxdata,sql$text,sql$表,没有对应的提示信息.

2.跟踪看看:

[email protected]> @ 10046on 12
Session altered.

[email protected]> exec :patch_name := dbms_sqldiag.create_sql_patch(sql_id=>‘g0qybdz1796cn‘,hint_text=>‘result_cache INDEX_RS_ASC(@"SEL$1" "DEPT"@"SEL$1" ("DEPT"."DEPTNO"))‘);
PL/SQL procedure successfully completed.

[email protected]> @ 10046off
Session altered.

--//查看跟踪文件可以发现如下,检索result_cache 就可以发现如下:
PARSING IN CURSOR #31521616 len=1500 dep=1 uid=0 oct=189 lid=0 tim=9303948110 hv=2730219038 ad=‘7ff16b8ca68‘ sqlid=‘2azfx4fjbrphy‘

MERGE /*+ INDEX(dest (signature category obj_type plan_id)) */
     INTO  sqlobj$data dest
     USING (SELECT :1 signature
                  ,:2 category
                  ,:3 obj_type
                  ,:4 plan_id
              FROM DUAL) src
        ON (    dest.signature = src.signature
            AND dest.category = src.category
            AND dest.obj_type = src.obj_type
            AND dest.plan_id = src.plan_id)
WHEN MATCHED
THEN
   UPDATE SET comp_data = :5
   DELETE
           WHERE     signature = :6
                 AND category = :7
                 AND obj_type = :8
                 AND plan_id = :9
                 AND :10 = 0
WHEN NOT MATCHED
THEN
   INSERT
              (
                 signature
                ,category
                ,obj_type
                ,plan_id
                ,comp_data
                ,spare1
                ,spare2
              )
       VALUES
              (
                 :11
                ,:12
                ,:13
                ,:14
                ,:15
                ,NULL
                ,NULL
              )
        WHERE (:16 > 0)

--//为了好看,我做了格式化处理.
END OF STMT
PARSE #31521616:c=0,e=548,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=1,plh=0,tim=9303948110
BINDS #813829336:

Bind#0
  oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00
  oacflg=00 fl2=1000001 frm=00 csi=00 siz=24 off=0
  kxsbbbfp=2eca1bc8  bln=22  avl=03  flg=05
  value=336

...
 Bind#14
  oacdty=01 mxl=128(122) mxlc=00 mal=00 scl=00 pre=00
  oacflg=21 fl2=0000 frm=01 csi=852 siz=0 off=488
  kxsbbbfp=2ed21750  bln=128  avl=122  flg=01
  value="<outline_data><hint><![CDATA[result_cache INDEX_RS_ASC(@"SEL$1" "DEPT"@"SEL$1" ("DEPT"."DEPTNO"))]]></hint></outline_data>"
 Bind#15
  oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00
  oacflg=01 fl2=0000 frm=00 csi=00 siz=0 off=616
  kxsbbbfp=2ed217d0  bln=22  avl=03  flg=01
  value=122
EXEC #31521616:c=15600,e=258743,p=0,cr=148,cu=6,mis=1,r=1,dep=1,og=1,plh=4253447951,tim=9304207021
STAT #31521616 id=1 cnt=0 pid=0 pos=1 obj=0 op=‘MERGE  SQLOBJ$DATA (cr=1 pr=0 pw=1 str=1 time=237554 us)‘
STAT #31521616 id=2 cnt=1 pid=1 pos=1 obj=0 op=‘VIEW  (cr=1 pr=0 pw=0 str=1 time=23 us)‘
STAT #31521616 id=3 cnt=1 pid=2 pos=1 obj=0 op=‘NESTED LOOPS OUTER (cr=1 pr=0 pw=0 str=1 time=19 us cost=2 size=1066 card=1)‘
STAT #31521616 id=4 cnt=1 pid=3 pos=1 obj=0 op=‘VIEW  (cr=0 pr=0 pw=0 str=1 time=4 us cost=2 size=62 card=1)‘
STAT #31521616 id=5 cnt=1 pid=4 pos=1 obj=0 op=‘FAST DUAL  (cr=0 pr=0 pw=0 str=1 time=1 us cost=2 size=0 card=1)‘
STAT #31521616 id=6 cnt=0 pid=3 pos=2 obj=341 op=‘INDEX UNIQUE SCAN SQLOBJ$DATA_PKEY (cr=1 pr=0 pw=0 str=1 time=12 us cost=0 size=1004 card=1)‘
CLOSE #31521616:c=0,e=10,dep=1,type=0,tim=9304208195

--//表SQLOBJ$DATA

[email protected]> @ pt2 ‘select * from sys.SQLOBJ$DATA‘
          ROW_NUM           COL_NUM COL_NAME             COL_VALUE
----------------- ----------------- -------------------- ----------------------------------------------------------------------------------------------------
                1                 1 SIGNATURE            16064551385586871472
                                  2 CATEGORY             DEFAULT
                                  3 OBJ_TYPE             3
                                  4 PLAN_ID              0
                                  5 COMP_DATA            <outline_data><hint><![CDATA[result_cache INDEX_RS_ASC(@"SEL$1" "DEPT"@"SEL$1" ("DEPT"."DEPTNO"))]]>

--//查询依赖关系:
[email protected]> @ pt2 ‘select * from sys.SQLOBJ$DATA_DATAPUMP‘
          ROW_NUM           COL_NUM COL_NAME             COL_VALUE
----------------- ----------------- -------------------- ----------------------------------------------------------------------------------------------------
                1                 1 SIGNATURE            16064551385586871472
                                  2 CATEGORY             DEFAULT
                                  3 OBJ_TYPE             3
                                  4 PLAN_ID              0
                                  5 COMP_DATA            <outline_data><hint><![CDATA[result_cache INDEX_RS_ASC(@"SEL$1" "DEPT"@"SEL$1" ("DEPT"."DEPTNO"))]]>

[email protected]> select text_vc c100 from dba_views where view_name=‘SQLOBJ$DATA_DATAPUMP‘;
C100
----------------------------------------------------------------------------------------------------
SELECT "SIGNATURE","CATEGORY","OBJ_TYPE","PLAN_ID","COMP_DATA","SPARE1","SPARE2" FROM sqlobj$data

--//很奇怪,oracle设计没有视图很好的查询相关信息.

原文地址:https://www.cnblogs.com/lfree/p/9751746.html

时间: 2024-08-26 09:47:05

[20181007]12cR2 Using SQL Patch 2.txt的相关文章

sql脚本读取txt文本文件插入新表

今天老大让我录入一大批数据,我的第一个想法就是用inser来一条条插入,或者用C#代码读取Excel然后再插入到数据库,经过老大的介绍.我才知道,还有用sql脚本导入数据的方法.呵呵,真的是长知识了.其实代码很简单 BULK INSERT cartemp FROM 'd:\1.txt' WITH( FIELDTERMINATOR = '\t', ROWTERMINATOR = '\n' ) 可是执行后一直报这样的错误.让我找不到原因,百度了好多解释,却解决不了我的问题 消息 4832,级别 16

3. SQL patch 以补丁的形式,将hint 打入到指定SQL

以补丁的形式,将hint 打入到指定SQL     也可以参考sqlt 下面的?coe_gen_sql_patch.sql 常用的HINT :   hint_text (一般是bind_aware/monitor/) 注意: bind_aware/monitor /gather_plan_statistics  是sql  profile 是用不了的  如果sql  profile 可以用的,建议用sql  profile # 12.2之前版本 –需要用sys用户执行: sys.dbms_sql

[20181015]12C SQL Translation Framework.txt

--//12c提供一个dba改写sql语句的可能性,实际上10g,11g之前也有一个包DBMS_ADVANCED_REWRITE能实现类似的功能.--//这种功能实在是一种旁门左道,还是测试看看. --//不过如果程序存在大量的执行错误,一样会影响性能,导致出现SQL*Net break/reset to client.--//参考连接:0624使用10035事件跟踪无法执行的sql语句 =>http://blog.itpub.net/267265/viewspace-2120884/--//h

sql 读取本地txt文件批量插入数据库

--导入 INSERT INTO [netmonsdb].[dbo].[keywordlist]([keyword]) SELECT * FROM OPENROWSET( BULK 'D:/xmsys/dd/dd.txt', FORMATFILE='d:/BCPFORMAT.xml' --, FIRSTROW=2 ) AS T; <?xml version="1.0"?> <BCPFORMAT xmlns="http://schemas.microsoft.

[转帖]Oracle 12cR2使用经验

大规模升级来临,谈谈Oracle 12cR2使用经验 随着2019年2月13日,Oracle 19c (Oracle 12.2.0.3) for Exadata 版本发布,Oracle 12cR2体系的数据库版本终于迎来了长期支持版本(Oracle 12c的最后一个大版本),也就是说数据库版本还在Oracle 10g/11g的系统是时候考虑升级了. http://database.51cto.com/art/201904/595040.htm Oracle12c 的最终版本发布了 以后升级的用户

diff和patch命令简介

diff -u 1.txt 2.txt > diff.txt -u: 使差异输出带有上下文. 1 --- 1.txt 2017-01-21 07:09:19.015472013 -0500 2 +++ 2.txt 2017-01-21 07:11:26.385045822 -0500 3 @@ -5,9 +5,9 @@ 4 全拼,双拼 5 还是五笔 6 7 -是人就有可能犯错,软件更是如此. 8 - 9 -犯了错,就要扣工资!10 -11 +诗人就有可能犯错,软件更是如此.1213 改正的成本可

InstallShield在MySQL和Oracle中执行SQL脚本的方法InstallShield在MySQL和Oracle中执行SQL脚本的方法

简述 InstallShield已经内建了对MySQL和Oracle的支持.但是这个功能是通过ODBC实现的,它对SQL脚本的格式要求非常严格,因此已经通过官方客户端测试的脚本在IS中执行时往往就会报错. 一般来说,数据库脚本只保证通过官方客户端测试即可,同时维护一份供IS执行的脚本费时费力.因此,考虑安装程序对两数据库的支持通过官方客户端实现. MySQL   function InstallMySQLComponent(szComponent) NUMBER nResult; STRING

【SQL Performance】实时SQL监控功能(Real-Time SQL Monitoring)

概述 使用条件 监视对象 查看实时SQL监控结果的方法 DBMS_SQLTUNE包的以下子程序包 动态视图 Enterprise ManagerEM 相关参数 各版本变化 实时SQL监控使用的例子 参考 概述 实时SQL监控功能(Real-Time SQL Monitoring)是Oracle11g推出的功能,通过这个功能可以实时地监视执行中的SQL性能. 使用条件 要想使用实时SQL监控功能(Real-Time SQL Monitoring),必须满足以下几个条件 ?EE版本,购买了Diagn

DB操作-用批处理执行Sql语句

用批处理在命令行状态下调用查询分析器来执行这个sql文件里的语句.下面就是sqlserver帮助里对于查询分析器(isqlw)命令行参数的解释:isqlw 实用工具(SQL 查询分析器)使您得以输入 Transact-SQL 语句.系统存储过程和脚本文件.通过设置快捷方式或创建批处理文件,可以启动预配置的 SQL 查询分析器. 1.语法 isqlw     [-?] |      [          [-S server_name[instance_name]]          [-d da