真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何追蹤oracle語(yǔ)句,oracle怎么跟蹤sql

如何使用TOAD 跟蹤oracle的SQL語(yǔ)句.

買個(gè)guardium,可以監(jiān)控所有數(shù)據(jù)庫(kù)變化

成都創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括隴南網(wǎng)站建設(shè)、隴南網(wǎng)站制作、隴南網(wǎng)頁(yè)制作以及隴南網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,隴南網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到隴南省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

Toad里邊有查看功能,找到你那個(gè)session,然后就會(huì)列出執(zhí)行的語(yǔ)句,用了多長(zhǎng)時(shí)間啥的

如何實(shí)時(shí)跟蹤oracle的sql語(yǔ)句

如何實(shí)時(shí)跟蹤oracle的sql語(yǔ)句

這個(gè)要開啟oracle的audit功能。

select * from DBA_AUDIT_OBJECT

如何查看oracle數(shù)據(jù)庫(kù)中執(zhí)行了哪些sql語(yǔ)句

一、通過(guò)PL/SQL Dev工具

1、直接File-New-Explain Plan Window,在窗口中執(zhí)行sql可以查看計(jì)劃結(jié)果。其中,Cost表示cpu的消耗,單位為n%,Cardinality表示執(zhí)行的行數(shù),等價(jià)Rows。

2、先執(zhí)行 EXPLAIN PLAN FOR select * from tableA where paraA=1,再 select * from table(DBMS_XPLAN.DISPLAY)便可以看到oracle的執(zhí)行計(jì)劃了,看到的結(jié)果和1中的一樣,所以使用工具的時(shí)候推薦使用1方法。

注意:PL/SQL Dev工具的Command window中不支持set autotrance on的命令。還有使用工具方法查看計(jì)劃看到的信息不全,有些時(shí)候我們需要sqlplus的支持。

二、通過(guò)sqlplus

1.最簡(jiǎn)單的辦法

Sql set autotrace on

Sql select * from dual;

執(zhí)行完語(yǔ)句后,會(huì)顯示explain plan 與 統(tǒng)計(jì)信息。

這個(gè)語(yǔ)句的優(yōu)點(diǎn)就是它的缺點(diǎn),這樣在用該方法查看執(zhí)行時(shí)間較長(zhǎng)的sql語(yǔ)句時(shí),需要等待該語(yǔ)句執(zhí)行成功后,才返回執(zhí)行計(jì)劃,使優(yōu)化的周期大大增長(zhǎng)。如果不想執(zhí)行語(yǔ)句而只是想得到執(zhí)行計(jì)劃可以采用:

Sql set autotrace traceonly

這樣,就只會(huì)列出執(zhí)行計(jì)劃,而不會(huì)真正的執(zhí)行語(yǔ)句,大大減少了優(yōu)化時(shí)間。雖然也列出了統(tǒng)計(jì)信息,但是因?yàn)闆]有執(zhí)行語(yǔ)句,所以該統(tǒng)計(jì)信息沒有用處,如果執(zhí)行該語(yǔ)句時(shí)遇到錯(cuò)誤,解決方法為:

(1)在要分析的用戶下:

Sqlplus @ ?

dbmsadminutlxplan.sql

(2) 用sys用戶登陸

Sqlplus @ ?sqlplusadminplustrce.sql

Sqlplus grant plustrace to user_name;

- - user_name是上面所說(shuō)的分析用戶

 2.用explain plan命令

(1) sqlplus explain plan for select * from testdb.myuser

(2) sqlplus select * from table(dbms_xplan.display);

上面這2種方法只能為在本會(huì)話中正在運(yùn)行的語(yǔ)句產(chǎn)生執(zhí)行計(jì)劃,即我們需要已經(jīng)知道了哪條語(yǔ)句運(yùn)行的效率很差,我們是有目的只對(duì)這條SQL語(yǔ)句去優(yōu)化。其實(shí),在很多情況下,我們只會(huì)聽一個(gè)客戶抱怨說(shuō)現(xiàn)在系統(tǒng)運(yùn)行很慢,而我們不知道是哪個(gè)SQL引起的。此時(shí)有許多現(xiàn)成的語(yǔ)句可以找出耗費(fèi)資源比較多的語(yǔ)句,如:

SELECT ADDRESS, substr(SQL_TEXT,1,20) Text, buffer_gets, executions,

buffer_gets/executions AVG FROM v$sqlarea

WHERE executions0 AND buffer_gets 100000 ORDER BY 5;

ADDRESS TEXT BUFFER_GETS EXECUTIONS AVG

-------- ---------------------------------------- ----------- ---------- ------------------------------------------------------------

66D83D64 select t.name, (sel 421531 60104 7.01336017

66D9E8AC select t.schema, t.n 1141739 2732 417.913250

66B82BCC select s.synonym_nam 441261 6 73543.5

從而對(duì)找出的語(yǔ)句進(jìn)行進(jìn)一步優(yōu)化。當(dāng)然我們還可以為一個(gè)正在運(yùn)行的會(huì)話中運(yùn)行的所有SQL語(yǔ)句生成執(zhí)行計(jì)劃,這需要對(duì)該會(huì)話進(jìn)行跟蹤,產(chǎn)生trace文件,然后對(duì)該文件用tkprof程序格式化一下,這種得到執(zhí)行計(jì)劃的方式很有用,因?yàn)樗渌~外信息,如SQL語(yǔ)句執(zhí)行的每個(gè)階段(如Parse、Execute、Fetch)分別耗費(fèi)的各個(gè)資源情況(如CPU、DISK、elapsed等)。

3、啟用SQL_TRACE跟蹤所有后臺(tái)進(jìn)程活動(dòng):

全局參數(shù)設(shè)置: .OracleHome/admin/SID/pfile中指定: SQL_TRACE = true (10g)

當(dāng)前session中設(shè)置:

SQL alter session set SQL_TRACE=true;

SQL select * from dual;

SQL alter session set SQL_TRACE=false;

對(duì)其他用戶進(jìn)行跟蹤設(shè)置:

SQL select sid,serial#,username from v$session where username='XXX';

SID SERIAL# USERNAME

------ ---------- ------------------

127 31923 A

128 54521 B

開啟跟蹤:SQL exec dbms_system.set_SQL_TRACE_in_session(127,31923,true);

關(guān)閉跟蹤:SQL exec dbms_system.set_SQL_TRACE_in_session(127,31923,false);

然后使用oracle自帶的tkprof命令行工具格式化跟蹤文件。

4、使用10046事件進(jìn)行查詢:

10046事件級(jí)別:

Lv1 - 啟用標(biāo)準(zhǔn)的SQL_TRACE功能,等價(jià)于SQL_TRACE

Lv4 - Level 1 + 綁定值(bind values)

Lv8 - Level 1 + 等待事件跟蹤

Lv12 - Level 1 + Level 4 + Level 8

全局設(shè)定:

OracleHome/admin/SID/pfile中指定: EVENT="10046 trace name context forever,level 12"

當(dāng)前session設(shè)定:

開啟:SQL alter session set events '10046 trace name context forever, level 8';

關(guān)閉:SQL alter session set events '10046 trace name context off';

對(duì)其他用戶進(jìn)行設(shè)置:

SQL select sid,serial#,username from v$session where username='XXX';

SID SERIAL# USERNAME

------ ---------- ------------------

127 31923 A

SQL exec dbms_system.set_ev(127,31923,10046,8,'A');

5、使用tkprof格式化跟蹤文件: (根據(jù)下面SQL語(yǔ)句得到的文件都不存在該目錄下,郁悶啊,懵懂啊...)

一般,一次跟蹤可以分為以下幾步:

1、界定需要跟蹤的目標(biāo)范圍,并使用適當(dāng)?shù)拿顔⒂盟韪櫋?/p>

2、經(jīng)過(guò)一段時(shí)間后,停止跟蹤。此時(shí)應(yīng)該產(chǎn)生了一個(gè)跟蹤結(jié)果文件。

3、找到跟蹤文件,并對(duì)其進(jìn)行格式化,然后閱讀或分析。

--使用一下SQL找到當(dāng)前session的跟蹤文件:

SELECT d.value|| '/' ||lower(rtrim(i.instance, chr( 0 )))|| '_ora_' ||p.spid|| '.trc' trace_file_namefrom( select p.spid from v$mystat m,v$session s, v$process pwhere m.statistic# = 1 and s.sid = m.sid and p.addr = s.paddr) p,( select t.instance from v$thread t,v$parameter vwhere v.name = 'thread' and (v.value = 0 or t.thread# = to_number(v.value))) i,( select value from v$parameter where name = 'user_dump_dest' ) d;-- 其它用戶的 session SELECT d.value|| '/' ||lower(rtrim(i.instance, chr( 0 )))|| '_ora_' ||p.spid|| '.trc' trace_file_name from ( select p.spid from v$session s, v$process p where s.sid= '27' and s. SERIAL#= '30' and p.addr = s.paddr) p, ( select t.instance from v$thread t,v$parameter v where v.name = 'thread' and (v.value = 0 or t.thread# = to_number(v.value))) i, ( select value from v$parameter where name = 'user_dump_dest' ) d;

--查找后使用tkprof命令,將TRACE文件格式為到D盤的explain_format.txt文件中

SQL $tkprof d:/oracle/admin/FZLGFM/udump/fzlgfm_ora_3468.trc d:/explain_format.txt

文件內(nèi)容大致如下(看不太懂....懵懂啊.....天啊....神啊.....過(guò)幾時(shí)就懂了/////////////)

TKPROF: Release 9.2.0.1.0 - Production on 星期二 4月 20 13:59:20 2010

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

Trace file: d:/oracle/admin/FZLGFM/udump/fzlgfm_ora_3468.trc

Sort options: default

********************************************************************************

count = number of times OCI procedure was executed

cpu = cpu time in seconds executing

elapsed = elapsed time in seconds executing

disk = number of physical reads of buffers from disk

query = number of buffers gotten for consistent read

current = number of buffers gotten in current mode (usually for update)

rows = number of rows processed by the fetch or execute call********************************************************************************

alter session set events '10046 trace name context forever, level 8'

call count cpu elapsed disk query current rows

------- ------ -------- ---------- ---------- ---------- ---------- ----------

Parse 0 0.00 0.00 0 0 0 0

Execute 1 0.00 0.00 0 0 0 0

Fetch 0 0.00 0.00 0 0 0 0

------- ------ -------- ---------- ---------- ---------- ---------- ----------

total 1 0.00 0.00 0 0 0 0

Misses in library cache during parse: 0

Misses in library cache during execute: 1

Optimizer goal: CHOOSE

Parsing user id: SYS

Oracle 數(shù)據(jù)庫(kù)如何跟蹤SQL語(yǔ)句

沒用,只想從后臺(tái)數(shù)據(jù)庫(kù)看對(duì)這個(gè)數(shù)據(jù)庫(kù)執(zhí)行的sql問題補(bǔ)充:unika_ly12 寫道 那你直接查詢 v$sqltext 和 v$session 好了 首先,你要以dba身份登陸數(shù)據(jù)庫(kù)。 第二,為某個(gè)用戶開啟sql跟蹤。那個(gè)用戶就是你要跟蹤的、正在執(zhí)行sql語(yǔ)句的那個(gè)用戶。命令如下: execute dbms_system.set_sql_trace_in_session(sid,serial#,true) 其中參數(shù)的意義是,sid-會(huì)話id,serial#-序列號(hào),這兩個(gè)參數(shù)可以從v$session中得到。 第三,上面的命令執(zhí)行成功之后數(shù)據(jù)庫(kù)就自動(dòng)對(duì)該用戶所發(fā)出的所有sql語(yǔ)句進(jìn)行跟蹤,并把結(jié)果寫在用戶跟蹤文件里。用戶跟蹤文件存放在數(shù)據(jù)庫(kù)服務(wù)器上,路徑請(qǐng)參考init.ora文件中的udump參數(shù)值。文件名為ora_sid_xxxx.trc(for unix)或者oraxxxxx.trc(for NT),其中xxxx文件系統(tǒng)進(jìn)程編號(hào),這個(gè)編號(hào)可以從v$process和v$session兩個(gè)表通過(guò)關(guān)聯(lián)的方式查詢得到。當(dāng)然你也可以簡(jiǎn)單的查看一下哪個(gè)trc文件的日期最新,哪個(gè)文件就是你要的結(jié)果了。 首先,你要以dba身份登陸數(shù)據(jù)庫(kù)。 第二,為某個(gè)用戶開啟sql跟蹤。那個(gè)用戶就是你要跟蹤的、正在執(zhí)行sql語(yǔ)句的那個(gè)用戶。命令如下: execute dbms_system.set_sql_trace_in_session(sid,serial#,true) 其中參數(shù)的意義是,sid-會(huì)話id,serial#-序列號(hào),這兩個(gè)參數(shù)可以從v$session中得到。 第三,上面的命令執(zhí)行成功之后數(shù)據(jù)庫(kù)就自動(dòng)對(duì)該用戶所發(fā)出的所有sql語(yǔ)句進(jìn)行跟蹤,并把結(jié)果寫在用戶跟蹤文件里。用戶跟蹤文件存放在數(shù)據(jù)庫(kù)服務(wù)器上,路徑請(qǐng)參考init.ora文件中的udump參數(shù)值。文件名為ora_sid_xxxx.trc(for unix)或者oraxxxxx.trc(for NT),其中xxxx文件系統(tǒng)進(jìn)程編號(hào),這個(gè)編號(hào)可以從v$process和v$session兩個(gè)表通過(guò)關(guān)聯(lián)的方式查詢得到。當(dāng)然你也可以簡(jiǎn)單的查看一下哪個(gè)trc文件的日期最新,哪個(gè)文件就是你要的結(jié)果了。

BS的oracle程序運(yùn)行的SQL語(yǔ)句怎么跟蹤?需要詳細(xì)的方法和步驟

需要建立一張表來(lái)記錄

explain plan SET statement_id='name' FOR (這里是你要調(diào)試的語(yǔ)句 )

SELECT

A.OPERATION,

OPTIONS,

OBJECT_NAME,

OBJECT_TYPE,

ID,

PARENT_ID

FROM

PLAN_TABLE A

WHERE

STATEMENT_ID='name'

ORDER BY

Id;

ID 'name'是一個(gè)標(biāo)識(shí),你可以自己取,字段有很多個(gè),以下是各個(gè)字段的解釋(可能格式不對(duì),你可以復(fù)制后看):

字段名 字段類型 含義

STATEMENT_ID VARCHAR2(30) explain PLAN 語(yǔ)句中所指定的最優(yōu)STATEMENT_ID 參數(shù)值, 如果在EXPLAN PLAN語(yǔ)句中沒有使用SET STATEMENT_ID,那么此值會(huì)被設(shè)為NULL。

REMARKS VARCHAR2(80) 與被解釋規(guī)劃的各步驟相關(guān)聯(lián)的注釋最長(zhǎng)可達(dá)80 字節(jié)

OPERATION VARCHAR2(30) 各步驟所執(zhí)行內(nèi)部操作的名稱在某條語(yǔ)句所產(chǎn)生的第一行中該列的可能取值如下DELETE STATEMENT INSERT STATEMENT SELECT STATEMENT UPDATE STATEMENT

OPTIONS VARCHAR2(30) 對(duì)OPERATION 列中所描述操作的變種

OBJECT_NODE VARCHAR2(128) 用于訪問對(duì)象的數(shù)據(jù)庫(kù)鏈接database link 的名稱對(duì)于使用并行執(zhí)行的本地查詢?cè)摿心軌蛎枋霾僮髦休敵龅拇涡?/p>

OBJECT_OWNER VARCHAR2(30) 對(duì)于包含有表或索引的架構(gòu)schema 給出其所有者的名稱

OBJECT_NAME VARCHAR2(30) 表或索引的名稱

OBJECT_INSTANCE INTEGER 根據(jù)對(duì)象出現(xiàn)在原始o(jì)riginal 語(yǔ)句中的次序所給出的相應(yīng)次序編號(hào)就原始的語(yǔ)句文本而論其處理順序?yàn)樽宰笾劣易酝庀騼?nèi)景象擴(kuò)張view

OBJECT_TYPE VARCHAR2(30) 用于提供對(duì)象描述性信息的修飾符例如索引的NON-UNIQUE

OPTIMIZER VARCHAR2(255) 當(dāng)前優(yōu)化程序的模式

ID INTEGER 分配給執(zhí)行規(guī)劃各步驟的編號(hào)

PARENT_ID INTEGER 對(duì)ID 步驟的輸出進(jìn)行操作的下一個(gè)執(zhí)行步驟的ID

POSITION INTEGER 對(duì)于具有相同PARENT_ID 的步驟其相應(yīng)的處理次序

COST INTEGER 根據(jù)優(yōu)化程序的基于開銷的方法所估計(jì)出的操作開銷值對(duì)于使用基于規(guī)則方法的語(yǔ)句該列為空該列值沒有特定的測(cè)量單位它只是一個(gè)用于比較執(zhí)行規(guī)劃開銷大小的權(quán)重值

CARDINALITY INTEGER 根據(jù)基于開銷的方法對(duì)操作所訪問行數(shù)的估計(jì)值

BYTES INTEGER 根據(jù)基于開銷的方法對(duì)操作所訪問字節(jié)的估計(jì)

=============================================

你按照我說(shuō)的做,后面用

SELECT

*

FROM

PLAN_TABLE A

WHERE

STATEMENT_ID='name'

結(jié)果已經(jīng)很清楚了,全部滿足你的要求。

各列的具體含義上面已經(jīng)給出。

應(yīng)用軟件對(duì)oracle操作的語(yǔ)句跟蹤方法請(qǐng)教

1.如果你的軟件有源代碼,可以使用跟蹤調(diào)試模式來(lái)判斷執(zhí)行到了哪一行。

2.如果你的軟件是打好包的 只能使用ORACLE的 SQLTRACE模式..具體請(qǐng)搜索..ORACLE會(huì)把每個(gè)動(dòng)作寫到日志里,包括數(shù)據(jù)字典的操作..非常非常的詳細(xì), 記得使用完畢關(guān)掉,不然你的日志會(huì)爆掉。


名稱欄目:如何追蹤oracle語(yǔ)句,oracle怎么跟蹤sql
文章網(wǎng)址:http://weahome.cn/article/hosodp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部