错误704& 12154将sqlloader连接到服务器

时间:2011-06-03 21:41:43

标签: oracle sql-loader tnsnames

我有一个基于服务器的oracle数据库,我想在服务器上的表中导入数据。 我试图使用sqlloadr(sqlldr)在oracle数据库中插入所有数据,这是在localhost上,在这种情况下没有问题,但是当我尝试连接web服务器(而不是localhost)时出现问题。 / p>

我在localhost案例中使用的命令:

sqlldr <usrname>/<password> control=table.ctl log=table.log ERRORS=25000

以下是关于web-server

sqlldr <usrname>/<password>@LABSERVER control=table.ctl log=table.log ERRORS=25000

我创建了一个tnsnames.ora,如下所示:

LABSERVER =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(Host = <hostaddress>)(Port = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = <servicename>)
    )
  )

但是我收到了这个错误:

SQL*Loader-704: Internal error: ulconnect:OCIServerAttache [0]

ORA-12154: TNS:could not resolve the connect identifier specified

任何想法都将受到赞赏

5 个答案:

答案 0 :(得分:1)

  

“我在哪里创建了一个tnsnames.ora   如下:“

这似乎意味着您已从数据库服务器发布了TNSNAMES.ORA文件。

请记住,您还需要客户端上的TNSNAMES.ORA文件。这也正确配置了吗?

答案 1 :(得分:1)

我们遇到了类似的问题,没有权限在本地修改tnsnames.ora,所以我们必须在命令行中指定服务,如:

sqlldr userid = username / password @ \&#34;(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = myDBHost)(PORT = 1521)))(CONNECT_DATA =(SERVER = DEDICATED)( SID = MYDBSID)))\&#34;对照=&#39; mytable.ldr&#39;登录=&#39; mytable.log&#39;

感谢https://hs2n.wordpress.com/2012/06/12/oracle-using-sqlplus-and-sqlldr-on-databases-without-tnsnames-entry/#comment-700

答案 2 :(得分:0)

基本上这个错误告诉你,给定主机,端口,协议和service_name,客户端找不到监听Oracle服务。确保您的主机名有效(例如,您可以ping它),侦听器正在侦听1521,并且服务器数据库中的service_name实际上是您指定的名称。您可以通过在sqlplus中发出以下命令来验证它:

SHOW PARAMETER service_names

告诉您数据库正在向侦听器注册的内容。

答案 3 :(得分:0)

对于像我这样的人,谁找到了这个帖子。

要检查的一件事:tnsnames.ora文件的文件权限。

对于同一台机器上但不属于DBA组且ORACLE_HOME和ORACLE_BIN设置正确的客户端报告了主题错误。 tnsnames.ora文件的文件权限排除了世界读取;因为无法解析因为无法解析服务名称而无法读取704/12514的tnsnames.ora文件。

从命令提示符:chmod 644 $ ORACLE_HOME / network / admin / tnsnames.ora

答案 4 :(得分:0)

如果您的密码有@字符,那么sqlldr实用程序将无法正常工作,更改密码将起作用 http://www-01.ibm.com/support/docview.wss?uid=swg21347615