[数据库数据同步建视图]数据库(oracle)数据同步之物化视图(实战入门)

?概念:DBMS_JOB系统包是Oracle“任务队列”子系统的API编程接口。DBMS_JOB包对于任务队列提供了下面这些功能:提交并且执行一次任务、改变任务的执行参数以及删除或者临时挂起任务

0、在数据服务器中创建用户1或者用户2,可以模拟两个数据库实例,创建用户的脚本这里就不写了哈

1、连接数据库服务器B,创建测试表002_T_JBPM_DBSY.sql

2、连接数据库服务器A,创建数据库A和数据库B的连接

createdatabaselinkDBLINK_A2B

connecttozuo2identifiedby"123"?using‘(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.3.65)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=ltxxxt)

))‘;

3、连接数据库服务器A,测试是否连接通常

?SELECT*FROM?T_JBPM_DBSY@DBLINK_A2B

4、连接数据库服务器A,创建同义词(非必须)

?createsynonym?T_JBPM_DBSYforT_JBPM_DBSY@DBLINK_A2B

5、连接数据库服务器B,创建物化视图日志,用于记录该表同步日志

creatematerializedviewlogonT_JBPM_DBSY

6、连接数据库服务器A,创建物化视图

CREATEMATERIALIZEDVIEWT_JBPM_DBSY_A

REFRESHFASTONDEMAND

STARTWITHTO_DATE(‘01-01-201410:17:18‘,‘DD-MM-YYYYHH24:MI:SS‘)NEXTSYSDATE+1/(24*60)

AS

SELECT?*FROM"T_JBPM_DBSY"@"DBLINK_A2B""T_JBPM_DBSY";

7、在数据库服务器B中插入一条数据,等待一分钟….然后查看数据库服务器A中对应的数据

?SELECT*FROMT_JBPM_DBSY_A

?我们也可以自己通过任务管理系统来同步数据数据

?1、在数据库服务器A中创建可执行的刷新数据存储过程

createorreplaceprocedureauto_refresh_materialized_job

as

begin

?DBMS_MVIEW.refresh(‘T_JBPM_DBSY_A‘,‘C‘);

end;

2、在数据库服务器A中创建OracleJob定时执行刷新任务?1分钟秒执行一次

variablejobnonumber;

begin

dbms_job.submit(:jobno,‘auto_refresh_materialized_job;‘,SYSDATE,‘SYSDATE+1/(24*60)

‘);

commit;

end;

?3、可以使用给物化视图上加上触发器来获取同步时改变的数据

?Createorreplacetrigger?TR_T_JBPM_DBSY_A

afterinsertordeleteorupdateonT_JBPM_DBSY_A

declare

BEGIN

?CASE

?WHEREINSERTINGTHEN

?insertintoXXXXX();

WHEREDELETEINGTHEN

NULL;

WHEREUPDATEINGTHEN

NULL;

?ENDCASE;

ENDTR_T_JBPM_DBSY_A_IN

新增(修改、删除)数据库服务器B的T_JBPM_DBSY的数据

在数据库B中查看物化视图日志

select*frommlog$_t_jbpm_dbsy

在数据库服务器中A命令行中手动执行刷新F表示增量C表示全量

execDBMS_MVIEW.refresh(‘T_JBPM_DBSY_A‘,‘C‘);

在需要时候,也可以直接用物化视图中的自动刷新功能

查看数据库正在执行的Job

SELECT*FROMUSER_JOBS;

creatematerialized?viewlogonT_JBPM_DBSYWITHPRIMARYKEY

删除物化视图日志

DROPmaterializedVIEW?logon?T_JBPM_DBSY

[数据库数据同步建视图]数据库(oracle)数据同步之物化视图(实战入门)

上一篇:Oracle Database 19c 技术架构(五)


下一篇:数据库的基本操作