最近项目中用到了dblink,顺便验证了几种常用数据库的类似功能。
ORACLE
--创建dblink,注意如果不加public则只能当前用户使用该dblink
create public database link link名 connect to 用户名 identified by 密码 using '实例名';
--注意事项,当global_names参数为true时,dblink的名字必须与global_name(SELECT * FROM GLOBAL_NAME)一致
--可通过下面语句查看该参数
SQL> show parameter global_names
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
global_names boolean FALSE
--也可修改该值
alter system set global_names=true;
--使用dblink
--查询DBLINK
select * from dba_db_links;
--查询数据
select * from dual@link名;
--删除dblink
drop public database link link名
DB2
1.设置数据库属性
查看联邦是否开启
get dbm cfg
...
Federated Database System Support (FEDERATED) = YES
...
如果该值为NO,则需要执行
db2 update dbm cfg using federated yes
开启联邦支持
执行后需要重启
db2stop force
db2start
重新启动数据库
2.创建远程数据库的node
db2 catalog tcpip node 节点名 remote 服务器ip server 端口
3.创建数据库 别名
db2 catalog database 数据库名 at node 节点名
4.创建wrapper
db2 create wrapper drda
5.创建server
db2 create Server serverName type DB2/UDB version 9.7 wrapper "DRDA" authid "用户名" password "密码" options (dbname '远程数据库名')
6.创建mapping
db2 create User Mapping for 本地数据库用户 server "serverName" options (remote_authid '远程数据库用户名', remote_password '远程数据库密码')
删除命令:
drop User Mapping for 本地数据库用户 server "serverName"
7.创建nickname
db2 create NickName schema.tableName for serverName.schema.tableName
8.其他命令
db2 list node directory
db2 list db directory
DROP SERVER server_name
DROP USER MAPPING FOR authorization_name SERVER server_name
DROP NICKNAME nickname
DROP WRAPPER wrapper_name
SQL SERVER
--创建链接服务器
exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','远程服务器名或ip地址'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'用户名','密码'
go
--查询示例
select * from srv_lnk.数据库名.dbo.表名
--导入示例
select * into 表 from srv_lnk.数据库名.dbo.表名
--以后不再使用时删除链接服务器
exec sp_dropserver 'srv_lnk','droplogins'
go
--如果只是临时访问,可以直接用openrowset
--查询示例
select * from openrowset('SQLOLEDB'
,'sql服务器名';'用户名';'密码'
,数据库名.dbo.表名)
--导入示例
select * into 表 from openrowset('SQLOLEDB'
,'sql服务器名';'用户名';'密码'
,数据库名.dbo.表名)