数据库(oracle)数据同步之物化视图(实战入门)
2015-02-03 20:36
1111 查看
技术需求:
数据库服务器A同步数据库服务器B中的T_JBPM_DBSY(待办事项)表数据,在数据库服务器B中数据发生变化时,A数据库的数据同时也跟着变化,并且记录下变化的数据。
数据库(oracle)数据同步之物化视图
•数据库连接(Database links)
概念:当我们跨本地数据库,访问另外一个数据库表的数据时,本地数据库就必须创建远程数据库的DBLINK
•
•物化视图( Materialized views)
概念:物化视图是包括一个查询结果的数据库对象,它是远程数据的本地副本,或者用来生成基于数据表求和的汇总表,物化视图日志则是记录物化视图在执行时的记录
•同义词(Synonyms)
概念:是表、索引、视图等模式对象的一个别名,是数据库对象的一个代名词
•触发器(Triggers)
•概念:触发器是在事件发生时隐式地自动运行的PL/SQL程序块,不能接受参数,不能被调用
•
•任务(Jobs)
•概念:DBMS_JOB系统包是Oracle“任务队列”子系统的API编程接口。DBMS_JOB包对于任务队列提供了下面这些功能:提交并且执行一次任务、改变任务的执行参数以及删除或者临时挂起任务
0、在数据服务器中创建用户1或者用户2,可以模拟两个数据库实例 ,创建用户的脚本这里就不写了哈
1、连接数据库服务器B,创建测试表002_T_JBPM_DBSY.sql
2、连接数据库服务器A,创建数据库A和数据库B的连接
createdatabase link DBLINK_A2B
connectto zuo2 identified by "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,创建同义词(非必须)
create synonym T_JBPM_DBSY for T_JBPM_DBSY@DBLINK_A2B
5、连接数据库服务器B,创建物化视图日志,用于记录该表同步日志
create materialized view log on T_JBPM_DBSY
6、连接数据库服务器A,创建物化视图
CREATEMATERIALIZED VIEW T_JBPM_DBSY_A
REFRESHFAST ON DEMAND
STARTWITH TO_DATE('01-01-2014 10:17:18', 'DD-MM-YYYY HH24:MI:SS') NEXTSYSDATE+1/(24*60)
AS
SELECT * FROM"T_JBPM_DBSY"@"DBLINK_A2B" "T_JBPM_DBSY";
7、在数据库服务器B中插入一条数据,等待一分钟….然后查看数据库服务器A中对应的数据
SELECT*FROM T_JBPM_DBSY_A
我们也可以自己通过任务管理系统来同步数据数据
1、在数据库服务器A中创建可执行的刷新数据存储过程
create or replace procedure auto_refresh_materialized_job
as
begin
DBMS_MVIEW.refresh('T_JBPM_DBSY_A',‘C');
end;
2、在数据库服务器A中创建Oracle Job定时执行刷新任务 1分钟秒执行一次
variable jobnonumber;
begin
dbms_job.submit(:jobno,'auto_refresh_materialized_job;', SYSDATE,'SYSDATE+1/(24*60)
');
commit;
end;
3、可以使用给物化视图上加上触发器来获取同步时改变的数据
Create or replace trigger TR_T_JBPM_DBSY_A
after insert or delete or update onT_JBPM_DBSY_A
declare
BEGIN
CASE
WHERE INSERTING THEN
insert intoXXXXX();
WHERE DELETEING THEN
NULL;
WHERE UPDATEING THEN
NULL;
END CASE;
END TR_T_JBPM_DBSY_A_IN
新增(修改、删除)数据库服务器B的T_JBPM_DBSY的数据
在数据库B中查看物化视图日志
select*from mlog$_t_jbpm_dbsy
在数据库服务器中A命令行中手动执行刷新F表示增量C表示全量
execDBMS_MVIEW.refresh('T_JBPM_DBSY_A',‘C');
在需要时候,也可以直接用物化视图中的自动刷新功能
查看数据库正在执行的Job
SELECT*FROM USER_JOBS;
create materialized view log on T_JBPM_DBSY WITH PRIMARY KEY
删除物化视图日志
DROP materialized VIEW log on T_JBPM_DBSY
数据库服务器A同步数据库服务器B中的T_JBPM_DBSY(待办事项)表数据,在数据库服务器B中数据发生变化时,A数据库的数据同时也跟着变化,并且记录下变化的数据。
数据库(oracle)数据同步之物化视图
•数据库连接(Database links)
概念:当我们跨本地数据库,访问另外一个数据库表的数据时,本地数据库就必须创建远程数据库的DBLINK
•
•物化视图( Materialized views)
概念:物化视图是包括一个查询结果的数据库对象,它是远程数据的本地副本,或者用来生成基于数据表求和的汇总表,物化视图日志则是记录物化视图在执行时的记录
•同义词(Synonyms)
概念:是表、索引、视图等模式对象的一个别名,是数据库对象的一个代名词
•触发器(Triggers)
•概念:触发器是在事件发生时隐式地自动运行的PL/SQL程序块,不能接受参数,不能被调用
•
•任务(Jobs)
•概念:DBMS_JOB系统包是Oracle“任务队列”子系统的API编程接口。DBMS_JOB包对于任务队列提供了下面这些功能:提交并且执行一次任务、改变任务的执行参数以及删除或者临时挂起任务
0、在数据服务器中创建用户1或者用户2,可以模拟两个数据库实例 ,创建用户的脚本这里就不写了哈
1、连接数据库服务器B,创建测试表002_T_JBPM_DBSY.sql
2、连接数据库服务器A,创建数据库A和数据库B的连接
createdatabase link DBLINK_A2B
connectto zuo2 identified by "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,创建同义词(非必须)
create synonym T_JBPM_DBSY for T_JBPM_DBSY@DBLINK_A2B
5、连接数据库服务器B,创建物化视图日志,用于记录该表同步日志
create materialized view log on T_JBPM_DBSY
6、连接数据库服务器A,创建物化视图
CREATEMATERIALIZED VIEW T_JBPM_DBSY_A
REFRESHFAST ON DEMAND
STARTWITH TO_DATE('01-01-2014 10:17:18', 'DD-MM-YYYY HH24:MI:SS') NEXTSYSDATE+1/(24*60)
AS
SELECT * FROM"T_JBPM_DBSY"@"DBLINK_A2B" "T_JBPM_DBSY";
7、在数据库服务器B中插入一条数据,等待一分钟….然后查看数据库服务器A中对应的数据
SELECT*FROM T_JBPM_DBSY_A
我们也可以自己通过任务管理系统来同步数据数据
1、在数据库服务器A中创建可执行的刷新数据存储过程
create or replace procedure auto_refresh_materialized_job
as
begin
DBMS_MVIEW.refresh('T_JBPM_DBSY_A',‘C');
end;
2、在数据库服务器A中创建Oracle Job定时执行刷新任务 1分钟秒执行一次
variable jobnonumber;
begin
dbms_job.submit(:jobno,'auto_refresh_materialized_job;', SYSDATE,'SYSDATE+1/(24*60)
');
commit;
end;
3、可以使用给物化视图上加上触发器来获取同步时改变的数据
Create or replace trigger TR_T_JBPM_DBSY_A
after insert or delete or update onT_JBPM_DBSY_A
declare
BEGIN
CASE
WHERE INSERTING THEN
insert intoXXXXX();
WHERE DELETEING THEN
NULL;
WHERE UPDATEING THEN
NULL;
END CASE;
END TR_T_JBPM_DBSY_A_IN
新增(修改、删除)数据库服务器B的T_JBPM_DBSY的数据
在数据库B中查看物化视图日志
select*from mlog$_t_jbpm_dbsy
在数据库服务器中A命令行中手动执行刷新F表示增量C表示全量
execDBMS_MVIEW.refresh('T_JBPM_DBSY_A',‘C');
在需要时候,也可以直接用物化视图中的自动刷新功能
查看数据库正在执行的Job
SELECT*FROM USER_JOBS;
create materialized view log on T_JBPM_DBSY WITH PRIMARY KEY
删除物化视图日志
DROP materialized VIEW log on T_JBPM_DBSY
相关文章推荐
- Oracle 10g通过创建物化视图实现不同数据库间表级别的数据同步
- Oracle 11g 通过创建物化视图实现不同数据库间的表数据同步
- Oracle 11g 通过创建物化视图实现不同数据库间的表数据同步
- Oracle 10g通过创建物化视图实现不同数据库间表级别的数据同步
- Oracle物化视图,物化视图日志,增量刷新同步远程数据库
- Oracle中怎么样使用物化视图来同步数据
- Oracle 使用物化视图实现表数据同步
- Oracle DBLinke+实体化视图同步两个数据库的数据
- Oracle 11g 通过创建物化视图实现不同数据库间的表数据同步 推荐
- 六、Oracle的数据库管理及数据字典和动态视图
- Oracle GoldenGate 数据同步初始化最佳实战(Data Pump)
- 数据库物化视图刷新SQL命令和查询被delete掉的数据
- oracle创建用户,创建数据库,导入数据,赋予创建视图~创建触发器权限
- 删除Oracle某数据库下的所有表、视图等数据【转】
- 使用物化视图的方式进行表级数据同步示例
- oracle mv物化视图入门
- TIBCO ESB实战系列:TIBCO数据库适配器双向数据同步解决方案
- 快照、刷新-[置顶] Oracle如何实现两个数据库的同步(用实体化视图实现)(oracle快照实例)-by小雨
- 浅谈Oracle 数据库之间数据同步方案
- Materialized View 物化视图实现 Oracle 表双向同步