日期:2014-05-17  浏览次数:21147 次

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……

dos下先指定实例
set oracle_sid=dev (linux export ORACLE_SID=dev)

imp sino/sino@dev file=D:\axa_cert.dmp full=y ignore=y
------解决方案--------------------
直接赋予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
就报错


set oracle_sid 命令是设置的默认的数据库的实例。。。
你可以在报错之前查看的注册表里,看你的sid是什么你就可以找出你
默认操作的sid了。。
------解决方案--------------------
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