當前位置:首頁 » 編程語言 » 跟蹤oraclesql

跟蹤oraclesql

發布時間: 2022-07-05 03:33:52

❶ Oracle 資料庫如何跟蹤sql語句

沒用,只想從後台資料庫看對這個資料庫執行的sql問題補充:unika_ly12 寫道 那你直接查詢 v$sqltext 和 v$session 好了 首先,你要以dba身份登陸資料庫。 第二,為某個用戶開啟sql跟蹤。那個用戶就是你要跟蹤的、正在執行sql語句的那個用戶。命令如下: execute dbms_system.set_sql_trace_in_session(sid,serial#,true) 其中參數的意義是,sid-會話id,serial#-序列號,這兩個參數可以從v$session中得到。 第三,上面的命令執行成功之後資料庫就自動對該用戶所發出的所有sql語句進行跟蹤,並把結果寫在用戶跟蹤文件里。用戶跟蹤文件存放在資料庫伺服器上,路徑請參考init.ora文件中的ump參數值。文件名為ora_sid_xxxx.trc(for unix)或者oraxxxxx.trc(for NT),其中xxxx文件系統進程編號,這個編號可以從v$process和v$session兩個表通過關聯的方式查詢得到。當然你也可以簡單的查看一下哪個trc文件的日期最新,哪個文件就是你要的結果了。 首先,你要以dba身份登陸資料庫。 第二,為某個用戶開啟sql跟蹤。那個用戶就是你要跟蹤的、正在執行sql語句的那個用戶。命令如下: execute dbms_system.set_sql_trace_in_session(sid,serial#,true) 其中參數的意義是,sid-會話id,serial#-序列號,這兩個參數可以從v$session中得到。 第三,上面的命令執行成功之後資料庫就自動對該用戶所發出的所有sql語句進行跟蹤,並把結果寫在用戶跟蹤文件里。用戶跟蹤文件存放在資料庫伺服器上,路徑請參考init.ora文件中的ump參數值。文件名為ora_sid_xxxx.trc(for unix)或者oraxxxxx.trc(for NT),其中xxxx文件系統進程編號,這個編號可以從v$process和v$session兩個表通過關聯的方式查詢得到。當然你也可以簡單的查看一下哪個trc文件的日期最新,哪個文件就是你要的結果了。

❷ oracle怎樣開啟sql跟蹤

一.在系統級別上設置sql跟蹤
該方法優點:可以跟蹤所有的oracle的後台進程所執行的sql,包括系統後台進程和用戶進程,並且可以跟蹤所有的操作
缺點:跟蹤所有的後台進程,跟蹤信息量比較大
1.在sqlplus中以sys/ as sysdba身份登陸到資料庫。
2.打開跟蹤,在sqlplus中輸入alter sysetem set events '10046 trace name context forever,level &level';
(其中&level可以輸入1,4,8,12三個級別,不同的級別含有不同級別的信息)
3.然後到ArcMap或ArcCatalog中進行你想跟蹤的操作
4.關閉跟蹤,在sqlplus中輸入alter systemm set events '10046 trace name context off';
5.查找你所跟蹤的session的ID
A 修改時間格式:alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS';
B.對使用sde服務的輸入:select sid,logon_time from v$session where username=&username and program='gsrvr.exe';
C.對直連這種方式輸入:select sid,logon_time from v$session where username=&username and program='ArcCatalog';
select sid,logon_time from v$session where username=&username and program='ArcMap';
(其中&username是程序登陸到資料庫的用戶名,如果返回多個結果,在根據登陸的時間確定具體的sid值)
6.執行以下的sql語句
SELECT d.VALUE
|| '/'
|| LOWER (RTRIM (i.INSTANCE, CHR (0)))
|| '_ora_'
|| p.spid
|| '.trc' trace_file_name
FROM (SELECT p.spid
FROM v$mystat m, v$session s, v$process p
WHERE m.statistic# = 1 AND s.SID = &SID 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_mp_dest') d
在輸入sid後,即得到後台的跟蹤文件。

二. 在session級別上設置跟蹤
該方法只適用於跟蹤登陸數據後所進行的一系列的操作,比如跟蹤在ArcCatalog中創建一個Dataset,FeatureClass等的操作
1.在sqlplus中以sys / as sysdba身份登陸到資料庫
2.查找你所要跟蹤的session的sid和serial#
A 修改時間格式:alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS';
B.對使用sde服務的輸入:select sid,serial#,logon_time from v$session where username=&username and program='gsrvr.exe';
C.對直連這種方式輸入:select sid,serial#,logon_time from v$session where username=&username and program='ArcCatalog';
select sid,serial#,logon_time from v$session where username=&username and program='ArcMap';
(其中&username是程序登陸到資料庫的用戶名,如果返回多個結果,在根據登陸的時間確定具體的sid和serial#的值)
3.開始跟蹤,輸入exec dbms_support.start_trace_in_session(&sid,&serial#,true,true).(如果系統沒有安裝dbms_support包,可以執行$ORACLE_HOME\rdbms\admin\dbmssupp.sql進行安裝)
4.然後到ArcMap或ArcCatalog中進行你想跟蹤的操作
5.結束跟蹤exec dbms_support.stop_trace_in_session(&sid,&serial#);
6.執行以下的sql語句
SELECT d.VALUE
|| '/'
|| LOWER (RTRIM (i.INSTANCE, CHR (0)))
|| '_ora_'
|| p.spid
|| '.trc' trace_file_name
FROM (SELECT p.spid
FROM v$mystat m, v$session s, v$process p
WHERE m.statistic# = 1 AND s.SID = &SID 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_mp_dest') d
在輸入sid後,即得到後台的跟蹤文件。

三. 在Aix系統下跟蹤消耗內存的session的辦法
1.在Aix系統上執行export TERM=vt100
2.執行topas命令,確定最佔cpu資源的process的進程號
3,然後利用select a.sid,b.serial# from v$session a,v$process b where a.paddr=b.addr and b.spid=&spid;
4.確定sid和serial#後利用二方法進行跟蹤。

❸ 如何在Oracle資料庫10g中跟蹤SQL

1. 啟用 sql_trace 跟蹤當前 session
開啟會話跟蹤:alter session set sql_trace=true;
關閉會話跟蹤:alter session set sql_trace=false;

2. 啟用 10046 事件跟蹤全局 session
這將會對整個系統的性能產生嚴重的影響,所以一般不建議開啟。
開啟會話跟蹤:alter system set events 『10046 trace name context forever, level 12』;
關閉會話跟蹤:alter system set events 『10046 trace name context off』;

3. 使用 Oracle 系統包 DBMS_SYSTEM.SET_EV 跟蹤指定 session
開啟會話跟蹤:SQL> exec dbms_system.set_ev(143, 112, 10046, 12, '');
關閉會話跟蹤:SQL> exec dbms_system.set_ev(143, 112, 10046, 0, '');

❹ 如何在Oracle 10g中跟蹤SQL

在具有許多活躍用戶的繁忙生產環境中,跟蹤SQL會話是費時且十分復雜的,因為在任何使用連接池的多層系統中處理SQL語句可能要涉及多個進程,或者甚至是不同的實例。
利用Oracle資料庫10g,Oralce通過一個新的內置軟體包DBMS_MONITOR合理化了SQL的跟蹤,這個軟體包中包含以前無書面記載的跟蹤工具(如DBMS_SUPPORT軟體包)的功能。現在,您可以輕松地從頭到尾--從客戶機到中間層再到後端--跟蹤任何用戶的會話,並且基於特定的客戶ID、模塊或動作生成跟蹤文件。
此外,Oracle資料庫10g包含一種新的實用程序trcsess,它可以讓您基於會話ID或模塊名稱之類的條件,有選擇地從大量跟蹤文件中抽取出跟蹤數據,並將它們保存到一個文件中。該實用程序在共享伺服器配置中特別有用,因為調度程序可能把每一個用戶請求傳遞給不同的共享伺服器進程,從而為任何給定的會話產生多個跟蹤文件。與通過大量跟蹤文件發掘信息不同,Oracle資料庫10g的trcsess可以讓您獲得關於單一用戶會話的整合後的跟蹤信息。
開始
和Oracle資料庫的以前版本一樣,跟蹤文件將被輸出到由伺服器的初始化文件(或spfile)的user_mp_dest參數指定的目錄中。默認的位置取決於操作系統;例如,對於使用DBCA的Microsoft Windows平台,默認位置是$ORACLE_BASE\instance_name\admin\ump,其中instance_ name是Oracle實例的名稱。您可以通過使用以下改變會話命令來動態地更改該參數:
alter session set user_mp_dest="c:\kflosstrace";
您還可以把您自己的標記添加到跟蹤文件名中,以便您能夠更容易地找到生成的文件。為此,可以在啟動跟蹤之前設置tracefile_identifier初始化參數:
alter session set
tracefile_identifier ="kfloss_test";
通過該命令生成的跟蹤文件帶有您設置的附加在文件名後的字元串值。盡管這些改變會話命令都不是必要的,但是它們都會使查找跟蹤會話的結果更容易。
現在,我們已經設置了這些參數,那麼讓我們看看新的跟蹤軟體包和Oracle企業管理器的界面。讓我們使用新的DBMS_MONITOR軟體包通過模塊名稱和客戶機名稱來建立一個跟蹤。
用DBMS_MONITOR建立跟蹤
DBMS_MONITOR包具有多個常式,用於啟用和禁用統計數據集合,以及用於根據會話ID進行跟蹤、或者基於服務名稱、模塊名稱和動作名稱的組合進行跟蹤。(它們三者從層次結構上是關聯的:您不能在不指定模塊和服務名稱的情況下指定一個動作,但是您可以只指定服務名稱,或者只指定服務名稱和模塊名稱)。 模塊名稱和動作名稱(如果有的話)都來自於應用程序代碼內部。例如,Oracle電子商務套件應用程序在代碼中提供了模塊名稱和動作名稱,這樣您就可以在任何Oralce企業管理器頁面中通過名稱來識別它們。 (PL/SQL開發人員可以通過使用DBMS_APPLICATION_INFO包設置模塊名稱和動作名稱,把一些調用嵌入到他們的應用程序中)。
請注意,設置模塊、動作及其他參數(如client_id)將不造成對資料庫的往返操作--這些常式攜帶來自應用程序的所有調用。
服務名稱由用於連接該服務的連接字元串來確定。未與特定服務關聯的用戶會話將由sys$users處理(sys$background是後台進程的默認服務)。由於我們具有一個服務和一個模塊名稱,因而我們可以啟動對該模塊的跟蹤,如下所示:
SQL> exec dbms_monitor.serv_mod_act_trace_enable
(service_name=>'testenv', mole_name=>'proct_update');
PL/SQL過程已成功完成。
我們可以啟動對客戶機的跟蹤:
SQL> exec dbms_monitor.client_id_trace_enable
(client_id=>'kimberly');
PL/SQL過程已成功完成。
請注意,所有這些設置都是永久性的--所有與該服務和模塊關聯的會話都會被跟蹤,而不僅僅是跟蹤當前會話。
為了基於會話ID跟蹤SQL,可以查看Oracle企業管理器的Top Sessions頁面,或者像您當前做的那樣查詢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.
通過會話ID(SID)和序號,您可以使用DBMS_MONITOR只對下面的會話啟用跟蹤:
SQL> exec dbms_monitor.session_trace_enable(139);
PL/SQL過程已成功完成。
該序號默認為該SID的當前序號(除非另外指定),因此如果那就是您想跟蹤的會話和序號,那麼您就不必查看更多的內容了。還有,默認情況下,WAITS設置為true而BINDS設置為false,因此上面的語法實際上與下面的語法效果相同:
SQL> exec dbms_monitor.session_trace_enable
(session_id=>139, serial_num=>53, waits=>true, binds=>false);
請注意,WAITS和BINDS是相同的參數,您在過去可能已經使用DBMS_SUPPORT和10046事件對它們進行了設置。
如果您正在一個生產環境中工作,那麼此時您最好重新運行出錯的SQL或應用程序,並且相應地創建跟蹤文件。
用企業管理器建立跟蹤
通過Oracle企業管理器建立跟蹤從Top Consumers頁面(可以通過Additional Monitoring Links區域中的Performance頁面得到,如圖1所示)開始。該頁面顯示服務、模塊、客戶和動作對系統資源的當前使用情況。
圖1:Oracle企業管理器的Top Consumers頁面
您可以單擊Top Services、Top Moles、Top Actions、Top Clients或Top Sessions選項卡,來查看這些類別的頂級消費者中每一種的詳細信息,隨後您可以通過這些頁面中的每一個頁面輕松啟用(或禁用)SQL跟蹤。從頁面上的列表中簡單地選擇項目,然後單擊啟用SQL跟蹤(Enable SQL Trace)開始跟蹤(當您完成跟蹤時,單擊禁用按鈕)。
您還可以啟用(或禁用)這些頁面上列出的任何項目的統計數據集合。(DBMS_MONITOR還提供了用於啟用和禁用數據集合的常式)。
分析跟蹤結果
獲取關於Kimberly Floss的圖書的信息
無論您是使用DBMS_MONITOR或者是使用Oracle企業管理器建立跟蹤,您都將使用trcsess 命令行工具來整合跟蹤文件。單擊Oracle企業管理器中的查看SQL跟蹤(View SQL Trace)按鈕顯示一個頁面,其中顯示了您將用於整合所有跟蹤文件的語法。
要確保用雙引號括住字元串,並在文件名後添加一個".trc"擴展名;否則,TKPROF將不會把它作為一個文件名來接受。在執行該命令之前,找到在user_mp_dest(或者,如果您沒有更改該參數名,則在\ump)中指定的目錄。
C:\...\ump> trcsess output="kfloss.trc" service="testenv"
mole="proct update"
action="batch insert"
隨後,您可以對整合的跟蹤文件運行TKPROF,以生成一份報告。

C:\...\ump> tkprof kfloss.trc
output=kfloss_trace_report SORT=(EXEELA, PRSELA, FCHELA)
如果您不終止跟蹤,那麼運行該服務和模塊的每一個會話都會被跟蹤。因此,當您完成跟蹤時,要確保通過使用Oralce企業管理器或DBMS_MONITOR包來終止跟蹤。

❺ 如何跟蹤oracle存儲過程運行了哪些 sql

在sqlplus
下執行
alter
session
set
sql_trace=true;
alter
session
set
tracefile_identifier='AAAA';
call
存儲過程
名;
alter
session
set
sql_trace=false;
然後到oracle伺服器的安裝目錄下去找文件名稱含AAAA的文件,那裡頭有具體調用存儲過程時的執行過程。應該有你要的東西。

❻ 如何使用TOAD 跟蹤oracle的SQL語句.

買個guardium,可以監控所有資料庫變化

Toad里邊有查看功能,找到你那個session,然後就會列出執行的語句,用了多長時間啥的

❼ oracle怎樣跟蹤一條sql語句的執行過程

需要建立一張表來記錄
explain plan SET statement_id='name' FOR (這里是你要調試的語句 )

SELECT
A.OPERATION,
OPTIONS,
OBJECT_NAME,
OBJECT_TYPE,
ID,
PARENT_ID
FROM
PLAN_TABLE A
WHERE
STATEMENT_ID='name'
ORDER BY
Id;

ID 'name'是一個標識,你可以自己取,欄位有很多個,以下是各個欄位的解釋(可能格式不對,你可以復制後看):

欄位名 欄位類型 含義
STATEMENT_ID VARCHAR2(30) explain PLAN 語句中所指定的最優STATEMENT_ID 參數值, 如果在EXPLAN PLAN語句中沒有使用SET STATEMENT_ID,那麼此值會被設為NULL。

REMARKS VARCHAR2(80) 與被解釋規劃的各步驟相關聯的注釋最長可達80 位元組

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

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

OBJECT_NODE VARCHAR2(128) 用於訪問對象的資料庫鏈接database link 的名稱對於使用並行執行的本地查詢該列能夠描述操作中輸出的次序

OBJECT_OWNER VARCHAR2(30) 對於包含有表或索引的架構schema 給出其所有者的名稱

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

OBJECT_INSTANCE INTEGER 根據對象出現在原始original 語句中的次序所給出的相應次序編號就原始的語句文本而論其處理順序為自左至右自外向內景象擴張view

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

OPTIMIZER VARCHAR2(255) 當前優化程序的模式

ID INTEGER 分配給執行規劃各步驟的編號

PARENT_ID INTEGER 對ID 步驟的輸出進行操作的下一個執行步驟的ID

POSITION INTEGER 對於具有相同PARENT_ID 的步驟其相應的處理次序

COST INTEGER 根據優化程序的基於開銷的方法所估計出的操作開銷值對於使用基於規則方法的語句該列為空該列值沒有特定的測量單位它只是一個用於比較執行規劃開銷大小的權重值

CARDINALITY INTEGER 根據基於開銷的方法對操作所訪問行數的估計值

BYTES INTEGER 根據基於開銷的方法對操作所訪問位元組的估計
=============================================

你按照我說的做,後面用
SELECT
*
FROM
PLAN_TABLE A
WHERE
STATEMENT_ID='name'

結果已經很清楚了,全部滿足你的要求。
各列的具體含義上面已經給出。

❽ 如何實時跟蹤oracle的sql語句

如何實時跟蹤oracle的sql語句
這個要開啟oracle的audit功能。
select * from DBA_AUDIT_OBJECT

❾ 怎樣跟蹤oracle伺服器上正在執行哪些sql語句

<property name="show_sql">true</property>
<property name="format_sql">true</property>
這個是在hibernate框架下的

❿ oracle SQL跟蹤,如何跟蹤某個用戶發出的所有SQL

需要打開oracle審計功能才能記錄,並且消耗一定性能。
簡單打開審計如下
1、設置參數
alter system set audit_trail=db scope=spfile;
2、重啟資料庫
3、打開相應的審計(審計選項很多),如,對用戶test對表操作的審計
audit table by test;
4、以dba查看審計記錄
select * from dba_audit_trail;

熱點內容
資料庫定義實驗 發布:2024-03-29 19:52:20 瀏覽:578
如何除去安卓手機的馬賽克 發布:2024-03-29 19:52:16 瀏覽:584
網站緩存設置 發布:2024-03-29 19:47:20 瀏覽:798
在jsp中使用資料庫 發布:2024-03-29 19:29:01 瀏覽:786
dns伺服器江川區ip地址 發布:2024-03-29 18:47:53 瀏覽:328
sql統計百分比 發布:2024-03-29 18:47:14 瀏覽:692
javatoolsfor 發布:2024-03-29 18:17:55 瀏覽:900
linuxi2c驅動 發布:2024-03-29 18:09:56 瀏覽:672
junit源碼下載 發布:2024-03-29 18:00:10 瀏覽:526
本田雅閣壓縮機不工作 發布:2024-03-29 17:59:13 瀏覽:601