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

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

數(shù)據(jù)庫中如何使用dbms_monitor跟蹤多個會話,service_name,sid等

這篇文章主要為大家展示了“數(shù)據(jù)庫中如何使用dbms_monitor跟蹤多個會話,service_name,sid等”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“數(shù)據(jù)庫中如何使用dbms_monitor跟蹤多個會話,service_name,sid等”這篇文章吧。

創(chuàng)新互聯(lián)長期為上千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為略陽企業(yè)提供專業(yè)的成都網(wǎng)站建設(shè)、做網(wǎng)站,略陽網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。


概述

在 具有連接池或共享服務(wù)器的多層環(huán)境中,一個會話可以跨越多個進程,甚至跨越多個實例。DBMS_MONITOR是在Oracle 10g中引入的內(nèi)置的程序包,通過該程序包可以跟蹤從客戶機到中間層、再到后端數(shù)據(jù)庫的任何用戶的會話。由于每個會話都會產(chǎn)生獨立的trace文件,因而 可以較為容易地標(biāo)識創(chuàng)建大量工作量的特定用戶。DBMS_MONITOR取代了傳統(tǒng)的跟蹤工具,例如DBMS_SUPPORT。需要具有DBA角色才可以使用DBMS_MONITOR。
端對端的應(yīng)用程序跟蹤可以基于如下:
會話(SID):基于會話ID(SID)和序列號。
客戶端標(biāo)識符(client_identifier):允許跨越多個會話設(shè)置跟蹤?;诘卿汭D指定終端用戶。使用DBMS_SESSION.SET_IDENTIFIER過程設(shè)置該值。
實例(INST_NAME):基于實例名指定給定的實例。
服務(wù)名(SERVICE_NAME):指定一組相關(guān)的應(yīng)用程序。使用DBMS_SERVICE.CREATE_SERVICE過程設(shè)置該值。
模塊名(MODULE):開發(fā)人員在其應(yīng)用程序代碼中使用DBMS_APPLICATION_INFO.SET_MODULE過程設(shè)置該值。使用該名稱表示執(zhí)行的模塊或代碼。
操作名(ACTION):開發(fā)人員在其應(yīng)用程序代碼中使用DBMS_APPLICATION_INFO.SET_ACTION過程設(shè)置該值。使用該名稱表示模塊執(zhí)行的操作。

也可以執(zhí)行如下sql:
select sid,serial#,SERVICE_NAME,MODULE,ACTION,client_identifier from v$session;

最后3個跟蹤選項在層次上關(guān)聯(lián);不可以在沒有指定模塊名和服務(wù)名的情況下就指定操作名,但是可以只指定服務(wù)名,或者只指定服務(wù)名和模塊名。


1.基于會話ID和序列號設(shè)置跟蹤(serial#可以加,也可以不加)

為了基于會話ID和序列號設(shè)置跟蹤,首先確定需要跟蹤的會話的SID和序列號:
SQL>COL PROGRAM FOR A30
SQL> COL EVENT FOR A30
SQL> select sid,serial#,username,program,status,type,event,blocking_session from v$session where type='USER';

       SID    SERIAL# USERNAME                       PROGRAM                        STATUS   TYPE       EVENT                          BLOCKING_SESSION
---------- ---------- ------------------------------ ------------------------------ -------- ---------- ------------------------------ ----------------
         1          5 SYS                            sqlplus@wang (TNS V1-V3)       ACTIVE   USER       SQL*Net message to client
        37        123 SYS                            plsqldev.exe                   INACTIVE USER       SQL*Net message from client
        38        133 SYS                            plsqldev.exe                   INACTIVE USER       SQL*Net message from client
        39        215 SYS                            plsqldev.exe                   INACTIVE USER       SQL*Net message from client
        41         79 HR                             sqlplus.exe                    INACTIVE USER       SQL*Net message from client


為了啟用跟蹤,可執(zhí)行如下語句:
第三個參數(shù)用于等待(默認(rèn)為TRUE),第四個參數(shù)用于綁定變量(默認(rèn)為FALSE)。
SQL> exec dbms_monitor.session_trace_enable(1,5,TRUE,TRUE);

PL/SQL procedure successfully completed.

SQL> select sid from v$mystat where rownum=1;

       SID
----------
         1

SQL> select count(*) from hr.jobs;

  COUNT(*)
----------
        19


為了關(guān)閉跟蹤,可執(zhí)行如下語句:
SQL> exec dbms_monitor.session_trace_disable(1,5);

PL/SQL procedure successfully completed.


--查詢trace文件位置:
select c.value || '/' || d.instance_name || '_ora_' || a.spid || '.trc' trace
  FROM v$process a, v$session b, v$parameter c, v$instance d
 WHERE a.addr = b.paddr
   AND b.audsid = userenv('sessionid')
   AND c.name = 'user_dump_dest';

執(zhí)行如下:
SQL> select c.value || '/' || d.instance_name || '_ora_' || a.spid || '.trc' trace
  2    FROM v$process a, v$session b, v$parameter c, v$instance d
  3   WHERE a.addr = b.paddr
  4     AND b.audsid = userenv('sessionid')
  5     AND c.name = 'user_dump_dest';

TRACE
------------------------------------------------------------------
/u01/app/oracle/diag/rdbms/dbdb/DBdb/trace/DBdb_ora_5994.trc

使用vi工具查看,/dbms_monitor.session_trace 按鍵n/N

為了跟蹤當(dāng)前的會話,可設(shè)置SID和SERIAL#為空:
SQL> exec dbms_monitor.session_trace_enable(null,null);

2.基于客戶端標(biāo)識符設(shè)置跟蹤
為了基于表示用戶的客戶端標(biāo)識符設(shè)置跟蹤,可運行如下語句:
SQL> exec dbms_session.set_identifier('bryan id');

或者執(zhí)行執(zhí)行如下sql:
select sid,serial#,username,client_identifier from v$session;

為了驗證客戶端標(biāo)識符,可執(zhí)行如下語句:
select sid,serial#,username,client_identifier from v$session;

       SID    SERIAL# USERNAME                       CLIENT_IDENTIFIER
---------- ---------- ------------------------------ ----------------------------------------------------------------
         1          5 SYS                            bryan id

現(xiàn)在就可以為這個客戶端標(biāo)識符設(shè)置跟蹤:第二個參數(shù)用于等待(默認(rèn)為TRUE),第三個參數(shù)用于綁定變量(默認(rèn)為FALSE)。
SQL>  exec dbms_monitor.client_id_trace_enable('bryan id',true,true);

PL/SQL procedure successfully completed.

--執(zhí)行一些操作:
SQL> create table a as select * from dba_objects where rownum <10;

Table created.

SQL> insert into a select * from a;

9 rows created.

SQL> commit;

Commit complete.

SQL> select count(*) from a;

  COUNT(*)
----------
        18

為了禁用這個客戶端標(biāo)識符跟蹤,可執(zhí)行如下語句:
SQL> exec dbms_monitor.client_id_trace_disable('bryan id');

PL/SQL procedure successfully completed.

--查詢trace文件位置:
select c.value || '/' || d.instance_name || '_ora_' || a.spid || '.trc' trace
  FROM v$process a, v$session b, v$parameter c, v$instance d
 WHERE a.addr = b.paddr
   AND b.audsid = userenv('sessionid')
   AND c.name = 'user_dump_dest';

SQL> select c.value || '/' || d.instance_name || '_ora_' || a.spid || '.trc' trace
  2    FROM v$process a, v$session b, v$parameter c, v$instance d
  3   WHERE a.addr = b.paddr
  4     AND b.audsid = userenv('sessionid')
  5     AND c.name = 'user_dump_dest';

TRACE
-----------------------------------------------------------------------
/u01/app/oracle/diag/rdbms/dbdb/DBdb/trace/DBdb_ora_5994.trc

3.設(shè)置服務(wù)名/模塊名/操作名的跟蹤
為了使用操作名,必須有對應(yīng)的模塊名和服務(wù)名。為了使用模塊名,必須有服務(wù)名。對全局范圍內(nèi)針對某個數(shù)據(jù)庫的服務(wù)名、模塊名和操作名的給定組合啟用跟蹤,除非為過程指定了實例名。服務(wù)名由用于連接到服務(wù)的連接字符串確定。
Oracle 數(shù)據(jù)庫表示為作為服務(wù)的客戶端;也就是說,數(shù)據(jù)庫代表客戶端執(zhí)行相應(yīng)的操作。數(shù)據(jù)庫可以有一個或多個與其關(guān)聯(lián)的服務(wù)。例如,可以有一個數(shù)據(jù)庫,該數(shù)據(jù)庫帶 有兩個用于Web客戶端的不同服務(wù):用于購買書籍的客戶端的book.us.acme.com,以及用于購買軟件的客戶端的 soft.us.acme.com。在該示例中,數(shù)據(jù)庫名是sales.acme.com,因此服務(wù)名并不基于數(shù)據(jù)庫名。服務(wù)名由初始參數(shù)文件中的 SERVICE_NAMES參數(shù)指定。服務(wù)名默認(rèn)為由數(shù)據(jù)庫名(DB_NAME參數(shù))和域名(DB_DOMAIN參數(shù))組成的全局?jǐn)?shù)據(jù)庫名。

--使用如下失去了查詢服務(wù)名/模塊名/操作名:
select sid,serial#,SERVICE_NAME,MODULE,ACTION,client_identifier from v$session;


為了啟用服務(wù)名的跟蹤,可執(zhí)行如下語句:
SQL> exec dbms_monitor.serv_mod_act_trace_enable(service_name=>'DBdb');
這將跟蹤服務(wù)名為DBdb的所有會話。

為了啟用服務(wù)名、模塊名和操作名組合的跟蹤,可執(zhí)行如下語句:
SQL> exec dbms_monitor.serv_mod_act_trace_enable(service_name=>'ebk2', module_name=>'salary_update', action_name=>'insert_item');

為了禁用前面代碼中的跟蹤,可使用過程SERV_MOD_ACT_TRACE_DISABLE,如下說是:
SQL> exec dbms_monitor.serv_mod_act_trace_disable(service_name=>'ebk2', module_name=>'salary_update', action_name=>'insert_item');

為了跟蹤整個數(shù)據(jù)庫或?qū)嵗蓤?zhí)行如下語句(不推薦這樣操作):
execute DBMS_MONITOR.DATABASE_TRACE_ENABLE(waits => TRUE, binds => FALSE, instance_name => 'ebk1');
execute DBMS_MONITOR.DATABASE_TRACE_DISABLE(instance_name => 'ebk1');


注意:使用DBMS_MONITOR時,請確保在完成操作時禁用跟蹤;否則,將會跟蹤滿足指定條件的每個會話。

以上是“數(shù)據(jù)庫中如何使用dbms_monitor跟蹤多個會話,service_name,sid等”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


名稱欄目:數(shù)據(jù)庫中如何使用dbms_monitor跟蹤多個會話,service_name,sid等
文章出自:http://weahome.cn/article/ipeieh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部