领导让我做个数据同步的工作(数据库用的是 oracle)文档如下:用户信息同步的方式有两种:
1)方案采用Webserveices方式,数据同步。
2)如两数据库服务器在同一网段,推荐采用数据库触发器方式进行同步。
在本项目中,由于行政办公系统与F5的预算管理与执行系统,都在同一个网段内,采用数据库触发器的方式来实现。
方法,数据库触发器包含如下几个:
A.OA门户中增加新的操作人员与密码,同步到F5的预算管理与预算执行系统;
B.OA门户中修改了操作员的登陆密码,同步到F5的预算管理与预算执行系统;
C.OA门户中操作员停用,不允许登陆(不能删除,只能停用),同步状态到F5的预算管理与预算执行系统;不是很明白什么意思的,有高人收说要怎么做吗

解决方案 »

  1.   

    去看看ip地址的基础知识.比如内网ip 192.168.0.1和192.168.0.2就是一个网段的.
      

  2.   

    在网上找到实现同步的方法了首先创建一个 dblink(database link)
    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 就存在了
      
      

  3.   


    笼统理解的话,差不多是那么个概念,要看是什么类型IP,C类的话就是你说的这样
    有个算法在里边的