開啟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 dual@test;
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.