领导让我做个数据同步的工作(数据库用的是 oracle)文档如下:用户信息同步的方式有两种:
1)方案采用Webserveices方式,数据同步。
2)如两数据库服务器在同一网段,推荐采用数据库触发器方式进行同步。
在本项目中,由于行政办公系统与F5的预算管理与执行系统,都在同一个网段内,采用数据库触发器的方式来实现。
方法,数据库触发器包含如下几个:
A.OA门户中增加新的操作人员与密码,同步到F5的预算管理与预算执行系统;
B.OA门户中修改了操作员的登陆密码,同步到F5的预算管理与预算执行系统;
C.OA门户中操作员停用,不允许登陆(不能删除,只能停用),同步状态到F5的预算管理与预算执行系统;不是很明白什么意思的,有高人收说要怎么做吗
1)方案采用Webserveices方式,数据同步。
2)如两数据库服务器在同一网段,推荐采用数据库触发器方式进行同步。
在本项目中,由于行政办公系统与F5的预算管理与执行系统,都在同一个网段内,采用数据库触发器的方式来实现。
方法,数据库触发器包含如下几个:
A.OA门户中增加新的操作人员与密码,同步到F5的预算管理与预算执行系统;
B.OA门户中修改了操作员的登陆密码,同步到F5的预算管理与预算执行系统;
C.OA门户中操作员停用,不允许登陆(不能删除,只能停用),同步状态到F5的预算管理与预算执行系统;不是很明白什么意思的,有高人收说要怎么做吗
create database link kings --dblink 的名字,同步的时候要用到这个名字,可以随便取
connect to kings --连接到那个数据库的用户名
identified by kings123 -- 连接那个数据库的密码
using '(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.75)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XE)
)
)';
-- 上边的 host 是连接数据库的 IP ,port 是端口号,要没改过的话就是 1521有了 kings(dblink),我们就可以实现数据同步的工作了,通过触发器来实现
先说下场景,假如我们现在要做个同步的功能,在操作表as_emp的时候
1、添加:同样往 192.168.1.75 那个数据库里的empInfo添加一条记录(通过 empInfo@kings 表名@dblink 的方式访问)
2、更新:在更新as_emp.emp_code的时候,把这个字段的数据更新到empInfo.pass里去(当然你也可以做删除的操作...我这个业务里没这个需求)create or replace trigger syn_as_Emp
after insert or update
On as_emp
for each row
Begin
case
when inserting then
insert into empInfo@kings(userid,pass) values(:new.emp_code,:new.emp_name);
when updating then
update empInfo@kings set pass=:new.emp_name where userid=:new.emp_code;
end case;
End;后边我突然想到了个问题,创建dblink的代码应该要写到触发器里,先得确保有了触发器才能执行同步的操作呀,要不然数据库每次启动以后,连接就断了的!
我按照程序的思想想写个 try{创建dblink}catch()... 可怎么都写不了,突然看到有个地方说删除 dblink的命令是 drop database link dblink名字
我就觉得自己想太多了,用到 drop 的地方,就像表啊什么的,已经写到库里的,是肯定存在的,于是我尝试着重启数据库,果然,只要 dblink 没被删除,再数据库起来的时候 dblink 就存在了
笼统理解的话,差不多是那么个概念,要看是什么类型IP,C类的话就是你说的这样
有个算法在里边的