多个oracle数据库之间数据共享-database link(转载)

因为公司的掌上城市系统在多个地势同时上线,而为了让每个城市的3G快讯具有地势特色性,每个地势有自己单独的数据库系统,而每个地势的快讯又一些共同的,譬如突然出了一条国际新闻,那么是不是每个地势的后台编辑都要录入一遍,这样无疑是做了许多无用功,所以公司考虑架设一个总站,总站上有专门的人负责,每天负责录入一些通用的,不具有地势特色的新闻资讯,而各个城市的数据库都将共享总站的内容,同时又具有本地特色的资讯,同时解放了人力资源,各个城市可以集中于地势特色的建设上。

这样的方案,在技术上,就演变成了数据库之间的数据共享,每当录入总站录入数据的时候,调用触发器,通过databaselink向其它各个分站同步数据

用到oracle的database link,之前也没接触过,这两天依据资料摸索了一下,做个记录如下:

作用:将多个oracle数据库逻辑上看成一个数据库,也就是说在一个数据库中可以操作另一个数据库中的对象。

语法:
CREATE [PUBLIC] DATABASE LINK dblink CONNECT TO user IDENTIFIED BY password USING ‘connect_string’; 
DROP [PUBLIC] DATABASE LINK dblink; 
    注意:你必须有CREATE DATABASE LINK或CREATE PUBLIC DATABASE LINK的权限(可用sys身份去分配),另外,在你要连接的数据库上,的权限.

参数说明
    dblink: 你所创建的database link的名字

    user和password:要连接的数据库的用户名和密码
 
    connect_string:可以是经过Net Manager配置的(tnsnames.ora)且经测试可以连接的服务名,不过也可写成这种形式,更直接:(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME =orcl) )

使用
select * from mobile_type@dblink
 ;
UPDATE mobile_type@dblink m set m.type_name='83-6' where m.type_id =6;

具体步骤:

1、 链接字符串即服务名,首先在本地配置一个服务名,地址指向远程的数据库地址,

当然也可向下面那样直接写的。   
2、创建数据库链接(前提是已分配相应权限),进入系统管理员SQL>操作符下,运行命令:
 
create database link wapsx

connect to WAP identified by wap

using '(DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.166)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = waptown) –这个service_name是您要链接到的数据库服务端的服务名

    )

)';

则创建了一个以wap用户和waptown数据库的链接wapsx。

3.使用database link

select * from mobile_type@dblink ;
UPDATE mobile_type@dblink m set m.type_name='83-6' where m.type_id =6;

 

4、查看所有的数据库链接,进入系统管理员SQL>操作符下,运行命令: 
SQL>select owner,object_name from dba_objects where object_type='DATABASE LINK';
5、查看数据库连接
sql> select owner, db_link from dba_db_links; 
ower db_link

6、删除数据库连接
drop databaselink db_link
补充:同步数据时设计的巧妙之处:在触发器中,为了避免总分站资讯id冲突,创建序列的时候设计为总站中id始终为奇数,而分站中则只为偶数,这样就可以达到总分站相应资讯id一致,根据id再通过database link 进行同时的增删改,分站的数据则会跟着总站的同步。

 

原帖地址:http://blog.csdn.net/bingyingao/article/details/5587861

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值