我有一个应用程序服务器使用 Oracle 即时客户端与 Oracle 数据库进行通信。我们正在解决一个特定的错误,有人询问我是否可以将以下标志添加到我的 sqlnet.ora 文件中:
DIAG_ADR_ENABLED=OFF
DIAG_SIGHANDLER_ENABLED=FALSE
DIAG_DDE_ENABLED=FALSE
Run Code Online (Sandbox Code Playgroud)
在此请求之前,我们在客户端不需要 sqlnet.ora 文件,使用即时客户端,我们可以引用 ojdbc6.jar 的类路径和 jar 目录的 ld_library_path,并使用如下 URL:
jdbc:oracle:oci:@server:port:sid
Run Code Online (Sandbox Code Playgroud)
查看 Oracle 文档,如果我为 ORACLE_HOME 和 TNS_ADMIN 添加环境变量,我似乎可以在客户端引用 sqlnet.ora 文件和/或 tnsnames.ora 文件。
我使用上面的参数创建了 sqlnet.ora 文件,并添加了一些跟踪参数,以便我可以验证该文件是否正在被读取:
TRACE_LEVEL_CLIENT=10
TRACE_DIRECTORY_CLIENT=/tmp
Run Code Online (Sandbox Code Playgroud)
我还创建了一个 tnsnames.ora 文件:
APPDB =
(DESCRIPTION =
(ADDRESS LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = *host*)(Port = *port*)))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = *service*)))
Run Code Online (Sandbox Code Playgroud)
最后,我添加了环境变量,并重新启动了应用程序。我尝试使用原始的更简单的 URL,很明显,设置没有被拾取,正如我期望的那样,跟踪标志在读取文件时会创建一个文件。接下来,我尝试使用 TNS 名称创建 URL,根据文档,该名称听起来像是会在 TNS_ADMIN 中查找要连接的其他文件。
jdbc:oracle:oci:@(DESCRIPTION=(ADDRESS LIST=(ADDRESS = (PROTOCOL = TCP)(HOST = *host*)(Port = *port*)))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = *service*)))
Run Code Online (Sandbox Code Playgroud)
到目前为止,我还没有看到任何跟踪文件出现,我有一种感觉,我做的一部分是错误的,或者错过了一个步骤,或者使用了错误的 URL。我尝试了连接字符串的一些变体,这些变体在我的 tnsnames.ora 文件中引用“APPDB”,但要么它根本不起作用,要么它连接,但似乎没有从 sqlnet.ora 中获取设置。
关于我可能缺少什么的任何想法,或者实际上是否只能在数据库端应用这些设置?
Oracle Instant Client和Oracle Universal Installer安装的 Oracle 客户端的区别在于安装方式。Oracle 通用安装程序维护即时客户端没有或不使用的注册表。但无论您使用何种安装方法,软件组件都是相同的。如果您使用 jdbc oci 驱动程序,那么您可以使用 java 访问Oracle OCI 客户端的库,该客户端是众所周知的客户端,它使用所有可以使用 tnsname.ora 的客户端。这些是 sqlplus、ODBC 程序、使用 Oracle 预编译器的 C 程序...可以使用 tnsnames.ora 和 sqlnet.ora 以及众所周知的环境变量(如 ORACLE_HOME、ORACLE_SID、TNS_ADMIN)配置 OCI 客户端的访问。 ..)。在 java 中,有一种使用 jdbc 瘦客户端访问 Oracle 数据库的新方法。这是一个完全用java实现的客户端,不使用oracle OCI库,但在java中实现了必要的oracle net协议来与Oracle数据库通信。该客户端不受 tnsnames.ora、sqlnet.ora 或环境变量的影响。它甚至不需要这些文件。它只需要一个适当的 jar 文件来实现瘦客户端。
如果您对程序使用 oci 客户端,则必须在启动该程序的环境中设置 Oracle 相关变量。因此,如果程序由 shell 脚本启动,则该 shell 脚本应该设置并导出相关变量。在变量 TNS_ADMIN 中存储的目录中搜索 tnsnames.ora 和 sqlnet.ora。如果未设置此变量,则会在其他目录中搜索这些文件(或类似文件)。这取决于操作系统和 ORACLE_HOME 的值(如果设置)。如果没有找到合适的文件,则使用默认值。
DIAG_ADR_ENABLED=OFF确定是使用ADR 日志记录(自 11.1 起可用)还是使用传统日志记录。如果未禁用ADR 日志记录,则TRACE_DIRECTORY_CLIENT 参数将被忽略,并且 sqlnet 跟踪文件将在 ADR 日志记录使用的 diag 目录中的某个位置找到。
| 归档时间: |
|
| 查看次数: |
18714 次 |
| 最近记录: |