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