用hibernate沒(méi)有,用的設(shè)置屬性show_sql為true
創(chuàng)新互聯(lián)公司長(zhǎng)期為千余家客戶(hù)提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為繁峙企業(yè)提供專(zhuān)業(yè)的成都網(wǎng)站建設(shè)、網(wǎng)站制作,繁峙網(wǎng)站改版等技術(shù)服務(wù)。擁有十年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。
沒(méi)用,只想從后臺(tái)數(shù)據(jù)庫(kù)看對(duì)這個(gè)數(shù)據(jù)庫(kù)執(zhí)行的sql問(wèn)題補(bǔ)充:unika_ly12 寫(xiě)道
那你直接查詢(xún) v$sqltext 和 v$session 好了
首先,你要以dba身份登陸數(shù)據(jù)庫(kù)。
第二,為某個(gè)用戶(hù)開(kāi)啟sql跟蹤。那個(gè)用戶(hù)就是你要跟蹤的、正在執(zhí)行sql語(yǔ)句的那個(gè)用戶(hù)。命令如下:
execute dbms_system.set_sql_trace_in_session(sid,serial#,true)
其中參數(shù)的意義是,sid-會(huì)話(huà)id,serial#-序列號(hào),這兩個(gè)參數(shù)可以從v$session中得到。
第三,上面的命令執(zhí)行成功之后數(shù)據(jù)庫(kù)就自動(dòng)對(duì)該用戶(hù)所發(fā)出的所有sql語(yǔ)句進(jìn)行跟蹤,并把結(jié)果寫(xiě)在用戶(hù)跟蹤文件里。用戶(hù)跟蹤文件存放在數(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)的方式查詢(xún)得到。當(dāng)然你也可以簡(jiǎn)單的查看一下哪個(gè)trc文件的日期最新,哪個(gè)文件就是你要的結(jié)果了。
首先,你要以dba身份登陸數(shù)據(jù)庫(kù)。
第二,為某個(gè)用戶(hù)開(kāi)啟sql跟蹤。那個(gè)用戶(hù)就是你要跟蹤的、正在執(zhí)行sql語(yǔ)句的那個(gè)用戶(hù)。命令如下:
execute dbms_system.set_sql_trace_in_session(sid,serial#,true)
其中參數(shù)的意義是,sid-會(huì)話(huà)id,serial#-序列號(hào),這兩個(gè)參數(shù)可以從v$session中得到。
第三,上面的命令執(zhí)行成功之后數(shù)據(jù)庫(kù)就自動(dòng)對(duì)該用戶(hù)所發(fā)出的所有sql語(yǔ)句進(jìn)行跟蹤,并把結(jié)果寫(xiě)在用戶(hù)跟蹤文件里。用戶(hù)跟蹤文件存放在數(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)的方式查詢(xún)得到。當(dāng)然你也可以簡(jiǎn)單的查看一下哪個(gè)trc文件的日期最新,哪個(gè)文件就是你要的結(jié)果了。
execute dbms_system.set_sql_trace_in_session(sid,serial#,false)Good Luck我按你說(shuō)的做了一遍,execute dbms_system.set_sql_trace_in_session(sid,serial#,true)
在具有許多活躍用戶(hù)的繁忙生產(chǎn)環(huán)境中,跟蹤SQL會(huì)話(huà)是費(fèi)時(shí)且十分復(fù)雜的,因?yàn)樵谌魏问褂眠B接池的多層系統(tǒng)中處理SQL語(yǔ)句可能要涉及多個(gè)進(jìn)程,或者甚至是不同的實(shí)例。
利用Oracle數(shù)據(jù)庫(kù)10g,Oralce通過(guò)一個(gè)新的內(nèi)置軟件包DBMS_MONITOR合理化了SQL的跟蹤,這個(gè)軟件包中包含以前無(wú)書(shū)面記載的跟蹤工具(如DBMS_SUPPORT軟件包)的功能?,F(xiàn)在,您可以輕松地從頭到尾--從客戶(hù)機(jī)到中間層再到后端--跟蹤任何用戶(hù)的會(huì)話(huà),并且基于特定的客戶(hù)ID、模塊或動(dòng)作生成跟蹤文件。
此外,Oracle數(shù)據(jù)庫(kù)10g包含一種新的實(shí)用程序trcsess,它可以讓您基于會(huì)話(huà)ID或模塊名稱(chēng)之類(lèi)的條件,有選擇地從大量跟蹤文件中抽取出跟蹤數(shù)據(jù),并將它們保存到一個(gè)文件中。該實(shí)用程序在共享服務(wù)器配置中特別有用,因?yàn)檎{(diào)度程序可能把每一個(gè)用戶(hù)請(qǐng)求傳遞給不同的共享服務(wù)器進(jìn)程,從而為任何給定的會(huì)話(huà)產(chǎn)生多個(gè)跟蹤文件。與通過(guò)大量跟蹤文件發(fā)掘信息不同,Oracle數(shù)據(jù)庫(kù)10g的trcsess可以讓您獲得關(guān)于單一用戶(hù)會(huì)話(huà)的整合后的跟蹤信息。
開(kāi)始
和Oracle數(shù)據(jù)庫(kù)的以前版本一樣,跟蹤文件將被輸出到由服務(wù)器的初始化文件(或spfile)的user_dump_dest參數(shù)指定的目錄中。默認(rèn)的位置取決于操作系統(tǒng);例如,對(duì)于使用DBCA的Microsoft Windows平臺(tái),默認(rèn)位置是$ORACLE_BASE\instance_name\admin\udump,其中instance_ name是Oracle實(shí)例的名稱(chēng)。您可以通過(guò)使用以下改變會(huì)話(huà)命令來(lái)動(dòng)態(tài)地更改該參數(shù):
alter session set user_dump_dest="c:\kflosstrace";
您還可以把您自己的標(biāo)記添加到跟蹤文件名中,以便您能夠更容易地找到生成的文件。為此,可以在啟動(dòng)跟蹤之前設(shè)置tracefile_identifier初始化參數(shù):
alter session set
tracefile_identifier ="kfloss_test";
通過(guò)該命令生成的跟蹤文件帶有您設(shè)置的附加在文件名后的字符串值。盡管這些改變會(huì)話(huà)命令都不是必要的,但是它們都會(huì)使查找跟蹤會(huì)話(huà)的結(jié)果更容易。
現(xiàn)在,我們已經(jīng)設(shè)置了這些參數(shù),那么讓我們看看新的跟蹤軟件包和Oracle企業(yè)管理器的界面。讓我們使用新的DBMS_MONITOR軟件包通過(guò)模塊名稱(chēng)和客戶(hù)機(jī)名稱(chēng)來(lái)建立一個(gè)跟蹤。
用DBMS_MONITOR建立跟蹤
DBMS_MONITOR包具有多個(gè)例程,用于啟用和禁用統(tǒng)計(jì)數(shù)據(jù)集合,以及用于根據(jù)會(huì)話(huà)ID進(jìn)行跟蹤、或者基于服務(wù)名稱(chēng)、模塊名稱(chēng)和動(dòng)作名稱(chēng)的組合進(jìn)行跟蹤。(它們?nèi)邚膶哟谓Y(jié)構(gòu)上是關(guān)聯(lián)的:您不能在不指定模塊和服務(wù)名稱(chēng)的情況下指定一個(gè)動(dòng)作,但是您可以只指定服務(wù)名稱(chēng),或者只指定服務(wù)名稱(chēng)和模塊名稱(chēng))。 模塊名稱(chēng)和動(dòng)作名稱(chēng)(如果有的話(huà))都來(lái)自于應(yīng)用程序代碼內(nèi)部。例如,Oracle電子商務(wù)套件應(yīng)用程序在代碼中提供了模塊名稱(chēng)和動(dòng)作名稱(chēng),這樣您就可以在任何Oralce企業(yè)管理器頁(yè)面中通過(guò)名稱(chēng)來(lái)識(shí)別它們。 (PL/SQL開(kāi)發(fā)人員可以通過(guò)使用DBMS_APPLICATION_INFO包設(shè)置模塊名稱(chēng)和動(dòng)作名稱(chēng),把一些調(diào)用嵌入到他們的應(yīng)用程序中)。
請(qǐng)注意,設(shè)置模塊、動(dòng)作及其他參數(shù)(如client_id)將不造成對(duì)數(shù)據(jù)庫(kù)的往返操作--這些例程攜帶來(lái)自應(yīng)用程序的所有調(diào)用。
服務(wù)名稱(chēng)由用于連接該服務(wù)的連接字符串來(lái)確定。未與特定服務(wù)關(guān)聯(lián)的用戶(hù)會(huì)話(huà)將由sys$users處理(sys$background是后臺(tái)進(jìn)程的默認(rèn)服務(wù))。由于我們具有一個(gè)服務(wù)和一個(gè)模塊名稱(chēng),因而我們可以啟動(dòng)對(duì)該模塊的跟蹤,如下所示:
SQL exec dbms_monitor.serv_mod_act_trace_enable
(service_name='testenv', module_name='product_update');
PL/SQL過(guò)程已成功完成。
我們可以啟動(dòng)對(duì)客戶(hù)機(jī)的跟蹤:
SQL exec dbms_monitor.client_id_trace_enable
(client_id='kimberly');
PL/SQL過(guò)程已成功完成。
請(qǐng)注意,所有這些設(shè)置都是永久性的--所有與該服務(wù)和模塊關(guān)聯(lián)的會(huì)話(huà)都會(huì)被跟蹤,而不僅僅是跟蹤當(dāng)前會(huì)話(huà)。
為了基于會(huì)話(huà)ID跟蹤SQL,可以查看Oracle企業(yè)管理器的Top Sessions頁(yè)面,或者像您當(dāng)前做的那樣查詢(xún)V$SESSION視圖。
SQL select sid, serial#, username
from v$session;
SID SERIAL# USERNAME
------ ------- ------------
133 4152 SYS
137 2418 SYSMAN
139 53 KIMBERLY
140 561 DBSNMP
141 4 DBSNMP
. . .
168 1
169 1
170 1
28 rows selected.
通過(guò)會(huì)話(huà)ID(SID)和序號(hào),您可以使用DBMS_MONITOR只對(duì)下面的會(huì)話(huà)啟用跟蹤:
SQL exec dbms_monitor.session_trace_enable(139);
PL/SQL過(guò)程已成功完成。
該序號(hào)默認(rèn)為該SID的當(dāng)前序號(hào)(除非另外指定),因此如果那就是您想跟蹤的會(huì)話(huà)和序號(hào),那么您就不必查看更多的內(nèi)容了。還有,默認(rèn)情況下,WAITS設(shè)置為true而B(niǎo)INDS設(shè)置為false,因此上面的語(yǔ)法實(shí)際上與下面的語(yǔ)法效果相同:
SQL exec dbms_monitor.session_trace_enable
(session_id=139, serial_num=53, waits=true, binds=false);
請(qǐng)注意,WAITS和BINDS是相同的參數(shù),您在過(guò)去可能已經(jīng)使用DBMS_SUPPORT和10046事件對(duì)它們進(jìn)行了設(shè)置。
如果您正在一個(gè)生產(chǎn)環(huán)境中工作,那么此時(shí)您最好重新運(yùn)行出錯(cuò)的SQL或應(yīng)用程序,并且相應(yīng)地創(chuàng)建跟蹤文件。
用企業(yè)管理器建立跟蹤
通過(guò)Oracle企業(yè)管理器建立跟蹤從Top Consumers頁(yè)面(可以通過(guò)Additional Monitoring Links區(qū)域中的Performance頁(yè)面得到,如圖1所示)開(kāi)始。該頁(yè)面顯示服務(wù)、模塊、客戶(hù)和動(dòng)作對(duì)系統(tǒng)資源的當(dāng)前使用情況。
圖1:Oracle企業(yè)管理器的Top Consumers頁(yè)面
您可以單擊Top Services、Top Modules、Top Actions、Top Clients或Top Sessions選項(xiàng)卡,來(lái)查看這些類(lèi)別的頂級(jí)消費(fèi)者中每一種的詳細(xì)信息,隨后您可以通過(guò)這些頁(yè)面中的每一個(gè)頁(yè)面輕松啟用(或禁用)SQL跟蹤。從頁(yè)面上的列表中簡(jiǎn)單地選擇項(xiàng)目,然后單擊啟用SQL跟蹤(Enable SQL Trace)開(kāi)始跟蹤(當(dāng)您完成跟蹤時(shí),單擊禁用按鈕)。
您還可以啟用(或禁用)這些頁(yè)面上列出的任何項(xiàng)目的統(tǒng)計(jì)數(shù)據(jù)集合。(DBMS_MONITOR還提供了用于啟用和禁用數(shù)據(jù)集合的例程)。
分析跟蹤結(jié)果
獲取關(guān)于Kimberly Floss的圖書(shū)的信息
無(wú)論您是使用DBMS_MONITOR或者是使用Oracle企業(yè)管理器建立跟蹤,您都將使用trcsess 命令行工具來(lái)整合跟蹤文件。單擊Oracle企業(yè)管理器中的查看SQL跟蹤(View SQL Trace)按鈕顯示一個(gè)頁(yè)面,其中顯示了您將用于整合所有跟蹤文件的語(yǔ)法。
要確保用雙引號(hào)括住字符串,并在文件名后添加一個(gè)".trc"擴(kuò)展名;否則,TKPROF將不會(huì)把它作為一個(gè)文件名來(lái)接受。在執(zhí)行該命令之前,找到在user_dump_dest(或者,如果您沒(méi)有更改該參數(shù)名,則在\udump)中指定的目錄。
C:\...\udump trcsess output="kfloss.trc" service="testenv"
module="product update"
action="batch insert"
隨后,您可以對(duì)整合的跟蹤文件運(yùn)行TKPROF,以生成一份報(bào)告。
C:\...\udump tkprof kfloss.trc
output=kfloss_trace_report SORT=(EXEELA, PRSELA, FCHELA)
如果您不終止跟蹤,那么運(yùn)行該服務(wù)和模塊的每一個(gè)會(huì)話(huà)都會(huì)被跟蹤。因此,當(dāng)您完成跟蹤時(shí),要確保通過(guò)使用Oralce企業(yè)管理器或DBMS_MONITOR包來(lái)終止跟蹤。
需要建立一張表來(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è)字段的解釋?zhuān)赡芨袷讲粚?duì),你可以復(fù)制后看):
字段名 字段類(lèi)型 含義
STATEMENT_ID VARCHAR2(30) explain PLAN 語(yǔ)句中所指定的最優(yōu)STATEMENT_ID 參數(shù)值, 如果在EXPLAN PLAN語(yǔ)句中沒(méi)有使用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)部操作的名稱(chēng)在某條語(yǔ)句所產(chǎn)生的第一行中該列的可能取值如下DELETE STATEMENT INSERT STATEMENT SELECT STATEMENT UPDATE STATEMENT
OPTIONS VARCHAR2(30) 對(duì)OPERATION 列中所描述操作的變種
OBJECT_NODE VARCHAR2(128) 用于訪問(wèn)對(duì)象的數(shù)據(jù)庫(kù)鏈接database link 的名稱(chēng)對(duì)于使用并行執(zhí)行的本地查詢(xún)?cè)摿心軌蛎枋霾僮髦休敵龅拇涡?/p>
OBJECT_OWNER VARCHAR2(30) 對(duì)于包含有表或索引的架構(gòu)schema 給出其所有者的名稱(chēng)
OBJECT_NAME VARCHAR2(30) 表或索引的名稱(chēng)
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)化程序的基于開(kāi)銷(xiāo)的方法所估計(jì)出的操作開(kāi)銷(xiāo)值對(duì)于使用基于規(guī)則方法的語(yǔ)句該列為空該列值沒(méi)有特定的測(cè)量單位它只是一個(gè)用于比較執(zhí)行規(guī)劃開(kāi)銷(xiāo)大小的權(quán)重值
CARDINALITY INTEGER 根據(jù)基于開(kāi)銷(xiāo)的方法對(duì)操作所訪問(wèn)行數(shù)的估計(jì)值
BYTES INTEGER 根據(jù)基于開(kāi)銷(xiāo)的方法對(duì)操作所訪問(wèn)字節(jié)的估計(jì)
=============================================
你按照我說(shuō)的做,后面用
SELECT
*
FROM
PLAN_TABLE A
WHERE
STATEMENT_ID='name'
結(jié)果已經(jīng)很清楚了,全部滿(mǎn)足你的要求。
各列的具體含義上面已經(jīng)給出。
用toad 的工具可以進(jìn)行跟蹤。查找toad的路徑 右鍵屬性 查找相應(yīng)文件夾 然后 找尋同級(jí)目錄下的 sql_monitor 這個(gè)工具就可以對(duì) Oracle運(yùn)行數(shù)據(jù)進(jìn)行跟蹤。
1. 啟用 sql_trace 跟蹤當(dāng)前 session
開(kāi)啟會(huì)話(huà)跟蹤:alter session set sql_trace=true;
關(guān)閉會(huì)話(huà)跟蹤:alter session set sql_trace=false;
2. 啟用 10046 事件跟蹤全局 session
這將會(huì)對(duì)整個(gè)系統(tǒng)的性能產(chǎn)生嚴(yán)重的影響,所以一般不建議開(kāi)啟。
開(kāi)啟會(huì)話(huà)跟蹤:alter system set events ‘10046 trace name context forever, level 12’;
關(guān)閉會(huì)話(huà)跟蹤:alter system set events ‘10046 trace name context off’;
3. 使用 Oracle 系統(tǒng)包 DBMS_SYSTEM.SET_EV 跟蹤指定 session
開(kāi)啟會(huì)話(huà)跟蹤:SQL exec dbms_system.set_ev(143, 112, 10046, 12, '');
關(guān)閉會(huì)話(huà)跟蹤:SQL exec dbms_system.set_ev(143, 112, 10046, 0, '');
文章題目:oracle跟蹤如何用 oracle 跟蹤sql語(yǔ)句
本文來(lái)源:http://www.jinyejixie.com/article8/hpddip.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開(kāi)發(fā)、服務(wù)器托管、網(wǎng)站策劃、企業(yè)建站、做網(wǎng)站、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)