开启dblink的 oracle net trace/tracing --对dblink进行跟踪的方法。
参考原文:
DBLINK: How to Enable Oracle Net Tracing for Database links (Doc ID 746917.1)
适用于:
Oracle Net Services - Version 9.2.0.1.0 to 11.2.0.3 [Release 9.2 to 11.2]
Information in this document applies to any platform.
***Checked for relevance on 24-JAN-2013***
解决方案:
database link 使用 Oracle Net server代码,因此当tracing(跟踪) dblink时, Oracle Net server tracing 需要被开启。在sqlnet.ora文件里添加如下的内容:
TRACE_LEVEL_SERVER = 16
TRACE_DIRECTORY_SERVER = DIRECTORY #eg /u01/oracle/trace
TRACE_TIMESTAMP_SERVER = ON
DIAG_ADR_ENABLED=OFF # This parameter is required for version 11g onwards
以上内容需要添加在dblink被创建的那个server上。如果跟踪需要两端的dblink,那么Oracle Net server tracing 就需要在两端都开启。
如果dblink 使用的是专有服务器连接模式,跟踪会立即启动(对使用db的所有连接均生效)。对于共享服务器模式,需要将dispatcher 重启才生效。
关于共享服务器模式的信息,请参见Note 1005259.6 Shared Server (MTS) Diagnostics
为了定位dblink 生成的 Oracle Net server trace file, 请搜索dblink名称或者 使用dblink时生成的error code
sqlplus scott/tiger
SQL*Plus: Release 10.2.0.4.0 - Production on Mon Nov 3 12:33:39 2008
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning and Data Mining options
SQL> select sysdate from [email protected];
SYSDATE
---------
03-NOV-08
SQL>
cd to TRACE_DIRECTORY_SERVER
cd $ORACLE_HOME/network/trace
查找 dblink name,使用的sql,error code等等。
grep date *.trc
svr_3229.trc:[03-NOV-2008 12:33:48:476] nsprecv: 64 61 74 65 20 66 72 6F |date.fro|
Server 端的trace svr_3229.trc 这个文件是 session 使用dblink 时生成的。这个server 端trace 文件将会显示2个 Connection ID values.
第一个值是到本地库的初始化连接
第二个值是到远程库的连接。
grep Connection ID svr_3229.trc
[03-NOV-2008 12:33:39:915] nas_scn: Connection ID: 00c9c89d59c3
[03-NOV-2008 12:33:49:093] nas_ccn: Connection ID: 00c9d89d59f9d
到远程服务器上,以 第二个值进行搜索:
cd to TRACE_DIRECTORY_SERVER
cd $ORACLE_HOME/network/trace
Grep the connection ID
grep 00c9d89d59f9d *.trc
svr_3243.trc:[03-NOV-2008 12:33:49:170] nas_scn: Connection ID: 00c9d89d59f9d
因此,该session匹配成功的trace文件为 svr_3229.trc and svr_3243.trc.