如何为新的数据库连接写 sqlnet.ora 和 tnsnames.ora

How to write sqlnet.ora and tnsnames.ora for new database connection

我刚刚从名为 BATCHINSERT 的 Oracle SQL 开发人员创建了一个新的数据库连接。但是当我尝试 tnsping 它时,我收到以下错误。

TNS Ping Utility for 64-bit Windows: Version 11.2.0.2.0 - Production on 27-APR-2016 15:28:37  

Copyright (c) 1997, 2014, Oracle.  All rights reserved.  

Used parameter files:  
C:\oraclexe\app\oracle\product.2.0\server\network\admin\sqlnet.ora

TNS-03505: Failed to resolve name

这是我的 sqlnet.ora

# sqlnet.ora network configuration file in
# /opt/oracle/product/11.2.0/network/admin
NAMES.DIRECTORY_PATH=(TNSNAMES)
NAMES.DEFAULT_DOMAIN=WORLD
SQLNET.AUTHENTICATION_SERVICES = (NTS)

这是我的 tnsnames.ora

BatchInsert=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
  (SERVER = DEDICATED)
  (SID = XE)
))

如何为它编写条目以便我可以从 .bat 文件中 运行 它?

您的 sqlnet.ora 设置了默认域名 WORLD,因此您的 tnsnames 条目也需要包含该域名:

BatchInsert.WORLD=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
  (SERVER = DEDICATED)
  (SID = XE)
))

然后您应该能够 tnsping 并使用 batchinsertbatchinsert.world 连接。

或者,您可以从 sqlnet.ora 中删除 NAMES.DEFAULT_DOMAIN=WORLD 行,但您可能已经有其他需要设置的内容。

这与 SQL 开发人员无关,除非您想在连接定义中使用该 TNS 别名,而不是使用 Basic 连接。如果您已经有 XE 的 TNS 条目,您可以直接使用它,而无需定义指向相同 service/SID.

的新条目

SQL 开发者默认不读取 SQLNet.ORA

轻松修复,在首选项中,指向您的 TNSNames 文件的目录。

如果您启用了 THICK 驱动程序连接并设置了 $ORACLE_HOME os var,那么 SQLDev 应该会看到并使用您的 SQLNet.ORA 文件来进行连接。