Oracle 11g DRCP連線跟蹤配置

studywell發表於2016-03-10

 

資料駐留連線池(Database Resident Connection Pool)是Oracle 11g推出的新特性。藉助DRCP,Oracle Database Server可以向前端應用或者前段中介軟體提供高效的連線訪問。在前端不具有條件使用資料庫連線池,並且系統具有高併發、短會話特性的時候,DRCP是一種很簡單的配置解決方案。

 

我們經常要對Server Process進行跟蹤訪問,來進行調優、調錯工作。本篇介紹在DRCP環境下,如何對連線池Server Process進行跟蹤的方法。

 

1、環境準備和配置

 

DRCP我們選擇在oracle 11g環境上進行試驗。

 

 

SQL> select * from v$version;

 

BANNER

-------------------------------------------------------------------

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production

PL/SQL Release 11.2.0.1.0 - Production

CORE    11.2.0.1.0    Production

 

TNS for Linux: Version 11.2.0.1.0 - Production

NLSRTL Version 11.2.0.1.0 Production

 

 

首先定義一個目錄,用於防止程式跟蹤檔案。

 

 

[oracle@oracle11g listener]$ pwd

/u01/diag/tnslsnr/oracle11g/listener

[oracle@oracle11g listener]$ ls

alert  cdump  incident  incpkg  lck  metadata  stage  sweep  trace

[oracle@oracle11g listener]$ mkdir drcp

[oracle@oracle11g listener]$ cd drcp

[oracle@oracle11g drcp]$ ls

[oracle@oracle11g drcp]$ pwd

/u01/diag/tnslsnr/oracle11g/listener/drcp

 

 

選擇drcp子目錄作為跟蹤檔案目錄。

 

修改sqlnet.ora配置檔案,新增配置引數資訊。

 

 

[oracle@oracle11g admin]$ pwd

/u01/oracle/network/admin

[oracle@oracle11g admin]$ vim sqlnet.ora

 

--在sqlnet.ora檔案中新增下面引數內容;

DIAG_ADR_ENABLED = off

TRACE_LEVEL_SERVER = 16

TRACE_TIMESTAMP_SERVER = ON

TRACE_DIRECTORY_SERVER = /u01/diag/tnslsnr/oracle11g/listener/drcp

 

 

為了使監聽引數生效,此處需要重新啟動監聽器。

 

 

[oracle@oracle11g admin]$ lsnrctl stop

 

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 01-MAR-2012 05:37:30

Copyright (c) 1991, 2009, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle11g)(PORT=1521)))

The command completed successfully

 

[oracle@oracle11g admin]$ lsnrctl start

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 01-MAR-2012 05:37:34

Copyright (c) 1991, 2009, Oracle.  All rights reserved.

Starting /u01/oracle/bin/tnslsnr: please wait...

 

TNSLSNR for Linux: Version 11.2.0.1.0 - Production

System parameter file is /u01/oracle/network/admin/listener.ora

Log messages written to /u01/diag/tnslsnr/oracle11g/listener/alert/log.xml

Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle11g)(PORT=1521)))

 

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle11g)(PORT=1521)))

STATUS of the LISTENER

------------------------

Alias                     LISTENER

Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production

Start Date                01-MAR-2012 05:37:34

Uptime                    0 days 0 hr. 0 min. 0 sec

Trace Level               off

Security                  ON: Local OS Authentication

SNMP                      OFF

Listener Parameter File   /u01/oracle/network/admin/listener.ora

Listener Log File         /u01/diag/tnslsnr/oracle11g/listener/alert/log.xml

Listening Endpoints Summary...

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle11g)(PORT=1521)))

The listener supports no services

The command completed successfully

 

 

2、監聽過程

 

一旦開啟,我們就可以看到跟蹤目錄下存在檔案。

 

 

[oracle@oracle11g admin]$ cd /u01/diag/tnslsnr/oracle11g/listener/drcp

[oracle@oracle11g drcp]$ ls

svr_6274.trc  svr_6276.trc  svr_6284.trc  svr_6287.trc

 

[oracle@oracle11g drcp]$ ps -ef | grep ora_n

oracle    6294  5931  0 05:38 pts/1    00:00:00 grep ora_n

[oracle@oracle11g drcp]$ ps -ef | grep ora_l

oracle    5689     1  0 05:03 ?        00:00:00 ora_lgwr_wilson

oracle    6296  5931  0 05:38 pts/1    00:00:00 grep ora_l

 

 

跟蹤檔案格式為svr_<pid>.trc。如果監視一個特定的session程式,只需要知道對應的process編號即可。

 

首先開啟connection pool。

 

 

SQL> exec dbms_connection_pool.configure_pool(minsize => 1,maxsize => 4);

PL/SQL procedure successfully completed

 

SQL> select connection_pool, status, minsize, maxsize, INACTIVITY_TIMEOUT from dba_cpool_info;

 

CONNECTION_POOL                STATUS              MINSIZE    MAXSIZE INACTIVITY_TIMEOUT

------------------------------ ---------------- ---------- ---------- ------------------

SYS_DEFAULT_CONNECTION_POOL    INACTIVE                  1          4                300

 

SQL> exec dbms_connection_pool.start_pool;

PL/SQL procedure successfully completed

 

 

此時對應程式生成。

 

 

[oracle@oracle11g drcp]$ ps -ef | grep ora_l

oracle    5689     1  0 05:03 ?        00:00:00 ora_lgwr_wilson

oracle    6300     1  1 05:39 ?        00:00:00 ora_l000_wilson

oracle    6302  5931  0 05:39 pts/1    00:00:00 grep ora_l

 

 

使用sqlplus進行連線。

 

 

[oracle@oracle11g drcp]$ sqlplus /nolog

 

SQL*Plus: Release 11.2.0.1.0 Production on Thu Mar 1 05:40:16 2012

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

 

SQL> conn scott/tiger@wilsondrcp

Connected.

 

SQL> select sid from v$mystat where rownum<2;

 

       SID

----------

141

 

 

注意:wilsondrcp是建立的使用pooled方式連線的本地命名服務。

 

獲取到會話對應的process id。

 

 

SQL> select paddr from v$session where sid=141;

PADDR

--------

38BCD994

 

SQL> select pid, spid from v$process where addr='38BCD994';

 

       PID SPID

---------- ------------------------

        31 6310

 

 

對應的process編號為6310。在OS層面進行驗證。

 

 

[oracle@oracle11g drcp]$ ps -ef | grep 6310

oracle    6310     1  0 05:39 ?        00:00:00 ora_l001_wilson

oracle    6326  5931  0 05:41 pts/1    00:00:00 grep 6310

 

 

[oracle@oracle11g drcp]$ ls

svr_6274.trc  svr_6287.trc  svr_6298.trc  svr_6306.trc  svr_6314.trc

svr_6276.trc  svr_6290.trc  svr_6300.trc  svr_6310.trc  svr_6322.trc

svr_6284.trc  svr_6292.trc  svr_6304.trc  svr_6312.trc  svr_6324.trc

 

 

對應的svr_6310.trc檔案為生成的跟蹤檔案。我們可以從中找到具體的跟蹤資訊。

 

 

[oracle@oracle11g drcp]$ tail -n 10 svr_6310.trc

[01-MAR-2012 05:41:15:765] nsiocancel: exit

[01-MAR-2012 05:41:15:765] nsmfr: entry

[01-MAR-2012 05:41:15:765] nsmfr: 2020 bytes at 0x1071e790

[01-MAR-2012 05:41:15:765] nsmfr: normal exit

[01-MAR-2012 05:41:15:765] nsmfr: entry

[01-MAR-2012 05:41:15:766] nsmfr: 1012 bytes at 0x1071e398

[01-MAR-2012 05:41:15:766] nsmfr: normal exit

[01-MAR-2012 05:41:15:766] nsclose: normal exit

[01-MAR-2012 05:41:15:766] nttwrto: entry

[01-MAR-2012 05:41:15:766] nttwrto: exit

 

 

3、結論

 

本篇介紹了DRCP的跟蹤方法,從感覺上看,還是從Oracle Net Service的角度進行的跟蹤操作。備今後不時之需吧。

 

 

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29519108/viewspace-2055065/,如需轉載,請註明出處,否則將追究法律責任。

相關文章