最近因为业务需求,需要在两个数据库之间做双向实时同步,遂实践了一把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. Linux下安装配置Apache+PHP+MariaDB

    一.安装apache 1.下载并安装apache yum install httpd 2.启动apache systemctl start httpd.service 3.停止apache syste ...

  2. get_magic_quotes_gpc()

    php get_magic_quotes_gpc()函数:http://www.cnblogs.com/lsk/archive/2008/05/05/1184117.html 以及addslashes ...

  3. 数据结构 C++ 单链表 一元多项式的相加

    #include <iostream> using namespace std; struct Node { double coe; //系数 int exp; //指数 Node *ne ...

  4. C++ STL

    1.stackstack 模板类的定义在<stack>头文件中.stack 模板类需要两个模板参数,一个是元素类型,一个容器类型,但只有元素类型是必要的,在不指定容器类型时,默认的容器类型 ...

  5. 使用engine关键字指定该表使用哪个engine

    建表及插入数据语句:mysql> create table salary(userid int,salary decimal(9,2));Query OK, 0 rows affected (0 ...

  6. pch头文件

    1.command+N ---> Other ---> PCH File 2.点击工程 ---> Build Settings ---> 搜索框中输入pref ---> ...

  7. prim算法

    最小生成树 一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边.最小生成树可以用kruskal(克鲁斯卡尔)算法或prim(普里姆)算法 ...

  8. 设置sublime text2/3中默认预览浏览器快捷键的方法

    各位前端大神们,大家在用IDE编辑器的时候喜欢用哪些呢?是Dreamweaver.Zend Studio.editplus又或者是sublime text?今天马浩周给大家就要说说设置sublime ...

  9. centos安装后iptables基本设置

    一.首先关闭防火墙#service iptables stop 二.查看状态,确认关闭#service iptables status 三.清除掉防火墙规则#iptables -F#iptables ...

  10. 获取外部配置JDBC文件 写给自己

    web项目要把配置放在WEB下 内容 Driver=com.microsoft.sqlserver.jdbc.SQLServerDriverurl=jdbc:sqlserver://192.168.3 ...