我正在构建一个装有 Windows XP 和一些应用程序的盒子。一个应用程序需要连接到远程 Oracle 数据库。我已经从 Oracle 下载中安装了 OracleXEClient.exe。安装确实安装了“Oracle Provider for OLE DB”驱动程序。
我的问题是我仍然无法连接到远程 Oracle db。我所做的测试是使用 Oracle 提供程序 OLE DB 连接创建一个 UDL 文件。错误消息是:
---------------------------
Microsoft Data Link Error
---------------------------
Test connection failed because of an error in initializing provider. ORA-12154:
TNS:could not resolve the connect identifier specified
我想我可能错过了盒子中的 TNSNAMEC.ora。我可以从另一个 Oracle 连接正常工作的盒子中找到此文件。我不确定我应该安装什么包(来自 Oracle),以便默认 TNSNAEMES.ora 将与相关文件和用于访问 TNS 文件的设置路径一起安装?
不确定我是否可以复制 TNSNAMES.ora 并手动将目录添加到环境 PATH?
答案1
答案2
如果您有 XE 客户端,则可以使用 sqlplus。这就是我开始测试连接的地方。尝试以下样式的连接
sqlplus user/[email protected]:1521/xe
替换用户 pwd,并输入运行 XE 数据库的 IP 地址。如果可行,请退一步并输入主机名而不是 IP 地址。如果可行,请尝试
tnsping dbname
我假设它找不到连接。但它会告诉您类似“用户参数文件:”的信息,其中 sqlnet.ora 文件位于以 network/admin 结尾的目录中。将 tnsnames.ora 文件放在该目录中(因为默认情况下它会在那里查找该文件)。
然后重试 tnsping(使用 tnsnames.ora 文件中给出的数据库标签)。如果此操作无效,您可能需要修改 tnsnames.ora 文件中的主机名或 IP 地址值。
如果 tnsping 可以找到它,那么你应该可以使用
sqlplus user/pwd@dbname
一旦它工作正常,就尝试使用 OLE DB
答案3
我不熟悉 OracleXEClient。
使用传统的 Oracle 胖客户端,您需要为 TNS_ADMIN 设置一个系统环境变量,该变量指向 tnsnames.ora 所在的文件夹。您可能需要注销/登录,以便该变量在您的环境中生效。
您还需要确保文件 sqlnet.ora 存在于同一文件夹中,并指定您正在使用 tnsnames。示例:
NAMES.DIRECTORY_PATH= (TNSNAMES,LDAP)
答案4
您的 Oracle Client 安装的 ORACLE_HOME 目录是什么?它可能是 C:\oracle\product\ 的子文件夹,尽管我不熟悉 XEClient 安装。在典型的 Oracle 10g 客户端安装中,主目录是 C:\oracle\product\10.2.0\client_1。假设此目录,则您的 TNSNAMES.ORA 文件位于 C:\oracle\product\10.2.0\client_1\NETWORK\ADMIN。将您工作的 TNSNAMES.ORA 文件放入该目录中并再次测试。
TNS_ADMIN 在具有多个 oracle 主目录的安装中很有用。 它不是必需的。