因为公司的掌上城市系统在多个地势同时上线,而为了让每个城市的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;
|