【ORACLE 高可用】 高级复制的两个配置实例 - 使用高级复制和物化视图
2.演示针对某个表使用高级复制进行数据同步。
3.演示使用物化视图的方式进行数据同步。
2.演示针对某个表使用高级复制进行数据同步。
2.1 配置GLOBAL_NAME
2.1.1 源库
SQL> alter database rename global_name to db1.com;
Database altered.
SQL> show parameter global_names;
NAME TYPE VALUE
-----------------------------------------
global_names boolean FALSE
SQL> alter system set global_names=true scope=both;
System altered.
2.1.2 目标库:
SQL> alter system set global_names=true scope=both;
System altered.
SQL> alter database rename global_name to db2.com;
Database altered.
SQL> show parameter global_name;
NAME TYPE VALUE
-----------------------------------------------------
global_names boolean TRUE
SQL> select * from global_name;
GLOBAL_NAME
---------------------
DB2.COM
2.2 两个库中创建应用用户,
这里我还是使用HR 用户及用户下的po 来做实验
SQL> create table po(id integer);
Table created.
SQL> alter table po add constraint pk_po_id primary key (ID);
Table altered.
2.3 两个库中创建复制管理用户repadmin
CREATE USER repadmin IDENTIFIED BY oracle DEFAULT TABLESPACE users;
GRANT connect,resource,DBA TO repadmin;
--授予repadmin用户权限可以管理当前站点中任何主体组
EXECUTE dbms_repcat_admin.grant_admin_any_schema('REPADMIN');
--授予repadmin用户权限可以为任何表创建snapshot logs
GRANT comment any table TO REPADMIN;
GRANT lock any table TO REPADMIN;
--指定repadmin用户为propagator,并授予执行任何procedure的权限
execute dbms_defer_sys.register_propagator('REPADMIN');
GRANT execute any procedure TO REPADMIN;
2.4在两个数据库上建立数据库链接
create public database link db2.com connect to repadmin identified by oracle using 'DB2';
create public database link db1.com connect to repadmin identified by oracle using 'DB1';
2.5 创建复制组:
execute dbms_repcat.create_master_repgroup('repg');
--删除复制组
--execute dbms_repcat.drop_master_repgroup('repg');
SQL>
SQL> SELECT GNAME,MASTER,STATUS FROM DBA_REPGROUP;
GNAME MASTER STATUS
--------------------------------
REPG Y QUIESCED
2.6 在复制组里加入复制对象:
execute dbms_repcat.create_master_repobject(sname=>'hr',oname=>'po',type=>'table',use_existing_object=>true,gname=>'repg',copy_rows=>false);
--删除对象
--execute dbms_repcat.drop_master_repobject(sname=>'hr',oname=>'po',type=>'table',DROP_OBJECTS=>true);
select sname,oname,status,gname from dba_repobject where gname='REPG';
SNAME ONAME STATUS GNAME
----------------------------------------------------------------------------------------
HR PO VALID REPG
SQL>
2.7对复制对象产生复制支持:
execute dbms_repcat.generate_replication_support('hr','po','table');
execute dbms_repcat.drop_master_repobject('hr','po','table'); [取消同步]
SQL> select sname,oname,status,gname from dba_repobject where gname='REPG';
SNAME ONAME STATUS GNAME
----------------------------------------------------------------------------------------
HR PO VALID REPG
HR PO$RP VALID REPG
HR PO$RP VALID REPG
2.8添加主体复制节点:
begin
dbms_repcat.add_master_database(gname=>'repg',
master=>'db2.com',
use_existing_objects=>true,
copy_rows=>false,
propagation_mode=>'synchronous');
end;
/
第一次执行上面代码出错:
ERROR at line 1:
ORA-23358: invalid remote user
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 79
ORA-06512: at "SYS.DBMS_REPCAT_RPC", line 12
ORA-06512: at "SYS.DBMS_REPCAT_RPC", line 1768
ORA-06512: at "SYS.DBMS_REPCAT_UTL", line 4280
ORA-06512: at "SYS.DBMS_REPCAT_MAS", line 2158
ORA-06512: at "SYS.DBMS_REPCAT", line 146
ORA-06512: at line 2
重做后又没问题,不知什么原因。
select gname,dblink,masterdef ,master FROM SYS.DBA_REPSITES WHERE GNAME='REPG';
SQL> select gname,dblink,masterdef ,master FROM SYS.DBA_REPSITES WHERE GNAME='REPG';
GNAME DBLINK MASTERDEF MASTER
--------------- ------------------------- ---------- ----------
REPG DB1.COM Y Y
测试数据同步,通过
**********************************************
参数说明:
gname 主复制组名
master 加入主复制节点的另一个数据库
use_existing_object true 表示用主复制节点已经存在的数据库对象
copy_rows false表示第一次开始复制时不用和主复制节点保持一致
propagation_mode 同步地执行
synchronous(上边配置异步复制)
***********************************************
在主体定义站点启动复制:
execute dbms_repcat.resume_master_activity('repg',true);
execute dbms_repcat.resume_master_activity('repg',false);
execute dbms_repcat.suspend_master_activity('repg')[停止复制]
--------------------------------------------------------------------
3.演示使用物化视图的方式进行数据同步。
1.在DB1.COM建立一个新表,用于测试物化视图
create table hr.emp(id int primary key);
insert into hr.emp
select rownum from dual connect by rownum<=1000;
2.在DB1.COM 创建物化视图日志
CREATE MATERIALIZED VIEW LOG ON hr.emp WITH PRIMARY KEY INCLUDING NEW VALUES
3.在DB2.COM 创建物化视同步数据。
create materialized view hr.mv_emp build immediate refresh fast
enable query rewrite as select * from hr.emp@db1.com;
DB2.COM查询数据:
SQL> select count(0) from hr.mv_emp;
COUNT(0)
----------
1000
DB1.COM 插入新数据
SQL> insert into hr.emp values(1001);
1 row created.
SQL> commit;
Commit complete.
SQL>
DB2.COM 刷新特化视图并查询数据。
SQL> execute dbms_mview.refresh('hr.mv_emp','f');
PL/SQL procedure successfully completed.
SQL> select count(0) from hr.mv_emp;
COUNT(0)
----------
1001
SQL>
看到数据已同步过来了。
【ORACLE 高可用】 高级复制的两个配置实例 - 使用高级复制和物化视图相关推荐
- 构建Oracle高可用环境HA rac:企业级高可用数据库架构、实战与经验总结
1.1 理解Oracle数据库 1.2 Oracle高可用特性(High Availability) 1.3 搭建高可用的周边辅助环境 1.4 高可用应用设计 1.5 高可用数据库设计 1. ...
- Oracle高可用概述(HA与RAC的关系解惑)
1.你如何理解高可用的概念? 所谓的高可用HA就是当你的系统中的某个节点异常损坏了,系统还是可用状态,还可以对外提供服务,不会因为你的节点丢失而整体瘫痪. 2.列出你知道的Oracle高可用产品,并作 ...
- 重读 构建Oracle高可用环境(一)
两年前, 看了陈吉平的<构建Oracle高可用环境>,用现在的话说,完全没有sense. 准备重读,照例找点文章先开开胃: RAID,即廉价磁盘冗余阵列,是一种将相同的数据放在多个硬盘上不 ...
- 中国第一个Oracle高可用认证大师?
作者:姚远Oracle 姚远是2019年7月取得的Oracle 12c OCM认证,和10年以前取得10g OCM认证一样,没有参加学习班,在不知道题目的情况下硬考的.当时我就想考12c 的高可用认证 ...
- 【陈吉平】《构建oracle高可用环境》前言
这里,首先要感谢广大读者的支持与认可,该书第一次印刷到现在,2个多月的时间,就要准备第二次印刷了.在此期间,我也看到了很多读者反馈(包括读者书评与读者来信),他们对本书的肯定,让我深表感动.本书在写作 ...
- oracle数据库的高可用r,Oracle高可用之dataguard
Oracle高可用之dataguard DataGuard是一种数据库级别的HA方案,最主要功能是冗灾.数据保护.故障恢复等. 在生产数据库的"事务一致性"时,使用生产库的物理全备 ...
- 【ORACLE 高可用】使用GOLDENGATE 配置Oracle-MySQL的异构复制
使用GOLDENGATE 配置Oracle-MySQL的异构复制 1. 下载 mysql and goldengate for mysql: https://edelivery.oracle.com ...
- 小机、数据库、存储选型应该注意的几个事项(摘自ORACLE高可用环境-陈吉平)
存储: 存储的几个主要指标是IOPS.带宽与响应时间. IOPS: 指的是系统在单位时间内能处理的最大IO频度,一般是指单位时间内能完成的随机小IO个数. 带宽(throuput): 有的时候也较吞吐 ...
- 【ORACLE 高可用】作业 :配置ORACLE GoldenGate 2
OGG作业: 输出完整的操作过程: 1.不使用数据泵完成Oracle-Oracle的双向复制. 2.使用数据泵进行Oracle-Oracle的单向复制. 3.完成Oracle-MySQL的单向复制. ...
最新文章
- 图神经网络新课上架:​宾大2020秋季在线课程开课,视频上线B站
- 报名 | Sven Travis教授设计与人工智能思享会
- python pandas for循环_python – 将一个for循环应用于Pandas中的多个DataFrame
- 细思恐极,插上U盘就开始执行Python代码的程序
- java image 设置大小_如何在Java中调整BufferedImage的大小
- 拳王公社:缺流量难变现?文库引流让你0成本可获5000精准粉!
- tigerVNC的简单使用教程(CentOS 自带VNC包的远程桌面连接)
- 密文恢复出明文的过程称为_整流二极管的反向恢复过程图解
- Day0205____数据库
- 用 Wolfram 语言绘制电子轨道
- 电子通信类顶级会议及期刊2(自用更新版)
- Word文件批量查找替换字符串
- 重要的xcel文件e报表丢了如何恢复呢
- 一、Vulkan开发理论基础知识
- 【Pytorch】量化
- Vue下使用docxtemplater-POI模式导出word
- Mac端Python+Appium环境搭建
- heidisql修改mysql密码_读取HeidiSQL 配置文件中的密码
- 2022-2028年中国汽车设计行业发展现状调查及市场分析预测报告
- python 中的 __repr__() 方法