Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

87

积分

0

好友

5

主题
1#
发表于 2013-9-4 11:10:34 | 查看: 3317| 回复: 2
DB1 DB2
Wed Sep  4 10:33:39 CST 2013 Wed Sep  4 10:33:36 CST 2013
现在我有一存储过程 从DB2 抽数据到DB1 通过DBLINK

DB2
如T1表结构如下
ID
NAME
CREATE_TIME   DATE  DEFAULT SYSDATE
SYNC_FLAG  DATE

DB1
存储过程如下(不要纠结语法)
  1. CREATE PROCEDURE P1
  2. BEGIN   
  3.    UPDATE  T1@DB2 SET  SYNC_FLAG=DATE '1949-10-1' WHERE SYNC_FLAG IS NULL;
  4.    
  5.    insert into test select * from t1@db2;

  6.    insert into  prod_table select * from test join xx,xx .....

  7.   UPDATE  T1@DB2 SET  SYNC_FLAG=sysdate  WHERE SYNC_FLAG=DATE '1949-10-1' ;

  8.    insert into sync_archive select * from test;

  9.   delete test;

  10.   -- write log
  11.   commit;

  12. exception
  13.    rollback;
  14.   --write log
  15.    commit;
  16. end;


复制代码
现在出现的问题
    有部分记录已同步的标志SYNC_FLAG 更新成了SYSDATE但并未抽到DB1,PROCEDURE中同步一COMMIT;

    这个过程执行持续30秒左右。

    更新了DB2   SYNC_FLAG 没到DB1的记录有一个共性,发现记录的创建时间和过程执行时间(job调用)很近,t1表的create_time default 是sysdate. 同一批记录发现只有这部门数据没同步。

比如
T1.CRATE_TIME    2013-09-03 18:00:14  
T1.SYNC_FLAG      2013-09-03 18:00:13

数据库版本 11.2.0.3  for linux x86  64bit

请各位提点意见,如何排查?




追求卓越
2#
发表于 2013-9-4 11:17:16
同步时时间交错下就可以了,比如上次提数据到5点,下次从4点开始提

回复 只看该作者 道具 举报

3#
发表于 2013-9-4 11:29:27
thanks ,找到原因了,突然醒悟,前两天数据库做了迁移,原设备的DB JOB忘停了,被老库抢走了。
已有 1 人评分威望 理由
Maclean Liu(刘相兵 + 5 结贴有奖

总评分: 威望 + 5   查看全部评分

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2025-1-4 07:22 , Processed in 0.051355 second(s), 24 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569