环境:oracle10g
本地机器IP: 192.168.8.89
本地Oracle数据库SID: sysdb
tnsnames.ora写法如下:
SYSDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = Haiyang-TP)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = sysdb)
    )
  )
其中Haiyang-TP是我的主机名。问题说明:
使用 exp test/test@sysdb file=d:\d1.dmp 可以成功的导出数据库。
但是如下两种写法均会出现“无法解析指定的连接标识符”的错误
exp test/[email protected]/sysdb file=d:\d1.dmp
exp test/[email protected]/sysdb file=d:\d1.dmp
exp test/test@Haiyang-TP/sysdb file=d:\d1.dmp
为什么? 

解决方案 »

  1.   

    @后面使用的连接标识符,是你tnsnames.ora里已正确配置的。
    192.168.8.89/sysdb 
    127.0.0.1/sysdb
    Haiyang-TP/sysdb以上连接标识符,你在tnsnames.ora里并未配置,故EXP无法识别之。
      

  2.   

    简单连接应该是可以的。
    你查的一下你的%ORACLE_HOME\network\admin下的sqlnet.ora
    是否有NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
    如果有,在连接时加上端口试试,如:exp test/[email protected]:1521/sysdb file=d:\d1.dmp
    exp test/[email protected]:1521/sysdb file=d:\d1.dmp
    exp test/test@Haiyang-TP:1521/sysdb file=d:\d1.dmp
      

  3.   

    @ 后面跟的是字符串 你这里应该是SYSDB 而不是你的IP地址或者其他额
      

  4.   

    为什么要加IP或本机地址呢?你连接数据库的时候都需要加IP或本机地址的吗?不用的,直接字符串sysdb就行了,加了地址就跟sysdb不一样了
      

  5.   

    加上端口号也不行
    C:\Users\Haiyang>exp test/[email protected]:1521/sysdb tables=(emp) file=emp1.dmpExport: Release 10.2.0.1.0 - Production on 星期三 4月 7 12:57:39 2010Copyright (c) 1982, 2005, Oracle.  All rights reserved.
    EXP-00056: 遇到 ORACLE 错误 12154
    ORA-12154: TNS: 无法解析指定的连接标识符
    EXP-00000: 导出终止失败
      

  6.   

    搞定了。第一次我只检查了oracle服务器端的sqlnet.ora,是NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)这样写的,但是exp会出错。刚才看client端的sqlnet.ora是NAMES.DIRECTORY_PATH= (TNSNAMES),加上EZCONNECT后果然凑效了,加不加端口号都行。
    谢谢!