[20150610]使用物化视图同步数据.txt

[20150610]使用物化视图同步数据.txt

--昨天听别人的一个需求要同步一个表的数据,要求使用golden gate有点小题大作。实际上物化事务就可以了,自己以前做过一些测试,也
--许没做记录,这次做一个记录。

1.建立测试环境:
--源数据库10g  10.2.0.4.0  IP=192.168.100.89
--同步表T。
create table t ( id number CONSTRAINTS pk_t primary key , name varchar2(20));
insert into t  select rownum,'test' from dual connect by levelcommit ;

--目的数据库11g 11.2.0.3.0 . IP=192.168.100.40
CREATE  PUBLIC DATABASE LINK "TEST089.COM" CONNECT TO SCOTT  IDENTIFIED BY btbtms USING '192.168.100.89:1521/test';
--建立一样的表:
create table t ( id number CONSTRAINTS pk_t primary key , name varchar2(20));

SCOTT@test> select * from t@test089.com where rownum=1;
        ID NAME
---------- --------------------
         1 test

--测试dblink通过。

2.测试同步:
--源数据库10g  10.2.0.4.0 
create materialized view log on t;

--目的数据库11g 11.2.0.3.0 .
create materialized view t on prebuilt table refresh fast start with sysdate next sysdate + 1/24/60 as select * from t@test089.com;

3.开始一次测试:
--源数据库10g  10.2.0.4.0 做一些dml操作看看:

insert into t values (11,'aaa');
commit ;
update t set name='xxx' where id=5;
commit ;
delete from t where id=2;
commit ;

SCOTT@test> select * from t;
          ID NAME
------------ --------------------
           1 test
           3 test
           4 test
           5 xxx
           6 test
           7 test
           8 test
           9 test
          10 test
          11 aaa

10 rows selected.

--等1分钟观察目的数据库情况:
--目的数据库11g 11.2.0.3.0 .

SCOTT@test> select * from t;
        ID NAME
---------- --------------------
        11 aaa
         5 xxx

--搞错,应该copy数据先,重做。

drop  materialized view t ;
delete from t;
commit ;

SCOTT@test> select * from t;
no rows selected

SCOTT@test> insert into t  select * from t@test089.com;
10 rows created.

SCOTT@test> commit ;
Commit complete.

create materialized view t on prebuilt table refresh fast start with sysdate next sysdate + 1/24/60 as select * from t@test089.com;

4.再重复测试:
--源数据库10g  10.2.0.4.0 做一些dml操作看看:
insert into t values (12,'bbb');
commit ;
update t set name='yyy' where id=5;
commit ;
delete from t where id=3;
commit ;

SCOTT@test> select * from t;
          ID NAME
------------ --------------------
           1 test
           4 test
           5 yyy
           6 test
           7 test
           8 test
           9 test
          10 test
          11 aaa
          12 bbb

10 rows selected.

--等1分钟观察目的数据库情况:
--目的数据库11g 11.2.0.3.0 .

SCOTT@test> select * from t;
        ID NAME
---------- --------------------
         1 test
         4 test
         5 yyy
         6 test
         7 test
         8 test
         9 test
        10 test
        11 aaa
        12 bbb

10 rows selected.

SCOTT@test> select * from t minus select * from t@test089.com;
no rows selected

SCOTT@test> select * from t@test089.com  minus select * from t;
no rows selected

通过视图可以观察同步的情况:
--目的数据库11g 11.2.0.3.0 :
SCOTT@test> SELECT JOB, LOG_USER, LAST_DATE, NEXT_DATE, FAILURES FROM USER_JOBS;
       JOB LOG_USER                       LAST_DATE           NEXT_DATE             FAILURES
---------- ------------------------------ ------------------- ------------------- ----------
       743 SCOTT                          2015-06-10 09:20:29 2015-06-10 09:21:29          0

时间: 2024-08-25 21:12:51

[20150610]使用物化视图同步数据.txt的相关文章

oracle物化视图同步两个数据库间的数据

两个oracle 10g 数据库,通过物化视图同步数据的具体实施流程 源库是 192.168.1.81 目标库是192.168.1.96 统计库用的服务器是 81 在统计库81上创建只读用户snap_query,用于查询 conn /as sysdba create user snap_query identified by snap_query default tablespace users temporary tablespace temp; grant connect to snap_q

oracle 11g-基于rowid的物化视图没有数据?????

问题描述 基于rowid的物化视图没有数据????? 本人刚刚接触物化视图,有些地方不太清楚,刚创建好的物化视图没有数据是几个意思啊? select 后面是多个表左连接,用的是(+)而不是left join ,哪位大神搭救一下??谢谢 create materialized view V_SHIPOWNER_ALL_TEST refresh complete on demand start with to_date('07-09-2015 12:00:00', 'dd-mm-yyyy hh24:

[20150629]物化视图刷新atomic_refresh.txt

[20150629]物化视图刷新atomic_refresh.txt --11G物化视图刷新有1个参数atomic_refresh. --如果为false,采用的方式是truncate,再使用/*+ append */ 提示insert.这样redo最少,但是刷新期间无法访问. --如果为true,采用的方式是delete,再insert.这样产生许多redo与undo.这样在刷新期间访问没问题,最多有点慢. --自己做一个测试: 1.建立测试环境: SCOTT@test> @ver1 PORT

初试物化视图

     通常我们使用EXP/IMP,EXPDP/IMPDP 进行数据库的迁移,但是若对数据的一致性要求比较严格,要求生产库的停机时间最短,尽量的减少对应用业务的影响,因为使用逻辑迁移过程中应用会对数据库持续写入,在导出,再导入过程中源数据库和目标数据库会出现数据不一致的现象,可以通过物化视图也可以实现这一功能.环境:windows 11g + linux 5  11g oracl 为windows 环境的实例,rac1 为linux 的实例! 建立测试表.yang@oracl>create t

postgres中的视图和物化视图

视图和物化视图区别 postgres中的视图和mysql中的视图是一样的,在查询的时候进行扫描子表的操作,而物化视图则是实实在在地将数据存成一张表.说说版本,物化视图是在9.3 之后才有的逻辑. 比较下视图和物化视图的性能 创建两个表 CREATE TABLE teacher ( id int NOT NULL, sname varchar(100) ); CREATE TABLE student ( sid int NOT NULL, teacher_id int NOT NULL DEFAU

mysql触发器实现oracle物化视图示例代码_Mysql

oracle数据库支持物化视图--不是基于基表的虚表,而是根据表实际存在的实表,即物化视图的数据存储在非易失的存储设备上. 下面实验创建ON COMMIT 的FAST刷新模式,在mysql中用触发器实现insert , update , delete 刷新操作 1.基础表创建,Orders 表为基表,Order_mv为物化视图表 复制代码 代码如下: mysql> create table Orders( -> order_id int not null auto_increment, -&g

物化视图全量刷新的简单测试

关于物化视图的刷新,如果数据的变化比较大采用了全量刷新的时候,会将现有表里的数据都清空然后放入新的数据,整个过程有点类似delete,insert的感觉,但是刷新后表的高水位线还是会保持不变,效果类似于truncate,insert. 对于堆表来说,在重要的一些表上做truncate简直就是灾难,如果一个表访问频繁,做了truncate之后,在插入数据的过程中,如果访问该表,数据都是0条,这就会带来一些高可用性的问题来,如果采用一个事务,使用delete,insert的方式,那高水位线的问题还是

创建增量同步Oracle物化视图问题

我们采用Oracle的物化视图增量刷新机制定时将数据库A上的某个表的数据同步到另一个数据库B上. 我们常用的最简单的实现步骤是这样.首先在数据库A上确认该表有主键,然后建立在这个表上建立 物化视图日志如"CREATE MATERIALIZED VIEW LOG ON T_tablename;",再到数据库B上创建 数据库链接和快速刷新的物化视图如"create materialized view mv_tablename refresh fast on demand star

[20120809]学习物化视图(补充).txt

[20120809]学习物化视图(补充).txt 1.测试环境: SQL> select * from v$version ; BANNER -------------------------------------------------------------------------------- Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production PL/SQL Release 11.2.0