oracel dblink  

背景:需要将有9000W笔的数据导入数据库,9000W笔数据在一台server A上,需要导入新架设好的server B

---------------------------------------------
之前的方法是从A将数据export到PC ,再将pC的数据import到B,
现在想用dblink将数据在两台机器上传输,不经过PC。

OK。
现在用plsql连接B,sql command:CREATE DATABASE LINK link  CONNECT TO username IDENTIFIED BYpassword
                                                       USING ‘connectstring’

link :是创建链接的名字,随便写,但要有一定意义
username/password:连接数据库B的用户名/密码
‘connectstring’:在你本地PC上tnsname.ora上,有关目标数据库B的名字,如:
123 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.123.123)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = oracle)
    )
  )
那么你的‘connectstring’就是写:123

执行之后,需要测试一下:select * from tabel_name@link

这种dblink的速度是非常快的,在两台server中跑。

用这种方法在A和B中传输表。create table 表名 as select * from 表名@link

 

 

你用上述的SQL创建DBLINK成功时,却在查询或做表传输时,有错误 ORA-12154,那么就把 connectstring’  改为tnsnames.ora中设置的东西,如上述:

 

CREATE DATABASE LINK link  CONNECT TO username IDENTIFIED BY password     USING ‘ (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.123.123)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = oracle)
    )
  )

 

应该是配置的时候tnsname.ora没有配置对,因为有的dblink能创建也能查询,但是有的就不行。这也是变通的一种方法。

 

select * from aaa@link_neimeng1