我有一个基于服务器的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
任何想法都将受到赞赏
答案 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;
答案 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