【各位高手帮忙】关于orcle数据同步的问题

haitang_2011 2011-03-16 03:06:55
要求:
查询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谢谢。。。。
主要是中间的存储过程 郁闷。。。。
...全文
85 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
唐诗三百首 2011-03-16
  • 打赏
  • 举报
回复
实现数据表同步可以使用物化视图及物化视图日志,
可设置执行同步的频率的.详见Google.
haitang_2011 2011-03-16
  • 打赏
  • 举报
回复
上班前人工置顶
haitang_2011 2011-03-16
  • 打赏
  • 举报
回复
这 南京的
唐诗三百首 2011-03-16
  • 打赏
  • 举报
回复
我是最近刚听说移动有个BOSS项目的.
楼主在哪?广东的吗?
haitang_2011 2011-03-16
  • 打赏
  • 举报
回复
我现在 功能基本写完了 哈哈

只不过有个问题

Boss机数据居然是远程的数据 而我IP ping不通远程的地址 。。。dblink查询超时
haitang_2011 2011-03-16
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 ap0405140 的回复:]
BOSS数据? 是中国移动的项目吗?
[/Quote]
恩 是移动的项目
唐诗三百首 2011-03-16
  • 打赏
  • 举报
回复
BOSS数据? 是中国移动的项目吗?
haitang_2011 2011-03-16
  • 打赏
  • 举报
回复
物化视图不能用啊 客户boss数据 我只有查询的权限 甚至连查询语句都是他们写好的给我

不能在上面创建 什么视图之类的
jym2002 2011-03-16
  • 打赏
  • 举报
回复
如果只是为了数据同步,物化视图比你写的什么过程肯定强,毋庸置疑~~~~~~~~~~!
haitang_2011 2011-03-16
  • 打赏
  • 举报
回复
今夜注定无眠。。。
haitang_2011 2011-03-16
  • 打赏
  • 举报
回复
没人顶么 我快做完了都

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧