oracle跟蹤sql
A. Oracle中有沒有什麼工具 可以像MSsql的Profiler工具一樣實時跟蹤被執行的SQL語句
oracle 可以在 v$sqlarea (v$sqltext)查詢到已經和正在運行的sql 可以在v$open_cursor 中查到正open狀態的cursor可以通過 v$session join to v$sql 查到正在running 的session和sqlSQL TRACE! http://rake.itpub.net/post/4038/25044
B. 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'
結果已經很清楚了,全部滿足你的要求。
各列的具體含義上面已經給出。
C. 如何實時跟蹤oracle的sql語句
如何實時跟蹤oracle的sql語句
這個要開啟oracle的audit功能。
select * from DBA_AUDIT_OBJECT
D. 如何跟蹤oracle存儲過程運行了哪些 sql
在sqlplus
下執行
alter
session
set
sql_trace=true;
alter
session
set
tracefile_identifier='AAAA';
call
存儲過程
名;
alter
session
set
sql_trace=false;
然後到oracle伺服器的安裝目錄下去找文件名稱含AAAA的文件,那裡頭有具體調用存儲過程時的執行過程。應該有你要的東西。
E. 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;
F. oracle跟蹤表結構,查看哪些表被更新的SQL
我首先想到的是觸發器(after類型),不過細琢磨了一下,似乎不那麼靠譜,如果你要關注的表有幾百張,那麼難道建立幾百個出發器么?
可能,僅僅是可能啊,這個不常用,因為比較消耗資源,你試試oracle的審計功能,大概這個能實現你的要求。不過我用審計的次數有限,而且也沒這么大規模的應用過,所以這部分只能你自己查了。
G. 如何使用TOAD 跟蹤oracle的SQL語句.
摘要 您好,您的問題我已經看到了,正在整理答案,請稍等一會兒~
H. oracle 10g 中怎麼跟蹤SQL語句呀 產品對資料庫的操作,sql語句在哪裡能夠顯示出來
1)SQL*PLUS 查詢改對象是否存在。
DESC 對象名稱
2)是否表空間導錯了。
3)暫停資料庫,在開始資料庫
I. 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文件的日期最新,哪個文件就是你要的結果了。
J. Oracle怎樣能像SQLSERVER那樣很方便的跟蹤到執行的SQL語句
v$session配合 v$sql,請查詢這2個視圖
SELECT * FROM v$session a,v$sql b
WHERE a.SQL_ID = b.SQL_ID(+)