oracle导入导出语句中@后的sid的含义

2014-8-..    

最近总是用oracle10g导入导出,习惯了总是用如下语句:

      导入(win):imp user_name/password@sid file=c:\路径\a.dmp  full=y   log=XXX.log

      导入(linux):imp user_name/password@sid file=./路径/a.dmp  full=y    log=XXX.log

      导出(win):exp user_name/[email protected]  file=c:\a.dmp

      导出(linux):exp user_name/[email protected]  file=./a.dmp

 

      这里需要说明下:log=xxx.log  可以省略,且当在本地导出或导入自己唯一实例下的用户的库时,一半不用@sid

      我再这里只是想说明下如果加上@sid的含义,我通过oracle的net manager和plsql develper的配合,得到如下结论:

以imp为例:打开你在oracle中tnsnames.ora文件,如下:

   

# tnsnames.ora Network Configuration File: D:\app\j2ee\product\11.1.0\db_1\NETWORK\ADMIN\tnsnames.ora
# Generated by Oracle configuration tools.

172.28.2.130/ORADB =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 172.28.2.130)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = oradb)
    )
  )

10.170.18.63_ORADB =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.170.18.63)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = oradb)
    )
  )

192.168.0.200_ORADB =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.200)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = oradb)
    )
  )

192.168.10.88_ORADB =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.88)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = oradb)
    )
  )

ORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = j2ee-PC)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

10.10.11.245_ORADB =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.11.245)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = oradb)
    )
  )

10.163.110.101_ORADB =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.163.110.101)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = commdb)
    )
  )

@sid中的sid就是=前边的名称,即:172.28.2.130/ORADB,10.170.18.63_ORADB  ,192.168.0.200_ORADB,192.168.10.88_ORADB,ORCL  ......

由于tnsnames.ora文件的下的=前边的名称很随意,故导入导出的sid如此(特殊字符没测试过),于我原来一直认为是库里的实例名称相差很大,自己悔恨了很久....

      此文章有待继续测试,更新纠错中。。。。

 

2014-10-22  @sid进一步的理解

         回头看这篇文章,有了新的理解:我们在cmd中利用exp或imp导入导出时,可能会纠结,当我想从本地想远程某个机器导出导出时,改怎么办呢?其实如果你前面都看明白的话,就不难理解,对于exp或imp命令来说,他是不区分是本地库还是远程机器的库的,全在你tnsnames.ora文件中的是怎么配的,这个文件的模板格式是

    192.168.0.234_ORCL =

      (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.234 )(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

        而192.168.0.234_ORCL就是你导入导出的@sid,显然这个名字的自定义的,顺便提一下,对于tmsnames.ora这个文件的的修改和添加最好是在net manager这个工具自己一步步配,最好不要直接在这个文件上添加或修改,这个我的心得。

        以上可知,对于imp和exp命令来来,其实他可以不区分是本地或远程,你文件里@sid配的是本地(即HOST = 192.168.0.234),那就是本地,反之亦然。

 

 

你可能感兴趣的:(oracle导入导出语句中@后的sid的含义)