最近因为业务需求,需要在两个数据库之间做双向实时同步,遂实践了一把Oracle的流复制,遇到了很多疑难问题,最终也貌似成功,现记录如下。

我是使用OEM来实现流复制的。

10.进行流复制的两个数据库的实例名不一样,于是我把其中一个数据库实例重装了,哭~~~

20.两个数据库都需要打开归档模式。

30.进行流复制配置前两台数据库需要同步的数据最好一模一样。否则在同步过程中可能会操作一些本库中不存在的数据从而导致同步错误。

40.使用sys用户登录,在数据移动->设置中创建流管理员用户,两个库都要创建。

50.使用流管理员用户登录,进入数据移动->设置。选择同步的方式。我这里选的是按方案同步。选择特定方案后,需填写目标服务器相关参数。然后在下一步中点开高级选项,勾选双向复制,然后下一步,再下一步即可。

55.当提交后,OEM生成了一个调度去做同步的准备工作。在我的电脑上运行了将近五分钟。在运行过程中可能会报错,这时正确的做法是回到数据移动->设置,按照上面的提示进行回滚或继续操作。如果直接删除相关调度或别的资源,可能会导致无法再次配置流复制。我后来只好通过闪回数据库的方式才实现操作回滚。

60.创建成功后,进入数据移动->管理复制中,可看观察捕获,传播,应用三个图表来获取当前同步信息。其中捕获是通过分析当前日志来获取数据结构与数据内容的变化。传播是将变化同步到目标机器上。应用是将获取的变化应用到本库中。

我在配置流复制时遇到了好几个错误,其中大部分是提示找不到目标服务器或对象。后来我通过在/etc/host里直接指定ip与机器名的对应关系,又试了几次后,居然成功了。其次,在OEM提示配置成功的同时,仍然报了好几个别的错,后来我试了试在两边分别操作数据,发现都能同步成功,索性就不管了。

在实际使用中,还发现了以下问题

10.在实际使用中发现流复制无法同步序列值的变化,后来采取了间隔步长来规避这个问题。

Stream为什么不同步sequence的取值

oracle stream不会同步sequence值的变化如何解决

Oracle Streams Conflict Resolution

20. ORA-26786错误。在报错的服务器上执行下面的脚本来覆盖冲突。例如

DECLARE
cols DBMS_UTILITY.NAME_ARRAY;
BEGIN
cols(1) := 'DQHJMC';
DBMS_APPLY_ADM.SET_UPDATE_CONFLICT_HANDLER(
object_name => 'LandSystem.LS_CASE_BWA',
method_name => 'OVERWRITE',
resolution_column => 'DQHJMC',
column_list => cols);
END;

其中cols表示需要执行的列,object_name表示表名,method_name表示解决策略,resolution_column表示判断依据列。

解决冲突后,把method_name设为null再执行一次删除这个策略。

Managing Oracle Streams Conflict Detection and Resolution

DBMS_APPLY_ADM.SET_UPDATE_CONFLICT_HANDLER (P)

streams双向复制冲突规则(SET_UPDATE_CONFLICT_HANDLER)

参考

ORA-23616: 执行块 11 时失败 (相对于脚本)

有用Oracle 11gR2(11.2.0.2.0)作Stream兄弟吗?看看我这个错误,能提供点文章参考吗?

Oracle 流复制实践笔记的更多相关文章

  1. oracle数据库基于(streams流复制)的双机热备配置手册

    ------------------------------------------------------------------------------- 主数据库: 操作系统:windows 2 ...

  2. 数据库周刊28│开发者最喜爱的数据库是什么?阿里云脱口秀聊程序员转型;MySQL update误操作;PG流复制踩坑;PG异机归档;MySQL架构选型;Oracle技能表;Oracle文件损坏处理……

    热门资讯 1.Stackoverflow 2020年度报告出炉!开发者最喜爱的数据库是什么?[摘要]2020年2月,近6.5万名开发者参与了 Stackoverflow 的 2020 年度调查,这份报 ...

  3. Java分享笔记:使用缓冲流复制文件

    [1] 程序设计 /*------------------------------- 1.缓冲流是一种处理流,用来加快节点流对文件操作的速度 2.BufferedInputStream:输入缓冲流 3 ...

  4. MS SQL到Oracle的数据迁移笔记

    MS SQL到Oracle的数据迁移笔记 一.任务背景 旧系统使用MS SQL Server数据库,新系统使用Oracle数据库,现在需要将旧系统中的数据迁移到新系统中,旧数据按照约定的规则转换后,能 ...

  5. Python编程从入门到实践笔记——操作列表

    Python编程从入门到实践笔记——操作列表 #coding=utf-8 magicians = ['alice','david','carolina'] #遍历整个列表 for magician i ...

  6. PostgreSQL流复制记录

    参考了别人的部分,添加了自己在实践中的内容,仅做记录. 1.同步流复制中 主机操作 1.1postgresql.conf wal_level = hot_standby # 这个是设置主为wal的主机 ...

  7. java IO流 复制图片

    (一)使用字节流复制图片 //字节流方法 public static void copyFile()throws IOException { //1.获取目标路径 //(1)可以通过字符串 // St ...

  8. Postgressql高可用(pgpool+异步流复制)

    文档结构: 由于博主之前是Oracle dba,oracle 高可用一般是rac,以及搭建ADG,一个是基于实例的高可用,一个是基于数据的容灾,甚至也有rac+adg的方式.Postgres有同步和异 ...

  9. 基于 Docker 和 GitLab 的前端自动化部署实践笔记

    基于 Docker 和 GitLab 的前端自动化部署 实践笔记 随着接触的项目越来越多,在部署测试流程上重复耗时工作也越来越多,所以对前端工作的CI/CD实现愈发迫在眉睫. 前端开发由于三大框架的崛 ...

随机推荐

  1. C#面向对象整理

    一.里氏转换 (1)子类可以赋值给父类:如果有一个地方需要一个父类作为参数,我们可以给一个子类代替. (2)如果父类装的是子类对象,那么这个父类可以强转为子类对象. 二.值类型跟引用类型区别 1.在内 ...

  2. 西部数据出现“WD SES Device USB Device”怎么办,而且说明书全是英文。

    您好.wd ses device driver这个驱动程序可以在baidu中输入关键词找到,什么驱动之家.驱动人生之类的专业驱动网站也都是有的. western digital的移动硬盘驱动程序安装步 ...

  3. MATLAB中提供的线型属性

    MATLAB中提供的线型属性有: 线型 说明 标记符 说明 颜色 说明 - 实线(默认) + 加号符 r 红色 -- 双划线 o 空心圆 g 绿色 : 虚线 * 星号 b 蓝色 :. 点划线 . 实心 ...

  4. 杭电ACM 1178

    #include<stdio.h>#include<string.h>#include<math.h>#include<ctype.h>#include ...

  5. Java的析构函数System的finalize()

    一个对象是由产生 到使用 到销毁的过程 即C++中 构造函数-> body->析构函数 在Java之中为了回收不需要的空间可以使用System类的finalize() class A{ p ...

  6. 滚动固定TAB在顶部显示

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...

  7. most queries (more than 90 percent) never hit the database at all but only touch the cache layer

    https://gigaom.com/2011/12/06/facebook-shares-some-secrets-on-making-mysql-scale/ Facebook shares so ...

  8. SharedPreferences第一次使用后HashMap将常驻内存

    今天使用SharedPreferences的时候突然想到了这个问题,因为我们要存储应用级别的上下文信息,包括用户信息等一系列信息:这个时候使用getSharedPreferences是否合适呢! 其实 ...

  9. 关于echarts的疑问

    echarts-例子--待解决:模拟迁徙里面的 var planePath = 'path://M1705.06,1318.313v-89.254l-319.9-221.799l0.073-208.0 ...

  10. Fiddler-010-网络延时应用小技巧-模拟低网速环境

    在日常的网络测试中,经常需要测试网络超时或在网络传输速率不佳的情况的应用场景,而与此同时我们有时手边资源有限,实现在各种真实网络(2G\3G)环境下测试有些局限性.其实 fiddler 已经提供了类似 ...