当前位置: 代码迷 >> Oracle管理 >> oracle导入数据出错:imp 00058:ora-12154:tns:无法连接指定的连接标识符解决方法
  详细解决方案

oracle导入数据出错:imp 00058:ora-12154:tns:无法连接指定的连接标识符解决方法

热度:748   发布时间:2016-04-24 06:19:48.0
oracle导入数据出错:imp 00058:ora-12154:tns:无法连接指定的连接标识符
导入语句imp sino/sino@dev file=D:\axa_cert.dmp full=y
在运行-》cmd执行上述语句出现如下错误:
IMP-00058: 遇到 ORACLE 错误 12154
ORA-12154: TNS: 无法解析指定的连接标识符
IMP-00000: 未成功终止导入

在cmd下运行:sqlplus sino/sino@dev能连接到数据库
执行 exp sino/sino@dev file=D:\axa_cert_exp.dmp 也是成功的
注册表中的ORACLE/HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb10g_home1/ORACLE_SID为dev
我用当前实例导入的方法是正确的:如imp sino/sino file=D:\axa_cert.dmp full=y
就默认导入dev,但是不能指定sid导入,如改成imp sino/sino@uat file=D:\axa_cert.dmp full=y
或imp sino/sino@dev file=D:\axa_cert.dmp full=y就报上述错误
数据库中是有实例dev和uat的,sqlplus都能通。

dev下sino的权限是:
角色 管理选项 默认值 
CONNECT N Y 
DBA N Y 
EXP_FULL_DATABASE Y Y 
IMP_FULL_DATABASE Y Y 

操作都是在本地进行的,数据库安装在本机,年前执行导入语句是没问题的,过完年后过来就出现了上述问题
才搜索引擎上查了很多,都没见我这种情况,请求高手支援



------解决方案--------------------
SQLPLUS不能代表TNSNAME一定通过,先TNSPING你的DEV 看是否听过
CMD下运行 :TNSPING DEV
------解决方案--------------------
sino/sino@dev 中的 dev 并不是 oracle_sid,而是定义在 tnsname.ora 中的别名。从 tnsping dev 的结果看,dev 别名指的是 uat 实例(SERVICE_NAME = uat)。

如果要将数据导入指定的实例中,在本机上可以通过修改 ORACLE_SID 环境变量实现。
导入 dev 实例关联的数据库
c:\> set ORACLE_SID=dev
c:\> imp sino/sino ...
导入 uat 实例关联的数据库
c:\> set ORACLE_SID=uat
c:\> imp ...

或者,使用 netmgr 在 tnsname.ora 上分别为这两个实例添加别名,通过别名访问它们(当然需要确保启动侦听器)。


------解决方案--------------------
探讨
导入语句imp sino/sino@dev file=D:\axa_cert.dmp full=y
在运行-》cmd执行上述语句出现如下错误:
IMP-00058: 遇到 ORACLE 错误 12154
ORA-12154: TNS: 无法解析指定的连接标识符
IMP-00000: 未成功终止导入

在cmd下运行:sqlplus sino/sino@dev能连接到数据库
执行 ex……

------解决方案--------------------
直接赋予dba权限试试……
------解决方案--------------------
探讨

各位大大,我试了如下命令:
set oracle_sid=dev
imp sino/sino file=D:\axa_cert.dmp full=y ignore=y
是可以导入成功的,即先设置oracle_sid,再导入
如果执行如下命令:
imp sino/sino@dev file=D:\axa_cert.dmp full=y ignore=y
就报错

------解决方案--------------------
imp sino/sino@dev 命令中的 dev 为 tns 别名,由 tnsname.ora 中的设置决定。检查一下 tnsname.ora 文件中 dev 别名所指向的实例。
------解决方案--------------------
探讨
各位大大,我试了如下命令:
set oracle_sid=dev
imp sino/sino file=D:\axa_cert.dmp full=y ignore=y
是可以导入成功的,即先设置oracle_sid,再导入
如果执行如下命令:
imp sino/sino@dev file=D:\axa_cert.dmp full=y ignore=y
就报错

------解决方案--------------------
探讨
tnsname.ora:
# tnsnames.ora Network Configuration File: E:\oracle\product\10.2.0\db_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.

DEV =
(DESCRIPTION =
(ADDRESS = (……

------解决方案--------------------
估计是客户端的tnsname.ora出问题了,建议配置和移植工具->Net Configuration Assistant中重建下
或者你装了两个Oracle,我以前碰到过,装两个Oralcle会出这个问题,需要更改环境变量的优先级
------解决方案--------------------
重新配置一个Net Configuration Assistant和监听器如果,在导入试试
  相关解决方案