oracle中同一个库,不同的两个用户,怎么实现这两个用户中的一个表数据同步?

同一个数据库,但是有两个用户,这两个用户中有一个相同的表,怎么实现这两个表的数据同步?

1.同时操作同一个表就行了么
2.定时备份

--假设是将 用户名1的表A 同步到 用户名2的表B

--按以下流程:

--用户名2登录后创建下面同存储过程
CREATE OR REPLACE PROCEDURE SP_表数据同步 AS

BEGIN
--删除表数据
EXECUTE IMMEDIATE 'TRUNCATE TABLE B';
--插入表数据
insert into B
select * from 用户名1.A;
commit;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
END;

--创建同步任务
declare
job_id pls_integer;
begin
sys.dbms_job.submit(job => job_id, what => 'SP_表数据同步;', next_date => to_date('10-04-2018', 'dd-mm-yyyy'), interval => 'TRUNC(SYSDATE + 1)');
commit;
end;

/* job时间周期:
每天运行一次 'SYSDATE + 1'
每小时运行一次 'SYSDATE + 1/24'
每10分钟运行一次 'SYSDATE + 10/(60*24)'
每30秒运行一次 'SYSDATE + 30/(60*24*60)'
每隔一星期运行一次 'SYSDATE + 7'*/

可以用kettle工具定时抽取,就算是不同库也可以解决

知道一种方法,是自己操作的,实现同步,也就是再操作库的时候,生成一个sql文件,之后,执行就可以了;

同时操作同一个表就行了么
创建同步任务
declare
job_id pls_integer;
begin
sys.dbms_job.submit(job => job_id, what => 'SP_表数据同步;', next_date => to_date('10-04-2018', 'dd-mm-yyyy'), interval => 'TRUNC(SYSDATE + 1)');
commit;
end;

个人觉得用存储过程是最佳选择。

给两个用户的表赋权限就可以了

方法一、创建同义词

方法二、将表赋权给用户 带上用户名操作

方法三、赋权建立 视图

在同一个库中,通过同义词或者视图实现是比较方便的。根据需求是双向同步还是单向同步,来授予不同权限。

没必要同步,看哪个是数据写入的,给读取的那个用户授权就可以了