了解如何为Oracle GoldenGate准备数据库,包括如何配置连接和日志记录,如何在数据库中启用Oracle GoldenGate,如何设置闪回查询以及如何管理服务器资源。

  • 为集成进程配置连接
  • 配置日志记录属性
  • 在数据库中启用Oracle GoldenGate
  • 设置闪回查询
  • 管理服务器资源

2.1 为集成进程配置连接


如果您将使用集成捕获和集成Replicat,则每个都需要tnsnames.ora文件中的专用服务器连接。当您配置这些进程时,您可以指示进程在Extract and Replicat参数文件中使用这些连接,并使用USERID或USERIDALIAS参数。

以下是集成捕获(Extract)和集成Replicat所需的专用连接示例。

TEST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = test2)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = test)
)
)

以下是在Extract或Replicat参数文件中指定连接字符串的安全选项。

密码加密方式:

USERID intext@test, PASSWORD mypassword

凭证存储方法:

USERIDALIAS ext

对于USERIDALIAS,别名ext将使用实际的连接字符串存储在Oracle GoldenGate凭证存储中,如下例所示:

GGSCI> INFO CREDENTIALSTORE DOMAIN support
Domain: Support
Alias: ext
Userid: intext@test

有关在参数文件中指定数据库连接信息的更多信息,参阅管理Oracle GoldenGate

2.2 配置日志记录属性


Oracle GoldenGate依靠重做日志来捕获复制源事务所需的数据。在启动Oracle GoldenGate处理之前,必须正确配置源系统上的Oracle重做日志。

由于此次需要的日志记录,重做量增加。您可以等到准备好启动Oracle GoldenGate处理以启用日志记录。

本节介绍适用于Oracle GoldenGate的以下日志记录级别。您使用的日志级别取决于您正在使用的Oracle GoldenGate功能。

  • 启用最小数据库级补充日志
  • 启用schema级补充日志
  • 启用table级补充日志

此表显示了不同日志记录属性的Oracle GoldenGate用例。

Logging option GGSCI command What it does Use case
Forced logging mode 无;通过数据库启用 强制记录所有事务和负载日志 强烈建议所有Oracle GoldenGate使用案例。
Minimum database-level supplemental logging 无;通过数据库启用 启用最少的补充日志记录以将行链信息添加到重做日志。 所有Oracle GoldenGate用例均需要
Schema-level supplemental logging, default setting
参阅启用schema级补充日志
ADD SCHEMATRANDATA

启用主键的无条件补充记录以及模式中所有表的唯一键和外键的有条件补充记录。

所有这些键一起被称为调度列。

启用schema中所有当前和将来表的日志记录。

如果源和目标的主键,唯一键和外键列不相同,请使用ALLCOLS。使用DDL支持时需要。

schema级补充日志记录对所有支持的列进行无条件日志记录。
(有关不支持的列类型,请参阅启用schema级别补充日志记录)
ADD SCHEMATRANDATA with ALLCOLS option 对模式中的所有表启用无条件补充日志记录表中的所有列。

用于在尝试执行更新或删除时检查所有列值的双向和主动 - 主动配置,而不仅仅是更改的列。

尽管允许实时数据验证的最高级别并因此检测冲突,但这需要更多的资源。

当源和目标的主键,唯一键和外键不相同或在源和目标之间不断变化时,也可以使用它。

schema级补充日志记录,最小设置 ADD SCHEMATRANDATA with NOSCHEDULINGCOLS option 启用schema中主键和所有表的所有有效唯一索引的无条件补充日志记录。 仅用于非集成Replicat。这是所需的最低schema级日志记录。
表级补充日志,内置了对集成Replicat的支持
(请参阅启用表级别补充日志)
ADD TRANDATA

启用对表的唯一键和外键的主键和条件辅助日志记录的无条件补充记录。

所有这些键一起被称为调度列。

除非使用模式级别的补充日志记录,否则所有Oracle GoldenGate用例都需要该用例。

如果源和目标的主键,唯一键和外键列不相同,请使用ALLCOLS。

对所有支持的列使用无条件日志记录的表级补充日志记录。

(请参阅启用表级别补充日志记录,查看不支持的列类型)

ADD TRANDATA with ALLCOLSoption 启用无条件补充日志记录表中的所有列

用于在尝试执行更新或删除时检查所有列值的双向和主动 - 主动配置,而不仅仅是更改的列。

尽管允许实时数据验证的最高级别并因此检测冲突,但这需要更多的资源。

当源和目标的主键,唯一键和外键不相同或在源和目标之间不断变化时,也可以使用它。

表级补充日志记录,最小设置 ADD TRANDATA with NOSCHEDULINGCOLS option 启用表的主键和所有有效唯一索引的无条件补充日志记录 仅用于非集成Replicat。这是所需的最低表级别日志记录。

2.2.1启用最小数据库级补充记录


Oracle强烈建议将Oracle源数据库置于强制日志记录模式。强制日志记录模式强制记录所有事务和负载,相反,覆盖任何用户或存储设置。这确保了Extract配置中的源数据不会被错过。

此外,使用Oracle GoldenGate时,Oracle源数据库还需要最少的补充日志记录(数据库级选项)。这会将行链信息(如果存在)添加到重做日志以进行更新操作。

强烈建议不要使用数据库级主键(PK)和唯一索引(UI)日志记录,因为它会在复制外的表上创建额外的额外开销。除非需要这些日志记录选项才能用于业务目的,否则只需在数据库级别启用最少的补充日志记录和Oracle GoldenGate强制日志记录。

执行以下步骤来验证和启用(如有必要)最小补充日志记录和强制日志记录。

  1. 以具有ALTER SYSTEM特权的用户身份登录到SQL * Plus。
  2. 发出以下命令以确定数据库是处于补充日志记录模式以及处于强制记录模式。如果两个查询的结果均为“是”,则数据库符合Oracle GoldenGate要求。
    SELECT supplemental_log_data_min, force_logging FROM v$database;
  3. 如果两个或两个属性的结果为NO,请继续执行以下步骤以根据需要启用它们:
    SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
    SQL> ALTER DATABASE FORCE LOGGING;
  4. 发出以下命令以验证现在是否启用了这些属性。
    ELECT supplemental_log_data_min, force_logging FROM v$database;
  5. 切换日志文件。
    SQL> ALTER SYSTEM SWITCH LOGFILE;

2.2.2 启用schema级补充记录


Oracle GoldenGate支持schema级补充日志记录。使用Oracle GoldenGate DDL复制功能时,Oracle源数据库需要schema级日志记录。In all other use cases, it is optional, but then you must use table-level logging instead(请参阅启用表级别补充日志记录)。

默认情况下,schema级别日志记录会自动启用主键的无条件补充日志记录以及模式中所有表的唯一键和外键的有条件补充日志记录。选项使您可以根据需要更改日志记录。

Oracle强烈建议使用模式级日志记录而不是表级日志记录,因为它确保添加到模式中的任何新表在满足通配符规范时都会被捕获。

在源系统上执行以下步骤以启用schema级补充日志记录。

  1. 如果版本早于11.2.0.2,则将Oracle Patch 13794550应用于源Oracle数据库。
  2. 在源系统上运行GGSCI。
  3. 使用有权启用schema级补充日志记录的凭证存储区中的用户别名发出DBLOGIN命令。
    DBLOGIN USERIDALIAS alias

    有关USERIDALIAS和其他选项的更多信息,请参阅Oracle GoldenGate参考中的USERIDALIAS

  4. 对每个想要使用Oracle GoldenGate捕获数据更改的模式发出ADD SCHEMATRANDATA命令。
    ADD SCHEMATRANDATA schema [ALLCOLS | NOSCHEDULINGCOLS]

    Where:
    1)如果没有选项,则ADD SCHEMATRANDATA模式允许在主键源系统上进行无条件补充日志记录,并有条件地补充给定模式中所有当前表和未来表的所有唯一键和外键。无条件日志记录强制将主键值写入日志,无论在当前操作中键是否已更改。条件日志记录会记录外键或唯一键的所有列值(如果其中至少有一个在当前操作中已更改)。对于支持非集成Replicat,默认设置是可选的,但是需要默认支持集成Replicat,因为主键,唯一键和外键都必须可用于入站服务器以计算依赖关系。有关集成Replicat的更多信息,请参阅决定使用哪种应用方法。
    2)ALLCOLS可用于启用表的所有列的无条件补充日志记录,并适用于给定模式中的所有当前和未来表。当源表和目标表具有不同的调度列时,用于支持集成的Replicat。 (调度列是主键,唯一键和外键。)
    3)NOSCHEDULINGCOLS仅记录schema中现有表的主键值和所有有效唯一索引值,以及稍后添加的新表。这是模式级别日志所需的最低级别,仅对非集成模式下的Replicat有效
    在以下示例中,该命令启用finance模式的默认补充日志记录

    ADD SCHEMATRANDATA finance

   在以下示例中,该命令仅对hr模式的主键和有效唯一索引启用补充日志记录。
   

ADD SCHEMATRANDATA hr NOSCHEDULINGCOLS

2.2.3 启用表级补充日志记录


在以下情况下启用源系统上的表级补充日志记录:

  • 在不使用模式级日志记录时启用所需级别的日志记录(请参阅启用模式级别补充日志记录)。无论是schema级还是表级日志都必须使用。默认情况下,表级日志记录自动启用主键的无条件补充日志记录以及表的唯一键和外键的条件补充日志记录。选项使您可以根据需要更改日志记录。
  • 防止任何给定表的主键记录。
  • 在表级别记录非键列值以支持特定的Oracle GoldenGate功能,例如筛选和冲突检测以及解析逻辑。
    在源系统上执行以下步骤以启用表级补充日志记录或使用该命令的可选功能。
    1)在源系统上运行GGSCI。
    2)使用有权启用表级补充日志记录的凭证存储区中的用户的别名发出DBLOGIN命令。
    DBLOGIN USERIDALIAS alias

    有关DBLOGIN和其他选项的更多信息,请参阅Oracle GoldenGate参考中的USERIDALIAS
    3)发出ADD TRANDATA命令。

    ADD TRANDATA [container.]schema.table [, COLS (columns)] [, NOKEY] [, ALLCOLS | NOSCHEDULINGCOLS]

    Where:

  • 如果表位于多租户容器数据库中,则container是根容器或可插拔数据库的名称。
  • schema是包含该表的源schema
  • table是表的名称。有关指定对象名称的说明,请参阅管理Oracle GoldenGate中的在Oracle GoldenGate输入中指定对象名称
  • 在没有其他选项的情况下添加TRANDATA将自动启用主键的无条件补充记录以及表格的唯一键和外键的条件补充记录。无条件日志记录强制将主键值写入日志,无论在当前操作中键是否已更改。条件日志记录会记录外键或唯一键的所有列值(如果其中至少有一个在当前操作中已更改)。对于支持非集成Replicat(请参阅NOSCHEDULINGCOLS),缺省值是可选的,但是由于主键,唯一键和外键必须都可用于入站服务器以计算依赖性,因此需要该缺省值来支持集成Replicat。有关集成Replicat的更多信息,请参阅决定使用哪种应用方法。
  • ALLCOLS支持无条件补充记录表中的所有列。当源表和目标表具有不同的调度列时,用于支持集成的Replicat。 (调度列是主键,唯一键和外键。)
  • NOSCHEDULINGCOLS仅适用于非集成模式下的Replicat。它使用ADD SUPPLEMENTAL LOG DATA ALWAYS子句发出一个ALTER TABLE命令,该子句适用于为该表定义的唯一约束类型,或者没有唯一约束的所有列。当不使用模式级别日志记录时,此命令满足Oracle GoldenGate的基本表级别日志记录要求。有关Oracle GoldenGate如何选择密钥或索引的信息,请参阅确保源表和目标表中的行唯一性。
  • COLS列记录KEYCOLS子句所需的非密钥列或过滤和操作。括号是必需的。除了主键之外,这些列将被记录,除非NOKEY选项也存在。
  • NOKEY防止主键或唯一键的记录。需要TABLE和MAP参数中的KEYCOLS子句和ADD TRANDATA命令中的COLS子句来记录替代KEYCOLS列。

  4)如果将ADD TRANDATA与COLS选项一起使用,请为目标上的这些列创建唯一索引以优化行检索。如果将这些列作为KEYCOLS子句的替代键记录下来,请记下在配置Oracle GoldenGate进程时将KEYCOLS子句添加到TABLE语句和MAP语句。

2.3 在数据库中启用Oracle GoldenGate


必须为Oracle 11.2.0.4或更高版本的数据库显式启用支持Oracle GoldenGate捕获和应用所需的数据库服务。这对Extract和Replicat的所有模式都是必需的。

要启用Oracle GoldenGate,请设置以下数据库初始化参数。 Oracle RAC中的所有实例必须具有相同的设置。

ENABLE_GOLDENGATE_REPLICATION=true

有关此参数的更多信息,请参阅初始化参数

2.4 设置闪回查询


为了处理某些更新记录,Extract从源数据库中提取额外的行数据。 Oracle GoldenGate获取以下数据:

  • 用户定义的类型
  • 嵌套表
  • XMLType对象

默认情况下,Oracle GoldenGate使用闪回查询从撤消(回滚)表空间中获取值。这样,Oracle GoldenGate可以在特定时间或SCN中重建读取一致的行映像以匹配重做记录。

为获得最佳提取结果,请按如下所示配置源数据库:

  1. 通过如下设置Oracle初始化参数UNDO_MANAGEMENT和UNDO_RETENTION来设置足够数量的重做保留(以秒为单位)。

    UNDO_MANAGEMENT=AUTO
    
    UNDO_RETENTION=86400 
    
    UNDO_RETENTION can be adjusted upward in high-volume environments.
  2. 使用以下公式计算撤消表空间中所需的空间。
    undo_space = UNDO_RETENTION * UPS + overhead

    Where:
    1)ndo_space是撤消块的数量。
    2)UNDO_RETENTION是UNDO_RETENTION参数的值(以秒为单位)。
    3)UPS是每秒撤销块的数量。
    4)开销是元数据(事务表等)的最小开销。

    使用系统视图V $ UNDOSTAT来估计UPS和开销。

  3. 对于包含LOB的表,请执行以下操作之一:
    1)将LOB存储子句设置为RETENTION。这是在UNDO_MANAGEMENT设置为AUTO时创建的表的默认值。
    2)如果使用PCTVERSION而不是RETENTION,请将PCTVERSION设置为初始值25.您可以根据使用STATS EXTRACT命令报告的读取统计信息来调整它(请参阅表2-1)。如果这些统计信息中STAT_OPER_ROWFETCH CURRENTBYROWID或STAT_OPER_ROWFETCH_CURRENTBYKEY字段的值很高,请以10为增量增加PCTVERSION,直到统计信息显示低值。
  4. 将以下任一权限授予Oracle GoldenGate Extract用户:
    GRANT FLASHBACK ANY TABLE TO db_user
    
    GRANT FLASHBACK ON schema.table TO db_user

Oracle GoldenGate提供以下参数来管理提取。

Table 2-1 Oracle GoldenGate Parameters and Commands to Manage Fetching

Parameter or Command Description
带有REPORTFETCH选项的STATS EXTRACT命令 Shows Extract fetch statistics on demand.
带有REPORTFETCH选项的STATOPTIONS参数 设置STATS EXTRACT命令,以便始终显示提取统计信息。
MAXFETCHSTATEMENTS参数 控制Extract在源数据库中维护的准备查询的打开游标数量,以及SQLEXEC操作的数量。
MAXFETCHSTATEMENTS参数 控制Extract的默认提取行为:Extract是否执行闪回查询或从表中提取当前图像。
使用USELATESTVERSION或NOUSELATESTVERSION选项的FETCHOPTIONS参数 处理Extract闪回查询的失败,例如,如果撤消保留过期或表的结构发生更改。提取可以从表格中提取当前图像或忽略失败
REPFETCHEDCOLOPTIONS参数 控制Replicat在处理包含提取数据或列缺失条件的跟踪记录时的响应。

2.5 管理服务器资源


在集成模式下,Extract与源数据库中的基础logmining server交互,并且Replicat与目标数据库中的入站服务器交互。本节提供了管理这些服务器使用的共享内存的指导原则。

服务器使用的共享内存来自数据库中系统全局区域(SGA)的Streams池部分。因此,必须将数据库初始化参数STREAMS_POOL_SIZE设置得足够高,以保证足够的内存可用于您希望在集成模式下运行的Extract和Replicat进程的数量。请注意,Streams池也被数据库的其他组件(如Oracle Streams,Advanced Queuing和Datapump导出/导入)使用,因此在确定Oracle GoldenGate的Streams池的大小时请确保考虑到它们。

默认情况下,一个集成捕获提取请求登录服务器以1GB的MAX_SGA_SIZE运行。因此,如果您在同一个数据库实例中以集成捕获模式运行三个提取,则至少需要分配给Streams池的3 GB内存。作为最佳做法,请保留25%的Streams池可用。例如,如果在集成捕获模式下有3个提取,请将数据库的STREAMS_POOL_SIZE设置为以下值:

3 GB * 1.25 = 3.75 GB

参考资料


https://docs.oracle.com/goldengate/c1230/gg-winux/GGODB/preparing-database-oracle-goldengate.htm#GGODB-GUID-E06838BD-0933-4027-8A6C-D4A17BDF4E41

为Oracle GoldenGate准备数据库的更多相关文章

  1. Oracle GoldenGate实现数据库同步

    前言:最近刚好在弄数据库同步,网上查了些资料再加上自己整理了一些,做个分享! 一.GoldenGate的安装 1.安装包准备 数据库版本:Oracle Database 11g Release 2(1 ...

  2. oracle goldengate 远程捕获和投递

    很早之前,OGG只支持部署在数据库主机上,这叫本地化部署.而现在OGG支持远端部署,即OGG软件不安装在数据库主机上,而是安装在单独的机器上,负责数据抽取和投递. 这样做的好处: l 易于管理 - 在 ...

  3. Oracle GoldenGate

    Oracle GoldenGate实现数据库同步 前言:最近刚好在弄数据库同步,网上查了些资料再加上自己整理了一些,做个分享! 一.GoldenGate的安装 官方文档: Oracle®GoldenG ...

  4. Oracle GoldenGate 12c实时捕获SQL Server数据

    在Oracle GoldenGate 12c中,对一些最新的数据库提供了支持,比如SQL Server 2012/2014,当然12c也支持sql server 2008.主要新增特性有: 捕获进程可 ...

  5. Oracle GoldenGate 12c (12.1.2.0.1) for IBM DB2 iSeries

    OGG 12.1.2.0.1 for iSeries 在2014.2.15发布,主要新增如下功能: 本地交付(Native Delivery Replicat):新功能允许用户在IBM i服务器上安装 ...

  6. Oracle GoldenGate 11.2 OGG-01168(转)

    为客户部署的Oracle GoldenGate在测试阶段出现如下的错误: 2012-04-24 10:45:20  ERROR   OGG-01168  Oracle GoldenGate Deliv ...

  7. 使用 Oracle GoldenGate 在 Microsoft SQL Server 和 Oracle Database 之间复制事务

    使用 Oracle GoldenGate 在 Microsoft SQL Server 和 Oracle Database 之间复制事务 作者:Nikolay Manchev 分步构建一个跨这些平台的 ...

  8. [转]Oracle GoldenGate安装配置

    ref:http://blog.sina.com.cn/s/blog_5d29418d0101cvyx.html 1 简介 Oracle Golden Gate软件是一种基于日志的结构化数据复制备份软 ...

  9. [置顶] Oracle GoldenGate 系列:使用 Oracle ASM API DBLOGREADER 时遇 ora-01031 错误

    今天在自己新搭建的 Oracle ACFS 文件系统上测试 GoldenGate ,启动 extract 进程报如下错误: 2013-08-27 14:58:39  ERROR   OGG-00446 ...

随机推荐

  1. redis服务意外停止

    本地windows的redis一直好的,今天突然项目报错无法连接,不得解 看了下日志, [4824] 04 Mar 11:15:45.714 # Accepting client connection ...

  2. M1-Flask-Day3

    内容概要: websocket mysql连接池 sqlalchemy flask-sqlalchemy 练习: 1. 谈谈Flask和Django的认识? Django大而全的框架,把Web相关设计 ...

  3. CSS常用选择器的认识

    ---恢复内容开始--- 前言:在CSS中选择器的种类有很多很多,但是在实际的工作中,我们经常会用到的分为两大类:基础选择器和复合选择器这两个大类,学习选择器的目的就是为了在复杂的页面中能够快速定位到 ...

  4. Vue 架构

    vue 一.认识Vue 定义:一个构建数据驱动的 web 界面的渐进式框架 优点: 1.可以完全通过客户端浏览器渲染页面,服务器端只提供数据 2.方便构建单页面应用程序(SPA) 二.引入Vue &l ...

  5. [Android] Android Studio 使用config.gradle统一管理项目的依赖库

    gradle支持自定义config.gradle,在GoogleSamples中提到我们必须使用关键字ext(对应ExtraPropertitesExtension的实例)来定义动态属性 如何实现: ...

  6. centos升级openssh版本

    似乎升级就是简单的安装ssh包就行了,没进行其他修改,虚拟机24个中高低漏洞解决 安装最新包: 1.下载:https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/por ...

  7. 谈谈java程序代码保护及license设计

    理论上讲,不存在牢不可破的漏洞,只是时间和成本问题.通常我们认为的不可破解,说的是破解需要难以接受的时间和成本.对于java程序来说,class文件很容易被反编译,所以理论上而言,对java程序做li ...

  8. Silverlight用户无法注册之MySql.Data.dll不一致

    本篇博文记录本人解决一个"用户无法注册"的问题的过程 1 问题描述: 用户可以删除:但不能注册,也不能修改权限: 图 1用户注册失败 图 2修改用户权限出错 2 解决过程 1)粗暴 ...

  9. springboot(十三):springboot结合mybatis generator逆向工程自动生成代码

    错信息generate failed: Exception getting JDBC Driver: com.mysql.jdbc.Driver 上网查了一下,发现原来是generator这个插件在运 ...

  10. SQL Server进阶(六)表表达式--派生表、公用表表达式(CTE)、视图和内联表值函数

    概述 表表达式是一种命名的查询表达式,代表一个有效地关系表.可以像其他表一样,在数据处理中使用表表达式. SQL Server支持四种类型的表表达式:派生表,公用表表达式,视图和内联表值函数. 为什么 ...