[20160815]查詢相關表的sql語句.txt

lfree發表於2016-08-15

[20160815]查詢相關表的sql語句.txt

--以前我要查詢相關表的sql語句,我一般在toad下執行sga trace,直接在sql search text 輸入表名,但是這裡存在一個問題,僅僅檢
--索sql語句的前1000個位元組才有效。

--如果我要查詢的表在1000字元外,無法查詢,透過例子說明:

1.環境:
SCOTT@book> @ &r/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

$ cat b.sql
select /*+ aaaa */   * from dept;

--在*號前插入1000個空格。

SCOTT@book> @ b.sql

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON

--//如果在toad查詢,直接查詢dept無法找到對應語句,查詢aaaa就可以查詢到。
--透過如下指令碼,連結如下:

accept owner prompt 'Please enter Name of Table Owner : '
accept table_name  prompt 'Please enter Table Name to show reference SQLs for: '

column sql_text format a158 word_wrapped
select /*+ ordered use_hash(d) use_hash(c) */
    c.kglobt03 sql_id,
    sum(c.kglobt13) disk_reads,
    sum(c.kglobt14) logical_reads,
    sum(c.kglhdexc) executions,
    c.kglnaobj sql_text
from
    sys.x$kglob o,
    sys.x$kgldp d,
    sys.x$kglcursor c
where
    o.inst_id = userenv('Instance') and
    d.inst_id = userenv('Instance') and
    c.inst_id = userenv('Instance') and
    o.kglnaown = upper(nvl('&Owner',user)) and
    o.kglnaobj = upper('&Table_name') and
    d.kglrfhdl = o.kglhdadr and
    c.kglhdadr = d.kglhdadr
group by
    c.kglnaobj,c.kglobt03
order by 3;

undefine owner
undefine table_name
clear breaks


SYS@book> @ &r/ref_t
Please enter Name of Table Owner : scott
Please enter Table Name to show reference SQLs for: dept
SQL_ID        DISK_READS LOGICAL_READS EXECUTIONS SQL_TEXT
------------- ---------- ------------- ---------- ----------------------------------------------------------
fzdxjssfcwu4r          0            85          4 select /*+ aaaa */ *


--缺點必須以sys使用者執行。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2123481/,如需轉載,請註明出處,否則將追究法律責任。

相關文章