从Instant Client通过CMD提示连接到Oracle Server时出错,但SQL Developer连接?

时间:2014-04-16 02:14:41

标签: oracle

我使用的是客户端提供的笔记本电脑(Windows XP专业版2002)并且没有管理权限(因此也不能使用任何必需的环境变量):

提供了SQL Developer,我可以从SQL开发人员访问oracle服务器xaal5 @:1521 /,

我需要使用SQL LOADER来执行一些繁重的加载。我决定下载即时客户端,看看我是否可以节省一些时间,而我的oracle客户端安装请求需要很长时间才能通过审批。

我转到了链接:http://www.oracle.com/technetwork/topics/winsoft-085727.html 对于Windows并下载了以下适用于Microsoft Windows(32位)的Instant Client下载

版本10.2.0.4

Instant Client Package - Basic:运行OCI,OCCI和JDBC-OCI应用程序所需的所有文件 下载instantclient-basic-win32-10.2.0.4.zip(34,742,358字节)

* Instant Client Package - SQL * Plus:使用Instant Client运行SQL * Plus的附加库和可执行文件 下载instantclient-sqlplus-win32-10.2.0.4.zip(725,418字节)

将这两个zip文件提取到C:\ instantclient-win32文件夹中,得到以下文件(是的,其中没有SQL LOADER,但我决定首先设置oracle客户端,然后查找SQL LDR)

SQLPLUS.EXE OCI.DLL ocijdbc10.dll OCIW32.DLL orannzsbb10.dll oraocci10.dll oraociei10.dll Orasqlplusic10.dll classes12.jar 为ojdbc14.jar glogin.sql中

我跑了以下Windows机器的CMD提示:

sqlplus xaal5 @:1521 / SID

并收到以下错误:

ERROR:
ORA-12514: TNS:listener does not currently know of service requested in connect
descriptor

我创建了一个tnsnames.ora文件,其中包含以下条目:

PLMS =  (DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = XXXXXX)(PORT = 1521))
 (CONNECT_DATA =
  (SID = sblcusdv)
 ))

并设置一个USER VARIABLES指向tnsnames.ora文件的路径(在Environment variables窗口中),因为我无法创建系统变量。 $ TNS_ADMIN = C:\ instantclient-的win32

我再次出现以下CMD提示:

sqlplus xaal5 @:1521 / SID

再次出现以下错误:

ERROR:
ORA-12514: TNS:listener does not currently know of service requested in connect
descriptor

我做错了什么!!还是有另一种方法让SQL加载器在我的系统上工作,考虑到约束(长时间等待oracle客户端安装的批准)。

2 个答案:

答案 0 :(得分:1)

使用此格式时:

sqlplus xaal5@HOST:1521/SID

...您正在使用'easy connect' syntax,绕过tnsnames.ora并连接到服务名称 SID - 我认为您&#39 ;实际使用您的TNS文件/sblcusdv中的SID。 SID和服务名称并不总是相同,错误表明它们在此环境中不同。

要使用tnsnames.ora条目,请使用以下语法:

sqlplus xaal5@PLMS

也就是说,使用您定义的TNS别名。如果您不想使用该文件,则需要知道服务名称。从服务器,您可以使用lsnrctl services查看已注册的服务名称,但您可能无权访问。如果您有权限,可以从SQL * Plus执行show parameters service_names(通过TNS连接时),或者您可以查询性能视图以获取该信息。但您的帐户可能无法访问该信息。在这种情况下,您需要询问您的DBA。 (我也假设SQL Developer是通过SID连接的,但它可能正在使用服务名称,所以你可以复制它。)

sqlplus xaal5@//HOST:1521/SERVICE_NAME

您不能使用来自imstant客户端的SQL * Loader,因此您仍需要等待安装完整的客户端。您可能希望将external tables视为SQL * Loader的替代方法;然后你可以坚持使用即时客户端(或者确实是SQL Developer)。但是您需要能够将数据文件放入服务器上数据库识别的目录中,这可能会产生问题。

答案 1 :(得分:0)

您必须按照说明使用说明。

sqlplus Username/Password@description

在你的情况下:

sqlplus Username/Password@PLMS

这应该足够了,不需要提及主机名或端口。

如果它不起作用,请检查您的系统变量PATH是否在第一个位置包含oracle安装文件夹。当您在同一台计算机上安装Oracle DB和Oracle Client时,查看两个TNSNAMES是否都有您要查找的连接。