Oracle 11g DRCP連線跟蹤配置
資料駐留連線池(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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 11g DRCP連線方式——基本原理Oracle
- 配置tnsping跟蹤來診斷Oracle Net連線Oracle
- Oracle 11g DRCP配置與使用(上)Oracle
- Oracle 11g DRCP配置與使用(下)Oracle
- 配置SQLNET.ORA檔案跟蹤客戶端連線SQL客戶端
- Oracle 11g 新特性之DRCPOracle
- [20170824]11G備庫啟用DRCP連線.txt
- [20170825]11G備庫啟用DRCP連線3.txt
- TCP流嗅探和連線跟蹤工具tcpickTCP
- ORACLE 跟蹤工具Oracle
- [zt] oracle跟蹤檔案與跟蹤事件Oracle事件
- oracle跟蹤檔案與跟蹤事件(zt)Oracle事件
- oracle跟蹤檔案和跟蹤事件(zt)Oracle事件
- Trace the connections being made to the Oracle database-客戶端跟蹤連線OracleDatabase客戶端
- 【TRACE】Oracle跟蹤事件Oracle事件
- Oracle跟蹤會話Oracle會話
- Oracle 跟蹤事件【轉】Oracle事件
- Oracle跟蹤檔案Oracle
- Oracle 連線池配置Oracle
- oracle session(會話) 跟蹤OracleSession會話
- Oracle跟蹤事件 -- set eventsOracle事件
- Oracle 10G 跟蹤Oracle 10g
- Oracle 跟蹤事件 set eventOracle事件
- Oracle跟蹤事件和dumpOracle事件
- oracle跟蹤事件(轉載)Oracle事件
- 11G 怎麼得到跟蹤檔案
- [zt] JDBC連線Oracle RAC的連線串配置JDBCOracle
- 一次對連線過程進行跟蹤處理連線故障問題的案例
- ORACLE 10046 設定跟蹤事件後無跟蹤檔案Oracle事件
- Oracle資料庫跟蹤SQLOracle資料庫SQL
- 用oracle trace 來跟蹤sessionOracleSession
- oracle跟蹤事件(dump)總結Oracle事件
- Oracle 跟蹤全部使用者Oracle
- oracle 跟蹤其他使用者Oracle
- alter session set events /Oracle跟蹤SessionOracle
- [zt]Oracle跟蹤事件 - set eventsOracle事件
- Oracle跟蹤事件:set events 整理Oracle事件
- 跟蹤oracle特定報錯 errorstackOracleError