在oracle中可以跟蹤後台所執行的sql,具體有以下兩種設定方法:
在實際排查問題的過程中,尤其是在前端應用已經報出ora錯誤的時候用此方法非常奏效,在前幾章排查問題的過程中我也多次使用了該方法。以下是設定跟蹤的方法。
一.在系統級別上設定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語句
在輸入sid後,即得到後台的跟蹤檔案。
1:select d.value
2: || '/'
3: || lower (rtrim (i.instance, chr (0)))
4: || '_ora_'
5: || p.spid
6: || '.trc' trace_file_name
7:from (select p.spid
8:from v$mystat m, v$session s, v$process p
9:where m.statistic# = 1 and s.sid = &sid and p.addr = s.paddr) p,
10: (select t.instance
11:from v$thread t, v$parameter v
12:where v.name = 'thread'
13:and (v.value = 0 or t.thread# = to_number (v.value))) i,
14: (selectvalue
15:from v$parameter
16:where name = 'user_dump_dest') d
二. 在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語句
在輸入sid後,即得到後台的跟蹤檔案。
1:select d.value
2: || '/'
3: || lower (rtrim (i.instance, chr (0)))
4: || '_ora_'
5: || p.spid
6: || '.trc' trace_file_name
7:from (select p.spid
8:from v$mystat m, v$session s, v$process p
9:where m.statistic# = 1 and s.sid = &sid and p.addr = s.paddr) p,
10: (select t.instance
11:from v$thread t, v$parameter v
12:where v.name = 'thread'
13:and (v.value = 0 or t.thread# = to_number (v.value))) i,
14: (selectvalue
15:from v$parameter
16:where name = 'user_dump_dest') d
三. 在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
如何在oracle 10g中跟蹤sql 在具有許多活躍使用者的繁忙生產環境中,跟蹤sql會話是費時且十分複雜的,因為在任何使用連線池的多層系統中處理sql語句可能要涉及多個程序,或者甚至是不 同的例項。利用oracle資料庫10g,oralce通過乙個新的內建軟體包dbms monitor合理化了s...
程序在Linux後台執行
在linux中,如果要讓程序在後台執行,一般情況下,我們在命令後面加上 即可,實際上,這樣是將命令放入到乙個作業佇列中了 test.sh 1 17208 jobs l 1 17208 running test.sh 對於已經在前台執行的命令,也可以重新放到後台執行,首先按ctrl z暫停已經執行的程...
springboot 在linux後台執行的方法
首先需要進到自己springboot專案的根目錄,然後執行如下linux命令 nohup j a jar 自己的springboot專案.jar 日誌檔名.log 2 1 命令詳解 nohup 不結束通話地執行命令,退出帳戶之後繼續執行相應的程序。日誌檔名.log 是nohup把comm程式設計客棧...