阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Oracle基于物化视图的远程数据复制

153次阅读
没有评论

共计 2954 个字符,预计需要花费 8 分钟才能阅读完成。

物化视图简介:

远程表复制功能:可以借助数据库链接(dblink),在远程数据库中建立一个本地表的副本, 用该方式实现表的定时同步。物化视图存储基于远程表的数据,也可以称为快照。

加速查询功能:物化视图可以用于预先计算并保存表连接或聚集等耗时较多的操作的结果,在执行查询时,可以直接查询物化视图,或者通过查询重写定位到物化视图,来加快速度。

本文使用物化视图的远程表复制功能。

源端配置:

ip172.27.9.55
Oracle version11.2.0.4
sidwhbkdb
useruser_mv
tablespaceTS_MV_TEST
tablett
MATERIALIZED VIEW LOGMLOG$_T1

目标端配置:

ip172.27.9.56
Oracle version11.2.0.4
sidwhbkdb
useruser_mbk
tablespaceTS_BK
dblinkmv
MATERIALIZED VIEWmv_bk

源端搭建

1. 创建表空间

SQL> conn / as sysdba
Connected.
SQL> CREATE TABLESPACE “TS_MV_TEST” LOGGING DATAFILE ‘/orasvr/whbkdb/ts_mv_test/TS_MV_TEST01.dbf ‘ SIZE 512M AUTOEXTEND ON NEXT  128M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT  AUTO;
Tablespace created.

表空间名为 TS_MV_TEST

2. 创建用户

CREATE USER USER_MV
IDENTIFIED BY USER_MV
DEFAULT TABLESPACE TS_MV_TEST
PROFILE DEFAULT
ACCOUNT UNLOCK;
GRANT CONNECT TO USER_MV;
GRANT RESOURCE TO USER_MV;
GRANT CREATE DATABASE LINK TO USER_MV;
GRANT CREATE MATERIALIZED VIEW TO USER_MV;
ALTER USER USER_MV QUOTA UNLIMITED ON TS_MV_TEST;

创建用户 USER_MV

3. 创建表

SQL> conn user_mv/user_mv;
Connected.
SQL> create table tt(id int,name varchar2(30));
Table created.

使用 user_mv 用户登陆,创建表 tt

4. 新建索引和约束

create unique index PK_tt on tt (id) tablespace TS_MV_TEST;
ALTER TABLE tt ADD (CONSTRAINT PK_tt  PRIMARY KEY  (ID)  USING INDEX PK_tt  ENABLE VALIDATE);

新建唯一索引 pk_tt 和约束 pk_tt

5. 创建物化视图日志

SQL> CREATE MATERIALIZED VIEW LOG ON tt with primary key;
Materialized view log created.

创建物化视图日志

图片.png

创建物化视图日志的同时会生成表 MLOG$_TT,当使用 primary key 时,oracle 创建临时表 RUPD$_基础表。

目标端搭建

1. 创建表空间

SQL> CREATE TABLESPACE “TS_BK” LOGGING DATAFILE ‘/orasvr/whbkdb/ts_bk/TS_BK01.dbf ‘ SIZE 512M AUTOEXTEND ON NEXT  128M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT  AUTO;
Tablespace created.

创建表空间 TS_BK

2. 创建用户

CREATE USER USER_BK
IDENTIFIED BY USER_BK
DEFAULT TABLESPACE TS_BK
PROFILE DEFAULT
ACCOUNT UNLOCK;
GRANT CONNECT TO USER_BK;
GRANT RESOURCE TO USER_BK;
GRANT CREATE DATABASE LINK TO USER_BK;
GRANT CREATE MATERIALIZED VIEW TO USER_BK;
ALTER USER USER_BK QUOTA UNLIMITED ON TS_BK;

创建用户 user_bk

3. 创建 dblink

SQL> conn  user_bk/user_bk;
Connected.
SQL> create database link mv connect to user_mv identified by user_mv using ‘(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.27.9.55)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = whbkdb) ) )’;
Database link created.

使用 user_bk 登陆,创建 dblink mv

4. 创建物化视图

CREATE MATERIALIZED VIEW mv_bk
BUILD IMMEDIATE
REFRESH FORCE
ON DEMAND
next sysdate+1/2880
with primary key
AS
SELECT * from user_mv.tt@mv;

创建物化视图 mv_bk,手工方式刷新,sysdate+1/2880 表示每半分钟刷新一次

图片.png

可以看到在创建物化视图的同时会新建同名表 mv_bk

测试

源端插入测试数据

SQL> insert into tt values(1,’A’);
1 row created.

查看目标端物化视图 mv_bk

SQL> select * from mv_bk;       
ID NAME
———- ——————————       
1 A

源端清空表数据

SQL> delete from tt;

查看目标端物化视图

SQL> select * from mv_bk;
no rows selected

至此 Oracle 基于物化视图的远程数据复制搭建测试完成,本文搭建脚本下载

可以到 Linux 公社资源站下载:

—————————————— 分割线 ——————————————

免费下载地址在 http://linux.linuxidc.com/

用户名与密码都是 www.linuxidc.com

具体下载目录在 /2018 年资料 / 9 月 / 9 日 /Oracle 基于物化视图的远程数据复制 /

下载方法见 http://www.linuxidc.com/Linux/2013-07/87684.htm

—————————————— 分割线 ——————————————

更多 Oracle 相关信息见 Oracle 专题页面 https://www.linuxidc.com/topicnews.aspx?tid=12

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计2954字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中