【问题标题】:Enable ODP.Net logging启用 ODP.Net 日志记录
【发布时间】:2015-11-26 14:51:04
【问题描述】:

谁能帮助我在 Windows XP 机器上启用 ODP.Net 日志记录?我用谷歌搜索并找到了以下链接,但它对我不起作用。

http://download.oracle.com/docs/html/E10927_01/featConfig.htm

我在注册表中将“TraceLevel”设置为“63”,但没有帮助

基本上,我想通过日志捕获从我的 C# 代码发生的所有数据库调用。

我希望 Oracle 有像“SQL Profiler”这样的工具。

【问题讨论】:

  • 您是否按照说明配置 ODP.net?这个简单的听起来像是一个配置问题。从头开始它应该可以工作。
  • 不确定配置 odp.net 是什么意思?它已为我的应用程序安装、配置并完美运行。我只想添加一些日志记录/跟踪,我尝试按照 odp.net 支持文档中的建议进行一些注册表更改,但它没有生成任何跟踪文件。
  • Viren,这个文档很好,ODP 日志记录确实工作 - 我上周才自己这样做。建议您检查一下您是否修改了正确的配置单元?

标签: c# oracle ado.net trace odp.net


【解决方案1】:

在使用 Oracle 支持解决某些问题时,我在某些机器上遇到了同样的问题。我发现多次更改输出文件的路径并多次重新启动最终迫使 ODP 客户端开始记录。确保输出文件位于您的调用应用程序身份可以访问的目录中。

检查注册表项中的以下内容。这是我机器上的 .net4 和 11.2 示例。

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE\ODP.NET\4.112.2.0

  • 32 位或 64 位(正确的节点)
  • 将 Trace Level 更改为 8(或 64,我认为是完整的日志记录)
  • 更改跟踪选项 = 1
  • 设置有效的 TraceFileName

【讨论】:

【解决方案2】:

请注意,跟踪将默认进入 C 驱动器的根目录。对于 Windows 7 及更高版本,这需要管理员权限,否则它会静默失败。因此,要么确保您的应用以管理员身份运行,要么更改文件的路径。

另外请注意,如果您想跟踪完全托管的 ODP.NET,您需要将设置放在应用程序或 Web 配置文件中,而不是注册表中,并且 TraceLevel 的设置是不同的(1 到 7)。

最后,在跟踪非托管 ODP.NET 时,请记住对于 32 位 Windows 有一个单独的 WOW 注册表节点。如果您的应用是 32 位的,请不要意外将其设置在注册表的 64 位部分下。

【讨论】:

    【解决方案3】:

    您还可以使用基于 AOP 的方法 - 使用 Castle Dynamic Proxy 等库生成代理,拦截您感兴趣的调用并记录 SQL 和参数等参数。在我看来,这是一种更强大的方法,尽管它会以某种方式影响性能。有关示例实现,请参阅此 Gist:https://gist.github.com/Buthrakaur/b1124c08f8521f39f8fd

    【讨论】:

      猜你喜欢
      • 2011-06-16
      • 2021-11-15
      • 2012-04-27
      • 2011-08-09
      • 1970-01-01
      • 2011-09-22
      • 2017-01-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多