近日公司有一个9i 的Oracle数据库,运行效率低下。想要将其升级到11G. 但是升级之前 要将数据进行同步,好在表不是很多。只有三张表。业务压力也不大,就想到了使用物 化视图的方式将数据同步过来。

1.1 环境

数据库主机 IP地址 TNS DB_LINK ORACLE 版本
db2 10.100.99.114   to_118 11G
db1 10.100.99.118     9iG

上面是本次操作测试的环境。说明: 将9i 数据库中的表实时同步到11G.

1.2 在db2配置指向db1的tns

配置tns 方便创建dblink。当然不配置也可以创建。此步完全依赖于个人爱好。 我习惯配置,在创建dblink时,会更简洁一些。TNS如下:

t118 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.100.99.114)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ktdb)
)
)

1.3 在db2的数据库中创建dblink

create public database link to_118 connect to test identified by test123 using 't118';

1.4 给db1中相应的表上添加物化视图日志

1.4.1 有主键表

create table test(id number,name varchar2(20));
alter table test add constraint pk_testid primary key(id);
create materialized view log on test with primary key;

对于有主键的表,日志依赖于主键。

create materialized view log on test  with primary key;

1.4.2 无主键表

对于无主键的表,依赖于rowid

create table test_noprimarykey(id number,name varchar2(20));
create materialized view log on test_noprimarykey with rowid;

1.5 在db2上创建物化视图

分布式查询中(也就是使用db_link), 不能以on commit 方式指定刷新方式,创建时会遇到ORA-12054.

1.5.1 有主键表的物化视图

CREATE MATERIALIZED VIEW dbmon.test
(id,name)
REFRESH force
start with sysdate next sysdate+1/1440 # 指定刷新频率为1分钟
AS
SELECT id,name FROM dbmon.test@to_118;

1.5.2 无主键表的物化视图

CREATE MATERIALIZED VIEW test_noprimarykey
(id,name)
REFRESH force
start with sysdate next sysdate+1/1440 # 指定刷新频率为1分钟
WITH rowid
AS
SELECT id,name FROM dbmon.test_noprimarykey@to_118;

1.6 测试数据同步

在db1数据库插入数据后,稍等 1分钟,然后连到db2数据库查看结果。

1.6.1 有主键表

在db1 上向表中插入一行数据:

insert into test values(1,'aaa');
commit;

1.6.2 无主键表

insert into test values(1,'bbb');
commit;

物化视图(materialized view) 实现数据迁移、数据定时同步的更多相关文章

  1. [terry笔记]物化视图 materialized view基础学习

    一.物化视图定义摘录:     物化视图是包括一个查询结果的数据库对像(由系统实现定期刷新数据),物化视图不是在使用时才读取,而是预先计算并保存表连接或聚集等耗时较多的操作结果,这样在查询时大大提高了 ...

  2. PLSQL_Oracle物化视图Material View的基本概念和用法 (概念)

    2014-06-08 Created By BaoXinjian

  3. DB2物化视图(Materialized Query Tables, MQT)

    DB2的物化视图MQT是基于查询结果定义的一个表,MQT中包括的数据来自MQT定义所基于的一个或多个表, 使用MQT能够显著提高查询的操作性能. 数据库的视图和MQT都是基于一个查询来定义的.每当视图 ...

  4. Redis 数据迁移 & 数据审计

    Redis 数据迁移 安装迁移工具 # 安装依赖 [root@dbtest03 ~]# yum install -y automake libtool autoconf bzip2 git # 拉取工 ...

  5. 详解Oracle数据货场中三种优化:分区、维度和物化视图

    转 xiewmang 新浪博客 本文主要介绍了Oracle数据货场中的三种优化:对分区的优化.维度优化和物化视图的优化,并给出了详细的优化代码,希望对您有所帮助. 我们在做数据库的项目时,对数据货场的 ...

  6. Oracle性能调优之物化视图用法简介

    目录 一.物化视图简介 二.实践:创建物化视图 一.物化视图简介 物化视图分类 物化视图分类,物化视图语法和as后面的sql分为: (1) 基于主键的物化视图(主键物化视图) (2)基于Rowid的物 ...

  7. ClickHouse性能优化?试试物化视图

    一.前言 ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS):目前我们使用CH作为实时数仓用于统计分析,在做性能优化的时候使用了 物化视图 这一特性作为优化手段,本文主 ...

  8. Oracle远程数据建物化视图(materialized)创建简单记录,以及DBLINK的创建

    目的:实现远程数据库访问及其相应表的定时同步 一.远程数据库dblink的创建 select * from dba_db_links; select * from user_sys_privs;--查 ...

  9. Oracle 10g通过创建物化视图实现不同数据库间表级别的数据同步

    摘自:http://blog.csdn.net/javaee_sunny/article/details/53439980 目录(?)[-] Oracle 10g 物化视图语法如下 实例演示 主要步骤 ...

随机推荐

  1. MDK 编译错误和警告 使用时遇到的小问题

    main.c(32): warning:  #1-D: last line of file ends without a newline 这个是由于在main函数的“}”后,没有加回车. 只要在mai ...

  2. Git 操作命令

    一.Git 基本配置 1.配置 命令:git config --global  prop_name prop_value 如配置git用户名与邮箱: git config --global user. ...

  3. wx.request 使用数据

    小程序中,怎么使用wx.request返回的数据??? 在你的js页面中 主要是这句话 var that=this; 为什么呢?因为使用过jquery的ajax的朋友都知道.在ajax函数中的this ...

  4. Mac 使用 OpenMP/Clang

    新建 hello.cpp 文件: #include <omp.h> #include <stdio.h> int main() { #pragma omp parallel p ...

  5. mobilebone与weiui_example.css 使用问题

    weiui_example.css 原page样式属性opacity设置为0 ... 由于我采取的是使用mobilebone,没按照weui官网的来搞这种效果,所以这里会有冲突,设置为默认即可,即op ...

  6. [SDOI2017]苹果树

    题目描述 https://www.luogu.org/problemnew/show/P3780 题解 一道思路巧妙的背包题. 对于那个奇怪的限制,我们对此稍加分析就可以发现它最后选择的区域是一个包含 ...

  7. django csrftoken

    CSRF(跨站请求伪造) 背景知识:浏览器在发送请求的时候,会自动带上当前域名对应的cookie内容,发送给服务端,不管这个请求是来源A网站还是其它网站,只要请求的是A网站的链接,就会带上A网站的co ...

  8. JDK源码分析(8) StringBuffer & StringBuilder

    简介 StringBuffer与StringBuilder是两个常用的操作字符串的类.大家都知道,StringBuilder是线程不安全的,而StringBuffer是线程安全的.前者是JDK1.5加 ...

  9. Python3开发过程常见的异常(最近更新:2019-04-26)

    持续更新中... 常见异常解决方案 1.Base Python3.7环境相关:https://www.cnblogs.com/dotnetcrazy/p/9095793.html 1.1.Indent ...

  10. 浅谈JS中逗号运算符的用法

    阅读本文的前提是,你能区分什么是表达式,什么是语句.还有明确运算符和运算数都是些啥东西.所谓的表达式就是一个JavaScript的"短语",JavaScript的解释器可以计算它, ...