要求:
  查询Boss机的日志boss_log表 如果有备份记录就同步客户的Boss机数据到本地的数据库
  select count(*) from boss_log where time='20110307'
  time后面的查询条件是取当天的日期 比如今天2011年3月16日2:49:17 则查询条件为 20110316 
  本地表的ID取Boss机的ID 保持同步
  如果本地表没有数据直接取Boss机 数据  -----下面两点保证记录同步 大概实现触发器的原理 
  如果本地表有数据根据Boss的ID查本地 如果存在更新表记录 如果不存在插入Boss机记录
  根据本地ID查Boss机数据  如果不存在 将该记录标记为删除(历史记录)  涉及表大概有6-7张
  简单模拟一下表情况
  Boss机表
  test1
  ---------------
  id ,name,size
  1  ,td   ,12
  2  ,ww   ,34
  
  test2
  ---------------
  id ,areaName, areaCode
   01,ss,       12
   03,ss,       16  本地表
   mytest1
  -------------------
  id,name,size
 
  mytest2
  -------------------
  id,code
  有可能与Boss机表结构相同 如test1与mytest1 
  也有可能只取Boss表中某一列的数据 如test2与mytest2
下面是我的解决方案先创建dblink 然后写个存储过程 然后写个job 如果条件成立 每天8点备份
//创建连接
create databse link bosslink 连接的dblink名称
connect to mytest  ---连接的数据库名称
identified by bosslink sys  连接的数据库密码
using('description=
       (address=(protocol=tcp)(host=ip地址)(port=端口))
     (connect_data=
      (server=dedicated)
      (server_name=数据库名称)
     )
    ');//创建同步的存储过程
create or replace procedure testname
as
cursor mycur is select * from test1;
my_id number;
n number;  begin
  -------------------------------------------------------------------------
    for n in  mycur loop
           begin
              DBMS_OUTPUT.PUT_LINE('开始循环');
              select count(*) into my_id from test2 t2 where t2.id=n.id;
              DBMS_OUTPUT.PUT_LINE('获取记录');
               if my_id<1 then
                  DBMS_OUTPUT.PUT_LINE('hahaa');  
                 insert into test2 select * from test1;
               end if;
            end; 
    end loop;
  ---------------------------------------------------------------------------- 
    commit;
end;//创建job
begin 
 sys.dbms_job.submit(job=>:job,--job编号
 what=>'dbms_ooutput.pub_line("testname");',--执行脚本
next_date=>to_date('17-01-2011 16:17:31','dd-mm-yyy hh24:mi:ss'),--下次执行时间
interval=>'trunc(sysdate)+8/24');--执行时间间隙
commit;
end;
问题:
 1,现在我只实现了本地两张表test1与test2之间的数据同步,按要求修改存储过程
 2,创建job后 是否是服务器只要开启它到时间就执行?不需要我用程序调用吧?
备注:本人是搞java的 对基本的sql 还可以 其他的就。拜托各位了 O(∩_∩)O谢谢。
      主要是中间的存储过程 郁闷。

解决方案 »

  1.   

    实现数据表同步可以使用物化视图及物化视图日志,
    可设置执行同步的频率的.详见Google.
      

  2.   

    物化视图不能用啊  客户boss数据 我只有查询的权限 甚至连查询语句都是他们写好的给我    不能在上面创建 什么视图之类的
      

  3.   

    BOSS数据? 是中国移动的项目吗?
      

  4.   

    我现在 功能基本写完了 哈哈    只不过有个问题       Boss机数据居然是远程的数据 而我IP ping不通远程的地址 dblink查询超时 
      

  5.   

    我是最近刚听说移动有个BOSS项目的.
    楼主在哪?广东的吗?