博文结构图如下:
一、环境描述以及注意事项
1.1 环境简介
IP |
系统 |
Oracle版本 |
OGG版本 |
|
源端 |
172.16.10.16/36 |
RHEL6.5 |
oracle11204 |
12.1 |
目标端 |
172.16.10.154 |
RHEL6.5 |
oracle11204 |
12.1 |
同步用户为:hr。
1.2 OGG网络带宽规划
GoldenGate数据同步所需的网络带宽是目前各种技术中最低的,复制全库数据时,通常GoldenGate队列文件大小与数据库日志大小的比例为1:4,GoldenGate网络传输压缩比例为1:8,TCP/IP网络传输效率最高为0.7;
–根据以上数据估算,以业务高峰期每小时产生50GB数据库日志为例,GoldenGate维持秒级数据
同步延迟的带宽要求为:
50 * 1024 (MB/小时) * 8 (每字节8位) / 3600 (秒/小时) / 4 (队列/日志比例)
/ 8 (传输压缩比例) / 0.7 (网络传输效率) = 5.08 Mbps
1.3 OGG安装注意事项
1、尽量避免OGG 双向同步,ogg双活安装需要业务避免更改同一行记录。
2、配置Extract,为了避免数据丢失,在启动extract 之前,必须确保所有open 的事务都已经完成。(或者在配置时,停止所有中间件以及监听业务)
3、特别大的表,或者操作太频繁的表,建议单独拆成多组抽取,还原进程。
4、TRAIL是否压缩,以及到期时间,字符集设置,ogg管理密码是否加密。
5、自动过滤重复时段的数据冲突,用于不能停机执行初始化,打开该参数后不会将数据错误报到discard文件中。
6、rac ogg 需要安装到共享目录上。
7、源库和目标库设置参数ENABLE_GOLDENGATE_REPLICATION 为true
(In Oracle 11.2.0.4 you will need to set ENABLE_GOLDENGATE_REPLICATION to TRUE in the init.ora parameter file for any source or target database)。
8、安装的所有主机尽量时间保持一直。
9、使用TRANLOGOPTIONS参数与DBLOGREADER选项参数文件如果RDBMS是Oracle 11.1.0.7或Oracle 11.2.0.2或更高版本11g R2版本。
10、DDL 数据库版本高于10G,不需要关闭回收站。
1.4 关于经典抽取模式
在经典捕获模式下,Oracle GoldenGate Extract进程从源库上的Oracle重做或归档日志文件或备库上的归档日志中捕获数据更改。
经典捕捉完全支持大多数Oracle数据类型,对复杂数据类型提供有限的支持。经典捕获是最初的Oracle GoldenGate捕获方法。对于Oracle GoldenGate支持的任何源Oracle RDBMS,您可以使用经典捕获,但多租户容器数据库除外。
经典捕获来支持以下内容:
- UDT,
NOLOGGING
VARRAY,源数据库兼容性设置在11.2.0.0.0以下的LOB。 - 透明数据加密支持,源数据库兼容性设置在11.0.0.0.0以下。
-
SECUREFILE
源数据库兼容性设置为低于11.2.0.0.0的LOB支持。 -
NOLOGGING
源数据库兼容性设置为低于11.2.0.0.0的LOB支持。
1.5 关于集成抽取模式
在集成捕获模式下,Oracle GoldenGate Extract进程直接与数据库登录服务器进行交互,以逻辑更改记录(LCR)的形式接收数据更改。图显示了集成捕获模式下的提取配置。
与经典捕捉相比,集成捕捉支持更多的数据和存储类型,支持更加透明。
以下是集成捕获的一些额外好处:
- 由于集成捕获与数据库完全集成,因此不需要其他设置即可与Oracle RAC,ASM和TDE配合使用。
- 集成捕获使用数据库登录服务器来访问Oracle重做流,其优点是能够自动在归档日志的不同副本或在线日志的不同镜像版本之间切换。因此,集成捕获可以透明地处理由于磁盘损坏,硬件故障或操作员错误导致的日志文件的缺失(假设存档和在线日志的附加副本可用
- 集成捕捉可以更快地过滤表格。
- 集成的捕获能够更有效地处理时间点恢复和RAC集成。
- 集成的捕捉功能集成日志管理。Oracle Recovery Manager(RMAN)会自动保留“抽取”所需的归档日志。
- 集成捕获是支持从多租户容器数据库捕获的唯一模式。One Extract可以挖掘多租户容器数据库中的多个可插拔数据库。
- 对于版本11.2.0.4源数据库及更高版本(源兼容性设置为11.2.0.4或更高版本),DDL的捕获由登录服务器异步执行,不需要安装特殊的触发器,表或其他数据库对象。可以在不停止用户应用程序的情况下执行Oracle GoldenGate升级。当Extract处于集成模式下时,需要使用DDL触发器和支持对象,而Oracle 11g源数据库早于版本11.2.0.4。
- 由于集成捕获和集成应用程序都是数据库对象,因此对象的命名遵循与其他Oracle数据库对象相同的规则。
集成捕获支持的数据库版本
完全支持:为了支持所有Oracle数据和存储类型,源数据库的兼容性设置必须至少为11.2.0.3,集成解压缩11.2.x(My Oracle Support文档ID 1557031.1Opens a new window)的11.2.0.3数据库特定捆绑软件修补程序。
要在不安装DDL支持对象的情况下支持DDL捕获,源数据库必须至少为Oracle 11.2.0.4或更高版本。对于较早的数据库版本,需要DDL支持对象。
有限的支持:可以在11.2.0.3下挖掘数据库上对兼容性小于11.2.0.3的源数据库使用集成捕获,但在此模式下,SECUREFILELOB,XML列,透明数据加密和UDT基于数据库版本和兼容性。数据库必须具有适用于集成提取11.2.x(Doc ID 1557031.1Opens a new window)的11.2.0.3数据库特定捆绑软件修补程序。数据库必须与源数据库版本相同(或更高)的数据库版本(最低为11.2.0.3)。
Integrated Replicat异步应用事务。不具有相互依赖性的事务可以安全地执行并按顺序执行,以实现快速吞吐量。具有依赖关系的事务保证以与源上相同的顺序应用。
入站服务器中的读取器进程根据目标数据库中定义的约束(主键,唯一外键)计算工作负载中事务之间的依赖关系。障碍事务和DDL操作也是自动管理的。协调员进程协调多个事务并在应用服务器之间维护订单。
如果入站服务器不支持配置的功能或列类型,则Replicat与入站服务器分离,等待入站服务器在其队列中完成事务,然后通过OCI 以直接应用模式将事务应用于数据库。应用直接事务后,复制器在集成模式下恢复处理。
Replicat在直接模式下应用以下功能:
- DDL操作
- 序列操作
-
SQLEXEC
参数TABLE
或MAP
参数 -
EVENTACTIONS
处理 - UDT请注意,如果提取用于
USENATIVEOBJSUPPORT
捕获UDT,则集成的Replicat将将其应用于入站服务器,否则将由Replicat直接处理。
集成复制要求
要使用集成的Replicat:
- 目标Oracle数据库必须是Oracle 11.2.0.4或更高版本。
- 必须在源数据库上启用补充日志记录以支持计算表之间的依赖关系以及在目标上同时执行事务调度。有关启用所需日志记录的说明。此日志记录可以在任何时候启用Oracle GoldenGate进程,但在此之前启用。
- 完全支持:为了支持所有Oracle数据和存储类型,源数据库的兼容性设置必须至少为11.2.0.3,集成解压缩11.2.x(My Oracle Support文档ID 1557031.1Opens a new window)的11.2.0.3数据库特定捆绑软件修补程序。要在不安装DDL支持对象的情况下支持DDL捕获,源数据库必须至少为Oracle 11.2.0.4或更高版本。对于较早的数据库版本,需要DDL支持对象。
- 有限的支持:可以在11.2.0.3下挖掘数据库上对兼容性小于11.2.0.3的源数据库使用集成捕获,但在此模式下,SECUREFILELOB,XML列,透明数据加密和UDT基于数据库版本和兼容性。数据库必须具有适用于集成提取11.2.x(Doc ID 1557031.1Opens a new window)的11.2.0.3数据库特定捆绑软件修补程序。数据库必须与源数据库版本相同(或更高)的数据库版本(最低为11.2.0.3)。
- 集成捕获是支持从多租户容器数据库捕获的唯一模式。One Extract可以挖掘多租户容器数据库中的多个可插拔数据库。
1.6 关于非整合复制
在非集成模式下,Replicat进程使用标准SQL将数据直接应用到目标表。在这种模式下,Replicat的操作如下:
阅读Oracle GoldenGate跟踪。
执行数据过滤,映射和转换。
构造代表源数据库DML或DDL事务的SQL语句(按提交顺序)。
通过Oracle调用接口(OCI)将SQL应用于目标。
1.7 决定使用哪种应用方法
使用不同的捕获和应用模式,可以一起使用以下捕捉和应用模式:
经典捕获(Oracle或非Oracle源)和非集成的Replicat
经典捕捉(Oracle或非Oracle源)和集成的Replicat
集成捕获和非集成复制
集成捕获和集成Replicat
您可以在同一个源Oracle GoldenGate实例内同时使用集成的捕获和经典捕获,并且可以在同一个目标Oracle GoldenGate实例内同时使用集成的Replicat和非集成的Replicat。此配置需要仔细将对象放置在相应的进程组中,因为在经典和集成捕捉模式之间以及在非集成和集成的Replicat模式之间没有DDL或DML的协调。每个提取组必须根据表数据类型和属性处理适合处理模式的对象。一个Extract中没有对象可以对另一个Extract中的对象具有DML或DDL依赖性。Replicat配置必须应用相同类型的隔离。
Oracle版本支持的推荐Oracle GoldenGate配置是在Oracle源上使用一个集成捕获,在Oracle目标上使用每个源数据库上的一个集成Replicat。集成捕获比传统捕获更全面地支持某些数据类型。一个集成的Replicat配置通过入站服务器支持所有Oracle数据类型,或者在必要时通过切换直接应用来支持所有Oracle数据类型,并保持源事务完整性。您可以根据需要将并行度设置调整到所需的应用性能级别。
二、OGG安装要求
2.1环境环境要求
磁盘空间要求:Linux 12c 需要至少 521M 磁盘空间 OUI安装;rac OCFS 官方建议支持自动faliover。
内存要求:oracle官方建议在大多数情况下,用户不需要更改默认的内存管理配置Oracle GoldenGate。(In most cases, users need not change the default Oracle GoldenGate memory management configuration.)
网络要求:带宽多大参考1.2;Oracle GoldenGate需要一些毫无保留的和不受限制的TCP / IP端口的,它的数量取决于OGG的进程的数量和类型。
操作系统用户权限要求:安装在Unix操作系统下,安装Oracle GoldenGate的用户必须
在Oracle GoldenGate安装目录的写权限。Oracle GoldenGate提取,复制,和经理必须操作过程有权限读取、写入和删除文件的操作系统用户。
数据库要求:ORACLE 数据库必须为归档模式。
RAC环境要求:
1、将Oracle GoldenGate Manager流程(和唯一的管理器)注册为集群管理的资源, Manager必须唯一的Oracle GoldenGate进程,即集群管理软件启动停止,因为它是管理所有其他进程的父进程,将Oracle GoldenGate集成到集群中
2、如果集群使用一个虚拟IP地址(如Oracle Clusterware),您可能需要为管理程序获取可用的固定IP地址。VIP必须公共子网上的一个可用的IP地址,不能确定通过DHCP。在提取数据泵的参数文件中,指定其中的VIP远程管理器作为RMTHOST参数的输入值。其他的
访问Manager的GoldenGate产品也应该使用VIP。
3、确保集群中的所有节点具有相同的兼容参数
设置。
4、当您配置管理器时,添加AUTOSTART和AUTORESTART参数该管理器将自动启动复制过程。在需要的时候,可以控制提取、复制和其他Oracle GoldenGate进程GoldenGate用户界面。
5、只在一个节点上安装共享驱动器。这阻止了进程的存在开始另一个节点。在所有节点上使用相同的挂载点。
6、可以专门为OGG 添加一个服务。
2.2 OGG支持的数据类型
OGG 12.1支持的类型:
2.2.1 ANYDATA 类型
■ BINARY_DOUBLE
■ BINARY_FLOAT
■ CHAR
■ DATEINTERVAL DAY TO SECOND
■ INTERVAL YEAR TO MONTH
■ NCHAR
■ NUMBER
■ NVARCHAR2
■ RAW
■ TIMESTAMP
■ TIMESTAMP WITH TIME ZONE
■ TIMESTAMP WITH LOCAL TIMEZONE
■ UDTs
■ VARCHAR/VARCHAR2
2.2.2 Numeric 类型
■ NUMBER up to the maximum size permitted by Oracle
■ BINARY FLOAT
■ BINARY DOUBLE
2.2.3 Character类型
■ CHAR
■ VARCHAR2
■ LONG
■ NCHAR
■ NVARCHAR2
2.2.4 Multi-byte 类型
■ NCHAR and NVARCHAR2 multi-byte character data types
■ Multi-byte data stored in CHAR and VARCHAR2 columns
2.2.5 Binary 类型
■ RAW
■ LONG RAW
2.2.6 Date and Timestamp 类型
■ DATE
■ TIMESTAMP
注意:
Oracle GoldenGate不支持负的日期。
■间隔一天,间隔年只是如果目标大小的支持列等于或大于源的列。
■Oracle GoldenGate支持捕获和时间戳和时间复制带为UTC偏移(timestamp 2011-01-01 8:00:00 - 8”)。
■时间戳和时区的TZR(区域ID)是复制支持数据的变化,而不是初始荷载,为返回,或操作的地方必须从数据库中提取列。在这些情况下,区域id是当选定列时,由数据库转换为时间偏移量。复制将时间戳复制为具有时间偏移值的日期和时间数据。
2.2.7 Large Object 类型
■ CLOB
■ NCLOB
■ BLOB
■ SECUREFILE and BASICFILE
Oracle GoldenGate不支持过滤、列映射,或操纵大于4K的大对象。
2.2.8 XML Data Types
支持以下XML类型:
■集成捕获模式,Oracle GoldenGate支持XMLType列XMLType表存储为XML CLOB,XML和XML二进制对象关系。
■经典的捕获模式,Oracle GoldenGate支持XMLType列存储XML和XML二进制字符
2.2.9用户定义或抽象类型
用户定义或抽象类型
Oracle GoldenGate支持用户定义类型(UDT)或抽象数据类型(ADT)
源和目标对象具有相同的结构。 模式名称可以是
不同。
支持的一般限制 - 集成和经典捕获模式
■基于重做的支持大多数属性类型,但可以从源代码提取
当UDT包含表时:
– Nested Table
– SDO_TOPO_GEOMETRY
– SDO_GEORASTER
■ Fetch-based does not support UDT that contains:
– ANYDATA
– TIMESTAMP WITH TIMEZONE
– TIMESTAMP WITH LOCAL TIMEZONE
– INTERVAL YEAR TO MONTH
– INTERVAL DAY TO SECOND
– BINARY FLOAT
– BINARY DOUBLE
■ Oracle GoldenGate GG does not support UDTs that contain:
Details of Support for Oracle Data Types
System Requirements and Preinstallation Instructions 1-17
– CFILE
– BFILE
– REF
– OPAQUE (with exception of XMLType and ANYDATA
2.3 DML支持的对象和操作
2.3.1 Tables, Views, Materialized Views
Oracle GoldenGate支持对常规表进行的以下DML操作,
索引组织表,聚集表和实例化视图。
■插入
■更新
■删除
■关联交易控制操作
提示:您可以使用DBA_GOLDENGATE_SUPPORT_MODE数据字典
查看以显示有关Oracle GoldenGate级别的信息捕获数据库中的表的进程支持。
Oracle GoldenGate支持包含任意数量行的表。
■一行长度最多可达4 MB。如果Oracle GoldenGate配置为包含
在其处理范围内的列的前后图像,为4 MB最大长度适用于完整的图像加长度的总长度
的后图像。例如,如果列上有UPDATE操作被用作行标识符,处理前后图像
总共不能超过4 MB。列之前和之后的图像也是必需的这不是行标识符,而是用作冲突的比较列检测和分辨率(CDR)。允许超过4 KB数据的列,例如LOB和LONG,只有前4 KB的数据存储在行和有助于最大行长4MB。
■Oracle GoldenGate支持每个表的最大列数由数据库支持。
2.3.2 GoldenGate支持分区属性的表
– Range partitioning
– Hash Partitioning
– Interval Partitioning
– System Partitioning
– Composite Partitioning
– Virtual Column-Based Partitioning
– Reference Partitioning
– List Partitioning
2.3.3 Oracle GoldenGate支持仅包含一列的表
不包括以下类型的表(Oracle GoldenGate supports tables that contain only one column, except when the column contains one of the following data types)
– LOB
– LONG
– Nested table
– UDT
– VARRAY
– XMLType
2.4 DDL支持的对象和操作
当源数据库是Oracle 11.2.0.4或更高版本的时候,提取操作是集成的模式,DDL捕获支持集成到数据库日志挖掘服务器中不需要使用DDL触发器。必须设置数据库参数11.2.0.4.0兼容性。在集成捕获模式中,提取支持DDL包括基于密码的列加密。
--注意: Password-based column encryption in DDL is not supported in classic capture mode.
2.4.1 支持的DML对象
– clusters
– directories
– functions
– indexes
– packages
– procedure
– tables
– tablespaces
– roles
– sequences
– synonyms
– triggers
– types
– views
– materialized views
– users
Oracle editionbased Redefinition(EBR)数据库复制的Oracle DDL是
支持以下Oracle数据库对象的集成提取:
– functions
– library
– packages (specification and body)
– procedure
– synonyms
– types (specification and body)
– views
EBR不支持使用DDL触发器。
2.4.2 支持的DML操作
■GoldenGate支持DDL操作4 MB的大小。GoldenGate用字节来度量DDL语句的大小,而不是字符。这大小限制包括包、过程和函数。实际的大小限制DDL的支持是近似的,因为大小不仅包括语句文本,但也包括Oracle GoldenGate的维护开销对象名称的长度、DDL类型和其他特征在内部保存DDL记录。
■GoldenGate支持全局临时表(GTT)DDL操作要清晰可见,这样它们就可以被复制。您必须设置DDLOPTIONS允许这个操作的参数,因为它不是默认设置的
2.5 OGG不支持的数据类型和对象
集成和经典的捕获模式
2.5.1 不支持的Oracle数据类型
Oracle GoldenGate不支持以下数据类型。
■对于不具有VARRAYS的数据类型,基于ANYDATA fetch的列支持
包括嵌入在这些数据类型中的命名集合和VARRAYS
■ANYDATASET
■ANYTYPE
■BFILE
■MLSLABEL
■ORDDICOM
■TIMEZONE_ABBR
■URITYPE
■包含不受支持的Oracle数据类型的UDT
■Oracle GoldenGate不支持标识列数据的复制或有效时间时间列数据。
以及calssical不支持的capture 类型,如:LONG VARCHAR,XML columns stored as
Object-Relational,Basic Compression, OLTP-Compression, Exadata Hybrid Columnar
Compression,Invisible(隐形)columns。
2.5.2 不支持索引组织表
索引组织表的不支持限制,这些适用于经典拍摄模式。
■启用密钥压缩的IOT(由COMPRESS关键字指示key_compression子句)在经典捕获模式下不受支持,但是支持集成捕获模式。
2.5.3 不支持的视图
不支持的视图,这些限制适用于集成和经典的捕获模式。
■GoldenGate支持捕获从一个视图提取初始载荷模式(直接从源视图获取,而不是重做日志)。
■GoldenGate不捕获变更数据从一个视图,但是它支持从视图的底层表中捕获。
■GoldenGate可以复制到一个视图可更新,只要视图是固有的。源表的结构和目标视图必须是相同的
2.5.4 不支持物化视图
在经典的和集成的模式中得到了物化视图
以下的局限性。
■物化视图不支持创建ROWID。
对Oracle DML中对象和操作的支持细节为Oracle数据库安装和配置Oracle GoldenGate
■可以创建物化视图日志与ROWID。
■源表必须有一个主键。
■截断的物化视图不支持。您可以使用DELETE FROM声明。
■DML(但不是DDL)从一个完整的刷新物化视图的支持。如果DDL
需要支持此特性,打开Oracle GoldenGate支持案例。
■为Replicat Create MV命令必须包括更新条款
■物化视图可以被复制或底层基表(s),但不是两者都有
2.5.5 不支持集群表
不支持的集群表:
在集成和经典的捕获模式中支持索引集群,在两种模式中都不支持散列集群。在经典的捕获模式下:
■加密和压缩群集表不支持在经典的捕捉。
■提取在经典的捕获模式捕获DML更改索引集群表,如果集群因子大小保持不变。任何导致集群大小的DDL增加或减少可能导致提取到该表上的后续DML不正确。
2.5.6 不支持的序列
不支持的序列,这些适用于集成和经典的捕获模式。
■GoldenGate不支持复制的序列值active - active双向配置。
■缓存大小和源和目标序列的增量区间必须的是相同的。缓存可以是任何大小,包括0(NOCACHE)。
■序列可以设置为循环周期,但源和目标数据库必须以同样的方式设置。
2.6 DML不支持的对象和操作
2.6.1 DML不支持的对象和操作
如下DML在经典或集成捕获模式中都不支持:
■REF
■序列值在一个active - active双向配置
■Database Replay
■创建外部表
■无形的列不支持通过经典或综合提取。
2.6.2 经典模式不支持对象和操作
以下是经典捕获模式中不支持:
■Exadata混合柱状压缩
■捕获与OLTP表压缩表
■捕获与压缩的表空间和表创建或修改
■捕获从加密和压缩群集表
■无形的列
■分布式事务。在Oracle版本11.1.0.6和更高版本中,可以捕获这些事务如果您通过以下方式使它们不分布命令,要求重新启动数据库。
改变系统设置_CLUSTERWIDE_GLOBAL_TRANSACTIONS = FALSE;
■RAC分布式XA和PDML分布式事务
■enabled-tables版本
■标识列
2.7 DDL不支持的对象和操作
2.7.1 DDL不支持的对象和操作(经典和集成模式)
"ANONYMOUS", // HTTP access to XDB
"APPQOSSYS", // QOS system user
"AUDSYS", // audit super user
"BI", // Business Intelligence
"CTXSYS", // Text
"DBSNMP", // SNMP agent for OEM
"DIP", // Directory Integration Platform
"DMSYS", // Data Mining
"DVF", // Database Vault
"DVSYS", // Database Vault
"EXDSYS", // External OGGI System User
"EXFSYS", // Expression Filter
"GSMADMIN_INTERNAL", // Global Service Manager
"GSMCATUSER", // Global Service Manager
"GSMUSER", // Global Service Manager
"LBACSYS", // Label Security
"MDSYS", // Spatial
"MGMT_VIEW", // OEM Database Control
"MTSSYS", // MS Transaction Server
"ODM", // Data Mining
"ODM_MTR", // Data Mining Repository
"OJVMSYS", // Java Policy SRO Schema
"OLAPSYS", // OLAP catalogs
"ORACLE_OCM", // Oracle Configuration Manager User
"ORDDATA", // Intermedia
"ORDPLUGINS", // Intermedia
"ORDSYS", // Intermedia
"OUTLN", // Outlines (Plan Stability)
"SI_INFORMTN_SCHEMA", // SQL/MM Still Image
"SPATIAL_CSW_ADMIN", // Spatial Catalog Services for Web
"SPATIAL_CSW_ADMIN_USR",
"SPATIAL_WFS_ADMIN", // Spatial Web Feature Service
"SPATIAL_WFS_ADMIN_USR",
"SYS",
"SYSBACKUP",
"SYSDG",
"SYSKM",
"SYSMAN", // Adminstrator OEM
"SYSTEM",
"TSMSYS", // Transparent Session Migration
"WKPROXY", // Ultrasearch
"WKSYS", // Ultrasearch
"WK_TEST",
"WMSYS", // Workspace Manager
"XDB", // XML DB
"XS$NULL",
"XTISYS", // Time Index
Special schemas:
"*.AQ$*", // advanced queues
"*.DR$*$*", // oracle text
"*.M*_*$$", // Spatial index
"*.MLOG$*", // materialized views
"*.OGGQT$*",
"*.RUPD$*", // materialized views
"*.SYS_C*", // constraints
"*.MDR*_*$", // Spatial Sequence and Table
"*.SYS_IMPORT_TABLE*",
"*.CMP*$*", // space management, rdbms >= 12.1
"*.DBMS_TABCOMP_TEMP_*", // space management, rdbms < 12.1
"*.MDXT_*$*" // Spatial extended statistics tables
2.7.2 DDL不支持的对象和操作(其它类)
■ DDL on nested tables.
■ DDL on invisible columns.
■ DDL on identity columns
更改数据库和更改系统(这些不被认为是DDL)使用集成字典,您可以复制ALTER DATABASE默认版本更改可插入数据库的默认版本。所有其他的改变(PLUGABLE)数据库命令将被忽略。
■备用数据库的DDL。
■数据库链接DDL。
■DDL创建表的闪回存档条款和DDL创建,alters,或者删除flashback数据归档本身。DML在表中闪回支持档案。
■经典捕获模式不支持DDL,包括密码列加密。
Oracle对象名称在默认情况下是不敏感的,但是可以区分大小写,使用双引号。(GoldenGate)支持大小写敏感性。
2.8 查看OGG不支持的模式
2.8.1 查延迟约束的类型和对象
col CONSTRAINT_NAME for a30
select owner,table_name,CONSTRAINT_TYPE,DEFERRED from dba_constraints where DEFERRED='DEFERRED';
按照用户同步可使用如下语句:
col CONSTRAINT_NAME for a30
select owner,table_name,CONSTRAINT_TYPE,DEFERRED from user_constraints where DEFERRED='DEFERRED';
2.8.2 没有主键和唯一键的表
col TABLE_NAME for a50
SELECT owner, TABLE_NAME,CONSTRAINT_TYPE FROM dba_constraints t WHERE NOT EXISTS(SELECT table_name FROM dba_constraints c WHERE constraint_type in('P','U') AND t.table_name=c.table_name);
按照用户同步可使用如下语句:
col TABLE_NAME for a50
SELECT owner, TABLE_NAME,CONSTRAINT_TYPE FROM user_constraints t WHERE NOT EXISTS(SELECT table_name FROM User_constraints c WHERE constraint_type in('P','U') AND t.table_name=c.table_name);
2.8.3 不支持的字段,类型
set lin 150
set pages 100
col table_name for a30
col owner for a10
col column_name for a30
select owner,table_name,column_name,data_type from dba_tab_columns where owner in ('XXX') and data_type in ('ANYDATA','ANYDATASET','ANYTYPE','BFILE','MLSLABEL','ORDDICOM','REFs','TIMEZONE_ABBR','URITYPE','UDT');
或者:
select owner,table_name,column_name,data_type from dba_tab_columns where data_type in ('ANYDATA','ANYDATASET','ANYTYPE','BFILE','MLSLABEL','ORDDICOM','REFs','TIMEZONE_ABBR','URITYPE','UDT');
2.8.4 不支持压缩表
select owner,table_name from dba_tables where compression='ENABLED';
或者按用户查找:
select owner,table_name from dba_tables where owner in ('HR') and compression='ENABLED';
2.8.5 不支持物化视图
COL OBJECT_NAME FOR A30
select object_name,owner from dba_objects where object_type='MATERIALIZED VIEW';
或者按照用户查找:
COL OBJECT_NAME FOR A30
select object_name,owner from dba_objects where owner in('hr') and object_type='MATERIALIZED VIEW';
三、OGG12.1的OUI的安装
注释:源库和目标库都安装。
相关目录,并把安装软件上传上去:
官方建议软件安装到Oracle Cluster File System (OCFS)卷,而不是安装到本地直接目录。
[root@ogg1 ~]# cd /ogg/
[root@ogg1 ogg]# mkdir home
[root@ogg1 ogg]# mkdir ogginstall
[root@ogg1 ogg]# chown -R oracle:oinstall /ogg/
注意:ogg安装目录要为空。
LINUX 环境下运行runInstaller
3.1 OGG安装步骤(源,目标库)
3.2 OGG目录的说明
以上所创建的目录的作用:
Name |
purpose |
|
dirchk |
Checkpoint files |
用来存放检查点(checkpoint)文件,次检查点是ogg自己的检查点与实例不同 |
dirdat |
GoldenGate trails |
用来存放TRAIL文件 |
dirdef |
Data definition files |
用来存放通过DEFGEN工具生成的源或目标端数据定义文件 |
dirprm |
Parameter files |
用来存放配置参数文件 |
dirpcs |
Process status files |
用来存放进程状态文件 |
dirrpt |
Report files |
用来存放进程报告文件 |
dirsql |
SQL script files |
用来存放SQL脚本文件 |
dirtmp |
Temporary files |
当事物所需要的内存超过已分配内存时,默认存储在这个目录 |
四、OGG 数据库准备工作
4.1 数据库级别最下附加日志
查看以及修改语句如下(12.1 ogg官方安装文档54页):
SELECT supplemental_log_data_min, force_logging FROM v$database;
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
ALTER DATABASE FORCE LOGGING;
SELECT supplemental_log_data_min, force_logging FROM v$database;
ALTER SYSTEM SWITCH LOGFILE;
SQL> select supplemental_log_data_min from v$database;
SUPPLEME
--------
YES -------------若不是YES,需要打开
打开语句:
SQL> alter database add supplemental log data;
SQL> ALTER SYSTEM SWITCH LOGFILE;
SQL> select force_logging from v$database;
FOR
---
YES
SQL> ALTER DATABASE FORCE LOGGING;
4.2 确认表级附加日志添加
1、确认所有表的状态是否logging,把nologing变成logging。
select owner,table_name from dba_tables where owner in ('HR') and logging='NO';
OWNER TABLE_NAME
------------------------------ ------------------------------
HR DEPARTMENTS
HR REGIONS
HR JOBS
HR EMPLOYEES
HR JOB_HISTORY
HR LOCATIONS
6 rows selected.
2、打开表级附加日志
select 'alter table '||owner||'.'||table_name||' logging;' from dba_tables where owner in ('HR') and logging='NO';
'ALTERTABLE'||OWNER||'.'||TABLE_NAME||'LOGGING;'
--------------------------------------------------------------------------------
alter table HR.DEPARTMENTS logging;
alter table HR.REGIONS logging;
alter table HR.JOBS logging;
alter table HR.EMPLOYEES logging;
alter table HR.JOB_HISTORY logging;
alter table HR.LOCATIONS logging;
3、确认已经打开标记附加日志。
select owner,table_name from dba_tables where owner in ('HR') and logging='NO';
4.3 数据库启用goldengate
注意:
Oracle 11.2.0.4 以及之后版本数据库,源库以及目标库必须开启参数。
ENABLE_GOLDENGATE_REPLICATION
1、启用参数 ENABLE_GOLDENGATE_REPLICATION
alter system set enable_goldengate_replication=true;
SQL> show parameter gold
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
enable_goldengate_replication boolean FALSE
SQL> alter system set enable_goldengate_replication=true;
2、设置闪回查询
如果源库需要开启闪回查询,建议增大undo 表空间的大小以及保留时间。
SQL> show parameter undo
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management string AUTO
undo_retention integer 900
undo_tablespace string UNDOTBS1
例如:
alter system set undo_retention=1800 scope=both;
alter tablespace UNDOTBS1 add datafile '+datadg' size 2048m;
GRANT FLASHBACK ANY TABLE TO db_user
GRANT FLASHBACK ON schema.table TO db_user;
3、需要注意的参数
STREAMS_POOL_SIZE,MAX_SGA_SIZE,PARALLELISM
GoldenGate默认情况下,一个完整的采集提取请求的服务器运行日志挖掘max_sga_size 1GB和平行度2。因此,如果您运行三个提取在同一数据库实例中的集成捕获模式中,至少需要3 GB的分配给流池的内存。作为最佳实践,保留25%的流
池。例如,如果在集成捕获模式中有三个提取,则设置
streams_pool_size以下:
3 GB +(3 GB×0.25)= 3.75 GB
4.4 创建管理用户
4.4.1创建管理用户ogg
注意:要按照实际情况分配大小(目标库、源库执行以下操作)。
创建表空间是为了DDL同步,以及OGG查询。
create tablespace ogg datafile '+DATADG' size 2048M autoextend on next 200m;
create user ogg identified by ogg default tablespace ogg;
SQL> create tablespace ogg datafile '+DATADG' size 2048M autoextend on next 200m;
SQL> create user ogg identified by ogg default tablespace ogg;
--授权,DBA权限在安装成功后可以收回:
11.2.0.3 之后的授权(参照OGG12.1安装文档63页):
GRANT CONNECT TO ogg;
GRANT ALTER ANY TABLE TO ogg;
GRANT ALTER SESSION TO ogg;
GRANT CREATE SESSION TO ogg;
GRANT FLASHBACK ANY TABLE TO ogg;
GRANT SELECT ANY DICTIONARY TO ogg;
GRANT SELECT ANY TABLE TO ogg;
GRANT LOCK ANY TABLE TO ogg;
GRANT RESOURCE TO ogg;
GRANT DBA TO ogg;
GRANT SELECT ANY TRANSACTION TO ogg;
exec dbms_goldengate_auth.grant_admin_privilege('ogg');
GRANT UNLIMITED TABLESPACE TO ogg;
GRANT CONNECT TO ogg;
GRANT ALTER ANY TABLE TO ogg;
GRANT ALTER SESSION TO ogg;
GRANT CREATE SESSION TO ogg;
GRANT FLASHBACK ANY TABLE TO ogg;
GRANT SELECT ANY DICTIONARY TO ogg;
GRANT SELECT ANY TABLE TO ogg;
GRANT LOCK ANY TABLE TO ogg;
GRANT RESOURCE TO ogg;
GRANT DBA TO ogg;
GRANT SELECT ANY TRANSACTION TO ogg;
exec dbms_goldengate_auth.grant_admin_privilege('ogg');
--Capture from Data Vault,Capture from Virtual Private
Database, Capture redacted data
sys.dbms_internal_clkm 复制Oracle Transparent Data Encryption (TDE)时需要.
--安装成功后可以收回dba权限,但是要授予UNLIMITED TABLESPACE权限。
GRANT UNLIMITED TABLESPACE TO ogg;
或者alter user ogg quota unlimited on users;
--在ddl_setup时报错,通过授予以下权限解决。
grant create any table to ogg;
grant create any view to ogg;
grant create any procedure to ogg;
grant create any sequence to ogg;
grant create any index to ogg;
grant create any trigger to ogg;
grant create any view to ogg;
4.5 OGG DDL 的配置
来自(OGG 12.1 官方文档131页13.7)
启用 ddl 支持
默认情况下, ddl 复制支持的状态如下:
源库中:默认情况下禁用oracle GoldenGate ddl 支持。必须使用 ddl 参数配置提取以捕获 ddl。
目标库上,:默认情况下启用 ddl 支持, 以维护复制的事务性数据。默认情况下, Replicat 将处理所有 ddl跟踪所包含的操作。如果需要, 可以使用 ddl 参数来配置 Replicat 以忽略或筛选 ddl 操作。
■ just DDL changes
■ just DML changes
■ both DDL and DML
何时使用基于 ddl 捕获,必须使用基于 ddl 捕获时, 提取将在以下操作配置:
提取操作的经典捕获模式对任何版本的 oracle 数据库。提取操作以集成模式对 oracle 数据库版本11.2.0.3 或早.如果提取将在集成模式下运行11.2.0.4 或更高版本的 oracle数据库, 则不需要 ddl 触发器。默认情况下, 将处理 ddl 捕获透明地通过数据库 logmining 服务器。如果提取将从多容器数据库捕获, 集成捕获模式必须与本机 ddl 捕获方法一起使用。
4.5.1 基于DDL触发器的捕获(源库执行)
classcial 模式安装DDL对象(OGG 安装文档222,223页):
注释:从OGG 安装目录下执行如下脚本。
1.确定DDL SCHEMA
需要配置在GLOBALS中:GGSCHEMA ogg
2.授予ogg读写操作系统上的文本文件权限
GRANT EXECUTE ON UTL_FILE TO ogg;
3.准备表空间
为ogg_DDL_HIST、 ogg_MARKER等表准备表空间,如果空间不足,会导致数据库无法进行DDL,从而影响业务。
SQL> alter user ogg default tablespace ogg;
4.退出所有ORACLE会话,不允许新会话产生。退出所有Oracle会话,包括那些SQL * Plus,那些业务应用程序,Oracle GoldenGate进程的应用程序,以及任何其他应用程序使用Oracle的软件。 防止任何新会话的开始。
5.sqlplus "/as sysdba" ----必须sysdba连入 ,运行SQL * Plus并以具有SYSDBA权限的用户身份登录。 这个特权是需要在SYS模式中安装DDL触发器,这是Oracle需要的。
6.@marker_setup
--该脚本安装marker系统,这部分为启用DLL支持所必备,执行该脚本时会提示输入GoldenGate管理帐户schema名。
7. @ddl_setup
执行该脚本要确认关闭掉所有ORACLE会话,以及提交相应问提交的事物。
注意:如果ddl_setup.sql将失败此模式的表空间由任何其他用户共享,但是,如果不行,那不会失败默认表空间没有将AUTOEXTEND设置为ON,建议使用设置。
8. @role_setup
--该操作会重建DDL同步所需的权限,授予GoldenGate中的DDL对象以DML权限。
提示你执行一条GRANT语句,执行即可!
GRANT GGS_GGSUSER_ROLE TO ogg;
9. @ddl_enable.sql
--启用DDL触发器,以捕获DDL操作。
10. @ddl_pin.sql ogg
先执行@?/rdbms/admin/dbmspool.sql (DDL 性能工具)
要提高DDL触发器的性能,可以通过ddl_pin脚本,该脚本会将触发器使用的包加载到内存,以此提高效率。该脚本执行时需要引用dbms_shared_pool系统包,因此在使用ddl_pin脚本前需要确保dbms_shared_pool可用。执行ddl_pin脚本需要指定GoldenGate管理员schema名称.
11. @ddl_status.sql
验证是否由该对象创建的每个对象Oracle GoldenGate DDL支持特性的存在和存在正常运作。(Oracle安装).
4.5.2 重置DDL环境
1. Run GGSCI.
2. STOP EXTRACT <group>
3. STOP REPLICAT <group>
4. Run SQL*Plus and log in as a user that has SYSDBA privileges.
5. Run the ddl_disable script.
6. Run the ddl_remove script,
7. Run the marker_remove script.
8. Run the marker_setup script.
9. Run the ddl_setup script.
10. Run the role_setup script.
11. Grant the role to all Oracle GoldenGate users
12. Run the ddl_enable.sql script.
4.5.4 删除DDL环境:
1. Run GGSCI.
2. STOP EXTRACT <group>
3. STOP REPLICAT <group>
4. Run SQL*Plus and log in as a user that has SYSDBA privileges.
5. Run the ddl_disable script .
6. Run the ddl_remove script
7. Run the marker_remove script.
4.5.4 支持sequence
查看OGG 12.1.2 官方安装文档102-103页。
在 Source 和 target 都得执行,
grant dba to ogg;
ggsci
EDIT PARAMS ./GLOBALS --后面参数配置
GGSCHEMA ogg
SQL> @sequence.sql
在 source 系统里
GRANT EXECUTE on DDLuser.updateSequence TO DBLOGINuser;
GRANT EXECUTE on ogg.updateSequence TO ogg;
在 target 系统里
GRANT EXECUTE on DDLuser.replicateSequence TO Replicatuser;
GRANT EXECUTE on ogg.replicateSequence TO ogg;
源库执行如下:
ALTER TABLE sys.seq$ ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
DDL 支持配置完毕,就可以支持 sequences (CREATE, ALTER, DROP, RENAME)
操作的复制的,但如果只是单纯的想复制 sequence 的话,可以不配置 DDL 支持,
只需要 sequence 参数就 行。
GGSCI> dblogin userid ogg@source,password ogg
FLUSH SEQUENCE <owner.sequence> 或者 wildcard
在 initial synchronization 之后,必须执行的就是在 target 上对没一个
sequence 至少取一次 nextval
参照OGG安装文档154页。
注意:在允许新的DDL或者DML将发行的同一对象(S)作为原始DDL,让原来的DDL时间要复制到远程系统,然后再由提取该系统。这将确保操作到达正确的复制对原系统,防止DML元数据不一致造成的错误。
在一个级联配置传播DDL EXT进程配置。
DDLOPTIONS GETREPLICATES, IGNOREAPPLOPS
序列复制中的问题:
Cycle的影响
达到maxvalue后,会切换成minvalue值,但是有序列源和目标端算法限制,目标端进程必须在一直执行nextval,直到maxvalue,所以表象就是replicat一直hang的状态,checkpoint不向前移动。
此时建议:
复制排除recycle的序列或者临时忽略sequence的复制。
或者加参数DBOPTIONS _MAXSEQUENCEDISTANCE <n> n – 源端和目标端seq的值相差多少可以ignore;
现有的目标上(已经配置了序列复制)同时又配置了extract(配置了ddl setup),extract会很
慢,建议修改seq的cache大小,或者配置DBOPTIONS _NOAUTOMATICSEQUENCEFLUSH来
减少ALTER SEQUENCE CYCLE|NOCYCLE的产生。
五、OGG classical 模式源库的配置(cdc和initload配合)
5.1 添加supplement log
查看OGG 12.1.2 官方安装文档52-53页
登陆选项 |
GGSCI命令 |
作用 |
用例 |
模式级补充无条件登录所有支持的日志记录列 |
ADD SCHEMATRANDATA with ALLCOLS option |
无条件启用补充记录所有的表中的列, 对于所有的表在一个模式(用户)。 |
用于集成复制当并行性>1, 源和目标有不同调度列。 |
模式级补充记录,最小设置 |
ADD SCHEMATRANDATA with NOSCHEDULINGCOLS option |
无条件启用补充记录主键和所有有效的唯一索引模式中的表。 |
仅用于非集成Replicat。 这是最低要求模式级日志记录。 |
表级补充内置日志记录支持综合Replicat |
ADD TRANDATA |
无条件启用补充记录主键和有条件补充记录唯一键和外键表。所有这些键一起被称为调度列。 |
所有Oracle都需要GoldenGate 用例除非模式级别补充记录是用过的。 |
表级补充无条件登录所有支持的日志记录列 |
ADD TRANDATA with ALLCOLS option |
无条件启用补充记录所有的表的列。 |
用于集成复制当并行性更大时比1和源和 目标有所不同调度列。 |
表级补充记录,最小设置 |
ADD TRANDATA with NOSCHEDULINGCOLS option |
无条件启用补充记录主键和所有表的有效唯一索引。 |
仅用于非集成Replicat。 这是最低要求表级日志记录。 |
ADD SCHEMATRANDATA schema [ALLCOLS | NOSCHEDULINGCOLS]
schema
要为其添加补充键信息的架构。不要使用通配符。要在多租户容器数据库的多个可插拔数据库中为模式发出ADD SCHEMATRANDATA,请使用DBLOGIN单独登录到每个可插入数据库,然后发出ADD SCHEMATRANDATA。有关详细信息,请参阅DBLOGIN。
■ALLCOLS
可用于启用无条件的全部日志记录的表的列,并适用于所有当前和未来的表给定模式。用于在源和目标时支持集成的Replicat表有不同的调度列。 (计划列是主要的键,唯一键和外键。)
■NOSCHEDULINGCOL
仅记录主键的值并且全部有效稍后添加的模式和新表中的现有表的唯一索引。这是架构级日志记录的最低要求级别,仅适用于
以非整合模式复制。
在以下示例中,该命令启用默认的补充日志记录
finance模式。
ADD SCHEMATRANDATA finance
在以下示例中,该命令仅启用补充日志记录
hr模式的主键和有效的唯一索引。
ADD SCHEMATRANDATA hr NOSCHEDULINGCOLS
ADD TRANDATA command.
ADD TRANDATA [container.]schema.table [, COLS (columns)] [, NOKEY] [, ALLCOLS |
NOSCHEDULINGCOLS]
■ALLCOLS
可以对所有列进行无条件的补充记录的表。用于在源和目标时支持集成的Replicat表有不同的调度列(计划列是主要的键,唯一键和外键)。
■NOSCHEDULINGCOLS
仅在非集成模式下对Replicat有效。它问题具有ADD补充日志数据的ALTER TABLE命令
子句适用于为其定义的唯一约束类型没有唯一约束的表或所有列。这个命令满足Oracle GoldenGate的基本表级日志记录要求不会使用模式级日志记录。
■COLS
列记录KEYCOLS子句所需的非键列用于过滤和操纵。括号是必需的。这些列除了主键之外,还将被记录,除非NOKEY选项也是当下。
■NOKEY
防止记录主键或唯一键。需要一个TABLE和MAP参数中的KEYCOLS子句和ADD中的COLS子句TRANDATA命令记录备用KEYCOLS列。
4.如果将ADD TRANDATA与COLS选项一起使用,则为其创建唯一索引
目标上的列以优化行检索。如果您正在记录这些列
作为KEYCOLS子句的替代键,请注意将KEYCOLS子句添加到
配置Oracle GoldenGate时的TABLE和MAP语句流程。
ggsci>dblogin userid ogg,password ogg(或者dblogin userid ogg@ogg1,password ogg)
ggsci>add SCHEMATRANDATA HR (按照用户添加)
ggsci>info trandata HR.*
ggsci>info schematrandata HR
add trandata:不会自动更新trandata信息(create table,update附加日志列信息等操作时)
add schematrandata 命令格式:add schematrandata <schemaname>(不要用schemaname.*)
5.2 MGR进程配置
使用语法,说明来自OGG 12.1.2 (Reference for Oracle GoldenGate for Windows and UNIX)12c 202-203页
Syntax for Windows, UNIX, and Linux
mgr paramfile parameter_file
[cd directory]
[pauseatend | nopauseatend]
[port portnum]
[reportfile report_file]
[usesubdirs | nousesubdirs]
参数说明来自OGG 12.1.2 (Reference for Oracle GoldenGate for Windows and UNIX)12c 208-209页
参数 |
使用说明 |
CHARSET |
在读取参数文件时,指定要使用的进程的多字节字符集,而不是操作系统默认值。 |
COMMENT 或者 -- |
允许在参数文件中插入注释。 |
SOURCEDB |
指定数据源名称作为登录信息的一部分。 |
USERIDALIAS |
为Manager需要访问数据库时提供登录信息。 |
SYSLOG |
过滤写入系统的Oracle GoldenGate消息的类型在Windows或UNIX系统上记录或IBM上的SYSOPR消息队列我的系统。 |
DYNAMICPORTLIST |
指定Collector可以动态分配的端口。 |
PORT |
建立管理员侦听请求的TCP / IP端口号。 |
AUTORESTART |
指定管理器在失败后重新启动的进程。 |
AUTOSTART |
指定启动Manager时启动的进程。 |
BOOTDELAYMINUTES |
确定系统重启时间后MGR延迟多长时间进行主要进程活动。 此参数支持视窗。 |
UPREPORT |
确定过程心跳消息的报告频率。 |
DOWNCRITICAL |
报告正常或异常停止的进程。 |
DOWNREPORT |
控制报告停止进程的频率。 |
LAGCRITICAL |
指定一个被认为是关键的滞后阈值并产生一个警告到错误日志。 |
LAGINFO |
指定信息性消息报告给错误日志的滞后(LAG)阈值。 |
LAGREPORT |
设置报告延迟时间到错误日志的间隔。 |
CHECKMINUTES |
确定MGR周期进行维护活动的频率。 |
PURGEDDLHISTORY 或者 PURGEDDLHISTORYALT |
清除从Oracle DDL历史记录表中行他们不再需要的。 |
PURGEMARKERHISTORY |
清除不再是Oracle标记表行需要。 |
PURGEOLDEXTRACTS for Extract and Replicat |
定期清理抽取出的过期文件,可以被设置在Manager, Extract, and Replicat参数文件中,oracle建议设置在Manager中. |
PURGEOLDTASKS |
清除指定时间后Extract 和 Replicat任务的时间。 |
STARTUPVALIDATIONDELAY[CSECS] |
设置一个延迟时间,之后Manager会检查它进程启动后仍在运行。 |
port 7809
DYNAMICPORTLIST 7800-7810
AUTORESTART EXTRACT *,RETRIES 3, WAITMINUTES 5, RESETMINUTES 30
LAGREPORTHOURS 1
LAGREPORTMINUTES 10
LAGCRITICALMINUTES 10
PURGEOLDEXTRACTS /ogg/ogginstall/dirdat/*, USECHECKPOINTS, MINKEEPHOURS 12
userid ogg@ogg1,password ogg
PURGEDDLHISTORY MINKEEPDAYS 7, MAXKEEPDAYS 14, FREQUENCYHOURS 30
PURGEMARKERHISTORY MINKEEPDAYS 7, MAXKEEPDAYS 14, FREQUENCYHOURS 30
注释:
具体保留时间时间建议根据评价每天归档量大小/4,计算需要的空间。
以下参数相关说明:
在以下示例中,Manager会尝试三次启动所有Extract进程在一小时内发生故障,并在每次尝试前等待五分钟。
AUTORESTART EXTRACT *, RETRIES 3, WAITMINUTES 5, RESETMINUTES 60
要指定一个端口范围加个别端口,请在该端口之间加一个逗号范围和个人端口号。 例:
DYNAMICPORTLIST 7820-7830, 7833, 7835
状态:TRAIL文件存在AA000000,AA000001和AA000002。 复制已停止四个小时,没有完成处理任何文件。 MGR参数包括:
PURGEOLDEXTRACTS / ggs / dirdat / AA *,USECHECKPOINTS,MINKEEPHOURS 2
结果:超过文件必须保留的时间,但不会有文件被清除,因为检查点表明Replicat没有完成处理。
使用LAGINFOSECONDS,LAGINFOMINUTES或LAGINFOHOURS参数指定一个基本滞后阈值 如果LAG超过指定值,Oracle GoldenGate报告lag信息到错误日志。 如果lag超过了指定的值LAGCRITICAL参数,MGR报告LAG至关重要; 否则报告
LAG作为信息消息。 零(0)的值强制在频率处的消息用LAGREPORTMINUTES或LAGREPORTHOURS参数指定。
LAGINFOSECONDS seconds | LAGINFOMINUTES minutes | LAGINFOHOURS hours
LAGINFOSECONDS秒
设置基本滞后阈值(秒)。
LAGINFOMINUTES分钟
设置基本滞后阈值(以分钟为单位)。
LAGINFOHOURS小时
设置基本滞后阈值(小时)。
使用LAGCRITICALSECONDS,LAGCRITICALMINUTES或LAGCRITICALHOURS参数指定被认为是关键的lag阈值,并强制发出警告消息达到阈值时的错误日志。 此参数影响提取和在本地系统上复制进程。
LAGCRITICALSECONDS秒
以秒为单位设置临界滞后阈值。
LAGCRITICALMINUTES分钟
以分钟为单位设置临界滞后阈值。
LAGCRITICALHOURS小时
以小时为单位设置临界滞后阈值。
以下示例保留在过去三天内尚未修改的所有行,并在至少五天内未修改时将其删除。该
清除频率为30分钟。(清除从Oracle DDL历史记录表中行他们不再需要的。)
PURGEDDLHISTORY MINKEEPDAYS 3, MAXKEEPDAYS 5, FREQUENCYMINUTES 30
以下示例保留在过去三天内尚未修改的所有行,并在至少五天内未修改时将其删除。该
清除频率为30分钟。(清除不再是Oracle标记表行需要。)
PURGEMARKERHISTORY MINKEEPDAYS 3, MAXKEEPDAYS 5, FREQUENCYMINUTES 30
具体设置如下:
ggsci> edit param mgr
输入:
port 7809
DYNAMICPORTLIST 7800-7810
AUTORESTART EXTRACT *,RETRIES 3, WAITMINUTES 5, RESETMINUTES 30
LAGREPORTHOURS 1
LAGREPORTMINUTES 10
LAGCRITICALMINUTES 10
PURGEOLDEXTRACTS /ogg/ogginstall/dirdat/*, USECHECKPOINTS, MINKEEPHOURS 12
userid ogg@ogg1,password ogg
PURGEDDLHISTORY MINKEEPDAYS 7, MAXKEEPDAYS 14, FREQUENCYHOURS 24
PURGEMARKERHISTORY MINKEEPDAYS 7, MAXKEEPDAYS 14, FREQUENCYHOURS 24
设置好后,重启MGR
ggsci>start mgr
5.3 全局参数的设置
参数说明来自OGG 12.1.2 (Reference for Oracle GoldenGate for Windows and UNIX)12c 207-208页
参数 |
使用说明 |
TRAILBYTEORDER |
指定使用EXTFILE,RMTFILE,EXTTRAIL或RMTTRAIL参数创建的文件的字节顺序(字节顺序)。 |
CHARMAP |
指定字符映射文件覆盖字符代码点映射。 |
CHARSET |
在读取参数文件时,指定要使用的进程的多字节字符集,而不是操作系统默认值。 |
CHECKPOINTTABLE |
指定一个默认检查点表。 |
CREDENTIALSTORELOCATION |
指定存储登录凭据的Oracle GoldenGate凭据存储的位置。 |
DDLTABLE |
指定支持的DDL历史表的非默认名称Oracle的DDL同步。 |
ENABLECATALOGNAMES |
支持SQL / MX数据库的三部分名称。 |
ENABLEMONITORING |
使Oracle GoldenGate Monitor可以查看和监视Oracle GoldenGate实例。 |
EXCLUDEWILDCARDOBJECTSONLY |
当TABLEEXCLUDE,SCHEMAEXCLUDE或CATALOGEXCLUDE参数包含通配符时,包含非通配符源表 |
GGSCHEMA |
指定包含数据库对象的模式的名称支持Oracle的DDL同步。 |
MARKERTABLE |
指定支持的DDL标记表的非默认名称Oracle的DDL同步。 |
MAXGROUPS |
指定可以在其中运行的最大进程组数Oracle GoldenGate实例。(默认25,协调的MAXTHREADS选项的值ADD REPLICAT命令(默认值为25),加上其他Replicat的数量在Oracle GoldenGate实例中提取组不能超过MAXGROUPS值,或ADD REPLICAT返回错误)。 |
MGRSERVNAME |
指定Manager作为窗口服务安装时的名称。 |
NAMECCSID |
如果SQL目录中的对象名称为DB2,则指定DB2 CCSID 与系统不同的CCSID。 |
NODUPMSGSUPPRESSION |
防止重复信息的自动抑制警告消息。 |
OUTPUTFILEUMASK |
指定Oracle GoldenGate进程可以使用的umask来创建跟踪文件和丢弃文件。 |
USEANSISQLQUOTES 或 NOUSEANSISQLQUOTES |
为引用的对象名称和文字启用SQL-92规则。 |
SYSLOG |
过滤写入到的GoldenGate消息的类型系统日志。 |
TRAILCHARSET |
当路径是不存储源字符集的旧版本时,指定源数据的字符集,或者覆盖存储在路径中的字符集。 |
UPREPORT |
指定Manager报告“提取”的频率复制正在运行的进程。每次进程之一开始或停止,生成事件。 |
USEIPV4 |
强制Oracle GoldenGate使用IPv4进行TCP / IP连接。 |
USEIPV6 |
强制Oracle GoldenGate使用Ipv6进行TCP / IP连接。 |
WALLETLOCATION |
指定主钥匙钱包的位置。 |
具体操作:
GGSCI (ogg1 as ogg@ogg1) 6> dblogin userid ogg@ogg1,password ogg
Successfully logged into database.
GGSCI (ogg1 as ogg@ogg1) 7> EDIT PARAMS ./GLOBALS
GGSCHEMA ogg
CHECKPOINTTABLE OGG.ggschkpt
配置GLOBAL文件后,需要通过推出并重新登录ggsci,使得配置生效。
5.4 创建检查点
参数说明来自OGG 12.1.2 (Reference for Oracle GoldenGate for Windows and UNIX)12c 261页。
在GLOBALS参数文件中使用CHECKPOINTTABLE参数来指定名称所有Replicat组可以在一个或多个中使用的默认检查点表Oracle GoldenGate实例。所有使用ADD REPLICAT创建的Replicat组命令将默认为此表,除非它被覆盖该命令的CHECKPOINTTABLE选项。
要创建检查点表,请使用GGSCI中的ADD CHECKPOINTTABLE命令。做不针对以集成模式配置的Replicat使用检查点表一个Oracle目标数据库。在该模式下不需要它,将被忽略。
有关更多信息,请参阅管理适用于Windows和UNIX的Oracle GoldenGate创建一个检查点表。
使用语法:
Syntax
CHECKPOINTTABLE [container. | catalog.] owner.table
[container. | catalog.]owner.table
The owner and name of the checkpoint table. Additionally, for an Oracle container
database, specify the correct pluggable database (container). For a SQL/MX database,
specify the correct catalog.
Example
CHECKPOINTTABLE finance.ggs.chkpt
或者直接GGSCI中的ADD CHECKPOINTTABLE命令。
GGSCI (ogg1) > dblogin userid ogg@ogg1,password ogg
Successfully logged into database.
GGSCI (ogg1 as ogg@ogg1) 4> ADD CHECKPOINTTABLE
No checkpoint table specified. Using GLOBALS specification (OGG.ggschkpt)
Successfully created checkpoint table OGG.ggschkpt。
Oracle GoldenGate检查点表在生产库配置完成。
5.5 其他一些参数说明
5.5.1 通配符排除参数
参数 |
说明 |
EXCLUDEWILDCARDOBJECTSONLY |
强制包含指定的非通配符的源对象在表或映射参数中,当一个排除参数包含一个通配符,否则将排除该对象。 |
MAPEXCLUDE |
从映射语句中排除源对象。 |
TABLEEXCLUDE |
从表语句中排除源对象。 |
CATALOGEXCLUDE |
将源对象排除在指定的源容器中来自Oracle GoldenGate配置的目录容器或目录名使用通配符来指定表或映射语句。 |
SCHEMAEXCLUDE |
不包括由指定源拥有的源对象所有者(如模式)来自Oracle GoldenGate配置当通配符用于指定表或映射表中的所有者。 |
5.5.2 DEFGEN参数
DEFGEN为源表或目标表创建具有数据定义的文件。数据定义当源表和目标表有不同的定义时,是否需要数据库有不同的类型。
参数 |
说明 |
CATALOGEXCLUDE |
从通配符中排除指定的源容器或目录规范。 |
CHARSET |
指定进程使用的多字节字符集,而不是读取参数文件时操作系统默认。 |
DEFSFILE |
标识出DEFGEN写定义的文件的名称。 |
NAMECCSID |
为i CCSID指定一个DB2,如果SQL目录中的对象名称是与系统不同的CCSID。 |
NOCATALOG |
防止容器或目录名被包含在其中元数据 |
SCHEMAEXCLUDE |
从通配符规范中排除指定的源模式。 |
SOURCEDB |
将数据源指定为登录信息的一部分 |
TABLE for DEFGEN |
标识要捕获定义的表 |
USERIDALIAS |
指定数据库连接信息。 |
5.5.3 DDL参数
这些参数控制Oracle GoldenGate DDL支持。其他参数可以需要使用DDL支持,但是这里的这些是专门处理DDL特性的。
参数 |
说明 |
DDL |
启用DDL支持和过滤DDL。 |
DDLERROR |
处理DDL复制期间发生的错误。 |
DDLOPTIONS |
除了过滤和过滤之外,还配置DDL复制的各个方面字符串替换。 |
DDLSUBST |
允许在DDL操作中替换字符串。 |
DDLTABLE |
指定DDL历史表的替代名称。 |
GGSCHEMA |
指定包含对象的模式的名称支持DDL复制 |
PURGEDDLHISTORY 或 PURGEDDLHISTORYALT |
控制DDL历史表的大小。 |
PURGEMARKERHISTORY |
控制DDL mark的大小 |
5.6 创建抽取进程
使用语法,说明来自OGG 12.1.2 (Reference for Oracle GoldenGate for Windows and UNIX)12c 197页(可以配置多组抽取进程)
Syntax for Windows, UNIX, and Linux
extract paramfile parameter_file
[atcsn CSN | aftercsn CSN]
[initialdataload]
[pauseatend | nopauseatend]
[processid PID]
[reportfile report_file]
[usesubdirs | nousesubdirs]
参数说明来自OGG 12.1.2 (Reference for Oracle GoldenGate for Windows and UNIX)12c 213-215页。
参数 |
操作说明 |
RECOVERYOPTIONS |
控制提取的恢复进程处理。 |
SOURCEDB |
指定数据源作为登录的一部分信息。 |
TCPSOURCETIMER或 NOTCPSOURCETIMER |
当这些系统反映不同时间时,调整传输到其他系统的记录的时间戳。 |
UPDATERECORDFORMAT |
控制图像之前和之后是否存储在一个轨迹记录或两个记录中。 |
DSOPTIONS |
当使用Teradata访问模块(TAM)时,指定提取处理选项。 |
EXTRACT |
将抽取组定义为在线进程 |
GETAPPLOPS或 IGNOREAPPLOPS |
控制来自除Replicat之外的所有进程的操作是否写入跟踪或文件。 |
GETREPLICATES或 IGNOREREPLICATES |
控制是否通过同一系统上的“提取”捕获复制操作。 |
PASSTHRU 或NOPASSTHRU |
控制表是否由数据泵处理是以直通模式提取还是需要数据定义。 |
PASSTHRUMESSAGES或 NOPASSTHRUMESSAGES |
控制是否将正在以直通模式处理的表写入消息提取到“提取”报告文件。 |
RMTTASK |
在远程系统上创建一个处理任务。 |
SOURCEISTABLE |
从源表中提取整个记录。 |
VAM |
表示正在使用Teradata访问模块(TAM)向事务处理提供事务数据。 |
COMPRESSDELETES 或 NOCOMPRESSDELETES |
控制Oracle GoldenGate是否仅将关键字或全部列写入跟踪以进行删除操作。 |
COMPRESSUPDATES 或 NOCOMPRESSUPDATES |
仅导致主键列和更改了要更新的列 |
EXCLUDETAG |
将Replicat或数据泵更改指定为从路径文件中排除。 |
FETCHOPTIONS |
控制Oracle GoldenGate获取数据的方式的某些方面 |
LOGALLSUPCOLS 或NOLOGALLSUPCOLS |
记录所需的列支持冲突检测和解决和集成复制。 |
SEQUENCE |
指定同步序列。 |
TABLE | MAP |
指定提取和控件的表列映射和转换。 |
TABLEEXCLUDE |
从提取中排除源表处理。 |
TARGETDEFS |
指定包含目标表的文件位于NonStop平台上的目标数据库的定义。 |
TRAILCHARSETASCII |
指定数据的ASCII字符集在z / OS上从DB2捕获,当两者兼容时存在ASCII和EBCDIC表。 |
TRAILCHARSETEBCDIC |
指定数据的EBCDIC字符集在z / OS上从DB2捕获,当两者兼容时存在ASCII和EBCDIC表。 |
EXTFILE |
指定提取数据写入本地系统的提取文件 |
EXTTRAIL |
指定提取的数据写入远程系统的TRAIL文件。指定TRAIL的数据写入本地系统的路径。 |
RMTFILE |
指定提取的数据写入远程系统的提取文件。 |
RMTHOST |
指定目标系统和管理端口号。 |
RMTTRAIL |
指定提取的数据写入远程系统的路径。 |
FORMATASCII |
以外部ASCII格式格式提取数据。 |
FORMATSQL |
将数据提取到等效的SQL语句中。 |
FORMATXML |
将提取的数据格式化为等效的XML语法。 |
NOHEADERS |
防止记录标题被写入小径。 |
BR |
控制提取的有界恢复功能。 |
CACHEMGR |
控制虚拟内存缓存管理器。 |
FLUSHSECS 或 FLUSHCSECS |
确定记录数据保留的时间量缓冲后被写入小径。 |
LOBMEMORY |
控制内存量和临时磁盘空间可用于缓存包含LOB的事务。 |
RMTHOSTOPTIONS |
指定被动提取组使用的TCP / IP连接的主机信息以外的连接属性。 |
THREADOPTIONS |
控制Extract在Oracle RAC中运行的方式。 |
TRANLOGOPTIONS |
支持捕获进程选项。指定在解析数据库日志时所需要的特殊参数 |
TRANSMEMORY |
控制内存量和临时磁盘空间可用于缓存未提交的交易数据。 |
WARNLONGTRANS |
定义一个长时间运行的事务并控制其频率检查并报告。 |
ROLLOVER |
指定跟踪文件的老化方式。 |
DECRYPTTRAIL |
当Extract用作数据时,需要解密数据泵并且必须对数据进行处理。 |
ENCRYPTTRAIL或 NOENCRYPTTRAIL |
控制跟踪或提取文件中数据的加密。 |
参照OGG 12.1 官方安装文档41页
注意:建议多组抽取进程,为缓解OGG日志抽取压力。
Group 1:
EXTRACT ora9a
SETENV (ORACLE_HOME = "/home/oracle/ora/product")
SETENV (ORACLE_SID = "oraa")
USERIDALIAS tiger1
RMTHOST sysb
RMTTRAIL /home/ggs/dirdat/rt
TABLE hr.emp;
TABLE hr.salary;
注意:
使用TRANLOGOPTIONS参数与DBLOGREADER选项参数文件如果RDBMS是Oracle 11.1.0.7或Oracle 11.2.0.2或更高版本11g R2版本。
使用HANDLECOLLISIONS(该参数依赖于表的主键进行逻辑判断,无主键表使用该参数会导致重复记录出现)
具体参数设置如下(可按照实际情况添加,可以大表拆分等,仅供参考):
ggsci> dblogin userid ogg@ogg1,password ogg
ggsci> add extract sa_ext tranlog threads 2 begin now (RAC)
add extract sa_ext tranlog threads 2 scn 4072415 –按照SCN加
单机: add extract sa_ext tranlog begin now
ggsci>add extract sb_ext tranlog threads 2 begin now
ggsci>add exttrail /ogg/install/dirdat/sa extract sa_ext, megabytes 100
ggsci>add exttrail /ogg/ogginstall/dirdat/sb extract sb_ext, megabytes 100
注:
tranlog:表示数据抓取的来源是数据库的redo数据。
threads 2:表示我们数据库有多少个threads,单实例基本上是1或者不设,rac就自己设置了。
begin now:表示我们在启动这个抓取进程的就去抓取数据。
./dirdat:表示trail文件的目录
sm:trail文件的前缀
extract sm_ext:值指定给那个进程用的(sm_ext)。
ggsci>edit param sa_ext
参数:
extract sa_ext
setenv (NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK")
SETENV (ORACLE_HOME = "/u01/app/oracle/product/11.2.0/dbhome_1")
--SETENV (ORACLE_SID = "ogg1")
userid ogg@ogg1,password ogg
TRANLOGOPTIONS DBLOGREADER
exttrail /ogg/ogginstall/dirdat/sa
TRANLOGOPTIONS LOGRETENTION DISABLED
DBOPTIONS ALLOWUNUSEDCOLUMN
TRANLOGOPTIONS ALTARCHIVELOGDEST +ARCHDG/ORCL/ARCHIVELOG
--归档路径可以不用设置,OGG能够识别
TRANLOGOPTIONS ALTARCHIVEDLOGFORMAT "arch_%t_%s_%r.arc"
--归档路径可以不用设置,OGG能够识别
DISCARDFILE /ogg/ogginstall/dirdat/sa_ext.dsc, APPEND, MEGABYTES 100
DISCARDROLLOVER AT 6:00
REPORTROLLOVER AT 6:00
REPORTCOUNT EVERY 1 HOURS, RATE
FETCHOPTIONS MISSINGROW ABEND
STATOPTIONS REPORTFETCH
WARNLONGTRANS 1H, CHECKINTERVAL 10m
DYNAMICRESOLUTION
FETCHOPTIONS FETCHPKUPDATECOLS
--DDLSUBST '/ora10g/oradata/src/' with '/ora11g/oradata/trg/' -- Create tablespace是可以复制的,可以支持复制到不同文件目录;
ddl include objname HR.* include objtype 'TRIGGER'
table HR.*;
ggsci>edit param sb_exti:
参数:
extract sb_ext
setenv (NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK")
SETENV (ORACLE_HOME = "/u01/app/oracle/product/11.2.0/dbhome_1")
--SETENV (ORACLE_SID = "ogg1")
userid ogg@ogg1,password ogg
TRANLOGOPTIONS DBLOGREADER
exttrail /ogg/ogginstall/dirdat/sb
TRANLOGOPTIONS LOGRETENTION DISABLED
DBOPTIONS ALLOWUNUSEDCOLUMN
TRANLOGOPTIONS ALTARCHIVELOGDEST +ARCHDG/ORCL/ARCHIVELOG
--归档路径可以不用设置,OGG能够识别
TRANLOGOPTIONS ALTARCHIVEDLOGFORMAT "arch_%t_%s_%r.arc"
--归档路径可以不用设置,OGG能够识别
DISCARDFILE /ogg/ogginstall/dirdat/sb_ext.dsc, APPEND, MEGABYTES 100
DISCARDROLLOVER AT 6:00
REPORTROLLOVER AT 6:00
REPORTCOUNT EVERY 1 HOURS, RATE
FETCHOPTIONS MISSINGROW ABEND
STATOPTIONS REPORTFETCH
WARNLONGTRANS 1H, CHECKINTERVAL 10m
DYNAMICRESOLUTION
FETCHOPTIONS FETCHPKUPDATECOLS
ddl include objname HR.* include objtype 'TRIGGER'
table HR.*;
ggsci>start sa_ext
ggsci>start sb_ext
重要参数说明:
TRANLOGOPTIONS:使用TRANLOGOPTIONS参数来控制抽取与之交互的方式事务日志或使用传递事务数据的API,具体取决于数据库或捕获模式。您可以使用多个TRANLOGOPTIONS语句同样的参数文件,也可以在相同的范围内指定多个选项如果允许的话,可以使用TRANLOGOPTIONS语句。只对数据库或数据库使用给定的TRANLOGOPTIONS选项的意图。
LOGRETENTION [ENABLED [DAYS n] | SR | DISABLED]:指定Oracle恢复管理器(RMAN)是否保留日志文件提取需求恢复。当您使用寄存器提取命令时,日志根据当前数据库,是否保留了发出命令的时间视交叉上核。保留日志直到手动删除。此参数不启用或在数据库内部禁用RMAN。
ALLOWUNUSEDCOLUMN | NOALLOWUNUSEDCOLUMN: 对Oracle的提取有效。控制在遇到未使用的列的表时提取异常。
DBOPTIONS 默认值是ALLOWUNUSEDCOLUMN。提取时遇到未使用的表列,它继续处理并生成一个警告。使用这个参数时,在目标或源定义文件中必须有相同的未使用的列该表必须指定为复制,以便正确的元数据映射可以执行。NOALLOWUNUSEDCOLUMN导致提取到未使用的列上。
DISCARDFILE | NODISCARDFILE:
如果一个进程从GGSCI中的START命令开始,则生成一个丢弃文件
默认如下:
■文件命名创建它的过程中,与一个。dsc扩展。如果进程是一个协调的副本,每个线程生成一个文件。每个文件的名字是附加了相应线程的线程ID。
■dirrpt子目录中的文件创建的Oracle GoldenGate安装目录。
■最大文件大小是50 mb。
■在启动时,如果丢弃文件存在,它是写新数据之前清除。如果一个进程是从操作系统的命令行开始的,不要生成默认的丢弃文件。
DISCARDROLLOVER:使用丢弃drollover参数为老化丢弃文件设置一个时间表。长时间或者连续运行,设置一个老化的时间表,防止丢弃文件被填满并且使这个过程结束,它提供了一个可以预见的档案集
在你的存档程序中加入。
REPORTROLLOVER: 使用REPORTROLLOVER参数强制报告文件按正常的时间进行,
而不是在一个过程开始的时候。对于长时间或连续的运行,设置一个老化进度控制活动报告文件的大小,并提供一个更可预测的集合可以包含在您的存档程序中的存档。
查看抽取进程运行报告,以及队列文件,正常,继续后面的操作
如果有长事物,可以设置一下参数:
BR:默认4小时。 BR BRINTERVAL 20M, BRDIR BR (20M表示检查间隔是20分钟)
场景:长事务还未结束,日志文件被删除;无需还原日志文件,收到commit后,直接从BR目录下的文件写入trial
文件。
Create tablespace是可以复制的,可以支持复制到不同文件目录;
样例: DDLSUBST '/ora10g/oradata/src/' with '/ora11g/oradata/trg/'
5.7、增长pump进程
传输进程要配置的参数:
ggsci>add extract sa_dmp EXTTRAILSOURCE /ogg/ogginstall/dirdat/sa
ggsci>add extract sb_dmp EXTTRAILSOURCE /ogg/ogginstall/dirdat/sb
ggsci>ADD RMTTRAIL /ogg/ogginstall/dirdat/sa, EXTRACT sa_dmp
ggsci>ADD RMTTRAIL /ogg/ogginstall/dirdat/sb, EXTRACT sb_dmp
注:
EXTTRAILSOURCE:指定提取文件作为数据源
ADD RMTTRAIL:在目标数据库上创建一个trail
ggsci>edit param sa_dmp
参数:(注意IP 建议是rac vip )
EXTRACT sa_dmp
PASSTHRU
DYNAMICRESOLUTION
RMTHOST 172.16.0.111, MGRPORT 7809
--RMTHOST 172.16.0.111, MGRPORT 7809, COMPRESS, compressthreshold 750
rmttrail /ogg/ogginstall/dirdat/sa
DISCARDFILE /ogg/ogginstall/dirdat/sa_ext.dsc, APPEND, MEGABYTES 100
DISCARDROLLOVER AT 6:00
REPORTROLLOVER AT 6:00
REPORTCOUNT EVERY 1 HOURS, RATE
TABLE HR.*;
ggsci>edit param sb_dmp
参数:
EXTRACT sb_dmp
PASSTHRU
DYNAMICRESOLUTION
RMTHOST 172.16.0.111, MGRPORT 7809
rmttrail /ogg/ogginstall/dirdat/sb
DISCARDFILE /ogg/ogginstall/dirdat/sb_ext.dsc, APPEND, MEGABYTES 100
DISCARDROLLOVER AT 6:00
REPORTROLLOVER AT 6:00
REPORTCOUNT EVERY 1 HOURS, RATE
TABLE HR.*;
ggsci>start sa_dmp
ggsci>start sb_dmp
六、目标库配置
6.1 MGR进程配置
具体设置如下:
ggsci>edit param mgr
输入:
port 7809
DYNAMICPORTLIST 7800-7810
AUTORESTART replicat *,RETRIES 3, WAITMINUTES 5, RESETMINUTES 30
LAGREPORTHOURS 1
LAGREPORTMINUTES 10
LAGCRITICALMINUTES 10
PURGEOLDEXTRACTS /ogg/ogginstall/dirdat/*, USECHECKPOINTS, MINKEEPHOURS 12
userid ogg@ogg,password ogg
PURGEDDLHISTORY MINKEEPDAYS 7, MAXKEEPDAYS 14, FREQUENCYHOURS 24
PURGEMARKERHISTORY MINKEEPDAYS 7, MAXKEEPDAYS 14, FREQUENCYHOURS 24
设置好后,重启MGR
ggsci>start mgr
6.2 全局参数的设置
具体操作:
GGSCI (ogg1 as ogg@ogg2) 6> dblogin userid ogg@ogg2,password ogg
Successfully logged into database.
GGSCI (ogg1 as ogg@ogg2) 7> EDIT PARAMS ./GLOBALS
GGSCHEMA ogg
CHECKPOINTTABLE OGG.ggschkpt
配置GLOBAL文件后,需要通过推出并重新登录ggsci,使得配置生效。
6.3 创建检查点
或者直接GGSCI中的ADD CHECKPOINTTABLE命令。
GGSCI (ogg1) > dblogin userid ogg@ogg2,password ogg
Successfully logged into database.
GGSCI (ogg1 as ogg@ogg1) 4> ADD CHECKPOINTTABLE
No checkpoint table specified. Using GLOBALS specification (OGG.ggschkpt)
Successfully created checkpoint table OGG.ggschkpt。
Oracle GoldenGate检查点表在目标库配置完成。
6.4、初始化同步
6.4.1 生产端查询相关信息
--生产端查询表格所在表空间
select distinct tablespace_name from dba_tables where owner='HR';
select distinct tablespace_name from dba_tab_partitions where table_owner='HR';
--备份端查询是否存在以上表空间,若没有则创建,如果不想创建,在后面的impdp中需要配置remap_tablespace参数。
--生产端索引所在表空间
select distinct tablespace_name from dba_indexes where owner in ('HR');
select distinct tablespace_name from dba_ind_partitions where index_owner in ('HR');
--生产端用户默认临时表空间:
select distinct temporary_tablespace from dba_users
6.4.2 检查undo表空间
注意:检查操作可选。
SQL> select file_name,tablespace_name,bytes/1024/1024/1024,AUTOEXTENSIBLE,maxbytes/1024/1024/1024 from dba_data_files where tablespace_name='UNDOTBS1';
SQL> select file_name,tablespace_name,bytes/1024/1024/1024,AUTOEXTENSIBLE,maxbytes/1024/1024/1024 from dba_data_files where tablespace_name='UNDOTBS2';
SQL> show parameter undo
SQL> select tablespace_name,sum(bytes/1024/1024/1024) from dba_data_files group by tablespace_name;
SQL> select tablespace_name,sum(bytes/1024/1024) from dba_free_space group by tablespace_name;
如果空间不够则添加:
SQL> ALTER tablespace UNDOTBS1 add datafile ' +MCDATA/ora11g/undotbs103.ora' size 3g autoextend on;
SQL> ALTER tablespace UNDOTBS2 add datafile ' +MCDATA/ora11g/undotbs03.ora' size 3g autoextend on;
6.4.3 生产端查询SCN
SQL> select to_char(current_scn) from v$database;
TO_CHAR(CURRENT_SCN)
----------------------------------------
2159117
6.4.4 确认长事务情况
在使用DATAPUMP工具导出前,需要在生产库确保GoldenGate抽取进程启动的时间点前的事务已经结束。
确认长事务情况,可通过下述命令实现:
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
col event for a30
col OSUSER for a10
col USERNAME for a10
col PROGRAM for a35
SELECT s.sid,s.serial#,s.status,s.username,t.start_time,s.WAIT_TIME, s.osuser, s.sql_id, s.program,START_DATE FROM gv$session s,gv$transaction t WHERE s.INST_ID=t.INST_ID and s.saddr=t.ses_addr order by t.start_time desc;
6.4.5 DATAPUMP方式初始化
检查源库对象下表的具体行数:
set serveroutput on size 1000000
set pages 50000
spool /tmp/hr_old.txt
DECLARE
v_cnt number;
BEGIN
FOR rec in (select 'HR.' || TABLE_NAME AS tanme from dba_tables where owner='HR' order by 1)
LOOP
execute immediate 'select count(*) from '||rec.tanme into v_cnt;
dbms_output.put_line(rpad(rec.tanme,40,'-')||v_cnt);
END LOOP;
END;
/
导出操作:
mkdir -p /ogg/expdp
chown -R oracle:oinstall /ogg/expdp
create or replace directory dir_dp as '/ogg/expdp';
Grant
read,write on directory dir_dp to ogg;
nohup expdp ogg/ogg schemas=HR
directory=dir_dp flashback_scn=2159117 dumpfile=HR.dmp logfile=HR.log &
目标端导入:
create or replace directory dir_dp as
'/ogg/expdp';
Grant read,write on directory dir_dp to ogg;
nohup impdp ogg/ogg schemas=HR directory=dir_dp dumpfile=HR.dmp logfile=HR.log &
(需要创建)
--导入前检查目标端表空间的大小
select
segment_type,count(*),sum(bytes/1024/1024) from dba_segments where owner='HR' group by segment_type;
检查目标库对象下表的具体行数:
set serveroutput on size 1000000
set pages 50000
spool /tmp/hr_target.txt
DECLARE
v_cnt number;
BEGIN
FOR rec in (select 'HR.' || TABLE_NAME AS
tanme from dba_tables where owner='HR' order by 1)
LOOP
execute immediate 'select count(*) from
'||rec.tanme into v_cnt;
dbms_output.put_line(rpad(rec.tanme,40,'-')||v_cnt);
END LOOP;
END;
/
6.4.6备份库相关操作
英文:
Constraints must be disabled in
nonintegrated Replicat mode because Oracle GoldenGate replicates DML that
results from the firing of a trigger or a cascade constraint. If the same
trigger or constraint gets activated on the target table, it becomes redundant
because of the replicated version, and the database returns an error.
约束必须禁用的非集成的复制模式因为Oracle GoldenGate复制DML从触发和级联约束。如果在目标表上激活相同的触发器或约束,则由于复制的版本而变得冗余,数据库返回错误。
备份库禁用触发器
select
'alter trigger '||owner||'.'||trigger_name||' disable;' from dba_triggers where
owner='HR' and status='ENABLED';
官方文档是:
exec
dbms_ddl.set_trigger_firing_property('HR','UPDATE_JOB_HISTORY',false);
alter
session set constraint=deferred;
对于表的主键列进行更新时,如果更新语句为set x=x+n或者更新过程中涉及到主键值的偏移,这种事务在源端可以正常执行,因为更新操作是在同一个语句中完成的。而对于目标端来说,可能会把源端的一个更新语句转换为多个更新语句如;
alter
session set constraint = deferred;
通过10046跟踪可以得到goldengate应用进程在执行对pk的update前后会执行下面的两个语句。执行更新操作前它会把constraint设置为deferred状态,更新完成之后,再设置成immediate状态。
alter
session set constraint = immediate;
Oracle
11gR2 11.2.0.2后来的版本,你可以使用dboptions参数
与延迟级联的检查和执法deferrefconst选项
更新和级联删除约束,直到事务提交的复制。
■其他Oracle版本,您必须禁用触发器和完整性约束
改变手动忽略复制的数据库用户。
Oracle11.2.0.2之后中的存储过程DBMS_XSTREAM_GG.ENABLE_TDUP_WORKSPACE可以解决这个问题,使用这个存储过程不再需要对表的主键状态进行修改,也不需要在Goldengate的参数文件中使用handletpkupdate参数。
begin
dbms_xstream_gg.enable_tdup_workspace();
end;
/
如果禁用:
begin
dbms_xstream_gg.disable_tdup_workspace();
end;
/
移除JOB:
select
job,log_user,schema_user,next_date,broken from dba_jobs;
exec
dbms_job.remove(<that job id>);
exec
dbms_ijob.remove(21);
exec
dbms_job.broken(186,true)
select *
from dba_scheduler_jobs where owner= 'HR';
禁用:
DBMS_SCHEDULER.DISABLE('job1,
job2, job3, sys.jobclass1, sys.jobclass2');
或删除:
DBMS_SCHEDULER.DROP_JOB
(job_name => 'my_job1');
禁用外键:
SELECT
'alter table '||owner||'.'||table_name||' disable constraint
'||constraint_name||';' from dba_constraints where constraint_type='R' and
owner in ('HR');
6.5、创建replicat进程
参数说明来自OGG
12.1.2 (Reference for
Oracle GoldenGate for Windows and UNIX)12c 215-216页
参数说明:
参数 |
参数说明 |
TARGETDB |
将数据源指定为登录信息的一部分。 |
HAVEUDTWITHNCHAR |
在utf - 8中进行复制以连接到utf - 8,以防止数据丢失被处理的记录是具有用户定义的类型NCHAR / |
BEGIN |
指定复制处理的起点。SPECIALRUN时需要都是确定的。 |
BULKLOAD |
将数据直接加载到Oracle |
END |
指定复制处理的停止点。需要使用时SPECIALRUN。 |
GENLOADFILES |
生成与数据库负载兼容的运行和控制文件 实用程序。 |
REPLICAT |
指定在线更改同步的复制组。 |
SPECIALRUN |
用于一次性处理,不需要从运行中进行检查点 来运行。 |
ALLOWNOOPUPDATES | NOALLOWNOOPUPDATES |
强制使用所有的不操作更新集合中的列和WHERE子句。 |
APPLYNOOPUPDATES | NOAPPLYNOOPUPDATES |
强制执行一个无操作的更新,在设置和WHERE子句中使用所有列。 |
ASSUMETARGETDEFS |
假设源表和目标表具有相同的列结构。 |
INSERTALLRECORDS |
为记录的每一个变更操作插入一个新的记录到目标表中。 |
INSERTDELETES | NOINSERTDELETES |
将删除插入。 |
INSERTMISSINGUPDATES | NOINSERTMISSINGUPDATES |
当目标行不存在时,将更新转换为插入。 |
INSERTUPDATES | NOINSERTUPDATES |
将更新插入 |
TABLE | MAP |
指定一个或多个源表和目标表之间的关系,并控制列映射和转换。 |
MAPEXCLUDE |
将源表排除在映射语句中提供的通配符规范中。 |
PRESERVETARGETTIMEZONE |
覆盖默认的还原会话时区。 |
REPLACEBADNUM |
指定映射数列时遇到的无效数字数据的全局替代值。 |
SOURCECHARSET |
控制源字符集是否将其转换为目标字符集。 |
SOURCETIMEZONE |
指定用于将副本用作会话时区的源数据库的时区。 |
SPACESTONULL | NOSPACESTONULL |
控制只包含空格的目标列是否转换为空。 |
TABLE for Replicat |
指定一个表或表,当一行满足给定的筛选条件时,将执行哪些事件操作。 |
UPDATEINSERTS | NOUPDATEINSERTS |
转换insert操作,以更新在参数文件中指定的所有映射语句的操作。 |
UPDATEDELETES | NOUPDATEDELETES |
将删除,更新。 |
UPDATEDELETES | NOUPDATEDELETES |
将插入,更新。 |
USEDEDICATEDCOORDINATIONTHREAD |
当副本处于协调模式时,指定用于屏障事务的专用线程。 |
EXTFILE |
在包含数据的本地系统中定义提取文件的名称 复制。用于一次性处理。 |
EXTTRAIL |
定义包含要复制的数据的路径。用于一次性处理。 |
HANDLECOLLISIONS | NOHANDLECOLLISIONS |
处理重复和缺失的错误记录。 |
HANDLETPKUPDATE |
防止与复制临时主键更新相关的约束错误。 |
OVERRIDEDUPS | NOOVERRIDEDUPS |
在现有的目标记录上覆盖复制的插入记录复制记录发生错误。 |
RESTARTCOLLISIONS | NORESTARTCOLLISIONS |
控制是否在Oracle之后应用handlecolli剂逻辑 因为有冲突,金酸盐已经减少了。 |
REPERROR |
决定复制的响应数据库错误。 |
REPFETCHEDCOLOPTIONS |
确定需要对来自源数据库的fetch进行操作的副本如何响应。 |
SHOWSYNTAX |
导致复制它的SQL语句报告文件。 |
SQLDUPERR |
指定显示重复记录的数据库错误编号。使用 OVERRIDEDUPS |
WARNRATE |
通过将类似的SQL语句安排到数组中,并以加速的速度应用它们,可以提高复制处理的吞吐量。 |
BATCHSQL |
通过将类似的SQL语句安排到数组中,并以加速的速度应用它们,可以提高复制处理的吞吐量。 |
COORDSTATINTERVAL |
协调器线程向应用程序线程发送请求的时间间隔。 |
COORDTIMER |
协调器线程等待应用程序启动的时间量。 |
DEFERAPPLYINTERVAL |
指定在将复制操作应用到目标数据库之前等待复制的时间长度。 |
GROUPTRANSOPS |
控制将被分组到复制事务中的记录的数量。 |
INSERTAPPEND | NOINSERTAPPEND |
控制Replicat是否使用Oracle APPEND提示INSERT语句。 |
MAXDISCARDRECS |
限制报告的丢弃记录的数量丢弃文件。 |
MAXSQLSTATEMENTS |
控制准备的SQL语句的数量可以被Replicat使用。 |
MAXTRANSOPS |
将大型源事务划分为较小的事务目标系统。 |
NUMFILES |
控制内存的初始分配用于存储关于表的信息 由GoldenGate处理 |
TRANSACTIONTIMEOUT |
指定一个时间间隔,之后复制将会提交它的开放目标事务并回滚任何它包含的不完整的源事务,保存当整个源事务就绪时,它们就会出现 被应用。 |
具体参数如下:
ggsci>dblogin
userid ogg@ogg2,password ogg
ggsci>add
replicat sa_rep exttrail /ogg/ogginstall/dirdat/sa
ggsci>add
replicat sb_rep exttrail /ogg/ogginstall/dirdat/sb
ggsci>
edit param sa_rep
replicat
sa_rep
setenv
(NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK")
SETENV
(ORACLE_HOME = "/u01/app/oracle/product/11.2.0/dbhome_1" )
--SETENV
(ORACLE_SID = "ogg2")
userid
ogg@ogg,password ogg
SQLEXEC "ALTER
SESSION SET CONSTRAINTS=DEFERRED"
--HANDLECOLLISIONS
ASSUMETARGETDEFS
ALLOWNOOPUPDATES
NUMFILES
3000
REPERROR
DEFAULT, DISCARD
DISCARDFILE
/ogg/ogginstall/dirdat/sa_rep.dsc, append megabytes 50
BATCHSQL
OPSPERBATCH 5000
GROUPTRANSOPS
100
MAXTRANSOPS
1000
CHECKSEQUENCEVALUE
DDLERROR
DEFAULT IGNORE RETRYOP MAXRETRIES 3 RETRYDELAY 5
GETTRUNCATES
--12.2ogg 经测试,默认支持truncate
表
--NOCOMPRESSUPDATES
--DB2平台
--map user.table
target user.table, filter (@GETENV("transaction","csn")
> number);
--MAP NQ_RUN.EXECINDEXSHOWJOUR,
TARGET NQ_RUN.EXECINDEXSHOWJOUR, KEYCOLS (INIT_DATE, SERIAL_NO); --虚拟主键应用方式。
--MAPEXCLUDE
USER.TABLE;
MAP HR.*,
TARGET HR.*;
ggsci>
edit param sb_rep
replicat
sb_rep
setenv
(NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK")
SETENV (ORACLE_HOME
= "/u01/app/oracle/product/11.2.0/dbhome_1" )
--SETENV
(ORACLE_SID = "ogg2")
userid
ogg@ogg,password ogg
SQLEXEC
"ALTER SESSION SET CONSTRAINTS=DEFERRED"
--HANDLECOLLISIONS
ASSUMETARGETDEFS
ALLOWNOOPUPDATES
NUMFILES
3000
REPERROR
DEFAULT, DISCARD
DISCARDFILE
/ogg/ogginstall/dirdat/sb_rep.dsc, append megabytes 50m
BATCHSQL
OPSPERBATCH 5000
GROUPTRANSOPS
100
MAXTRANSOPS
1000
CHECKSEQUENCEVALUE
DDLERROR
DEFAULT IGNORE RETRYOP MAXRETRIES 3 RETRYDELAY 5
GETTRUNCATES
--NOCOMPRESSUPDATES
--DB2平台
--map NQ_RUN_HIS.HIS_EXECINDEXSHOWJOUR,
target NQ_RUN_HIS.HIS_EXECINDEXSHOWJOUR, filter
(@GETENV("transaction","csn") > 5144447346);
--MAP
NQ_RUN.EXECINDEXSHOWJOUR, TARGET NQ_RUN.EXECINDEXSHOWJOUR, KEYCOLS (INIT_DATE,
SERIAL_NO);
--MAPEXCLUDE
USER.TABLE;
MAP HR.*,
TARGET HR.*;
注:
oracle 11204不支持replicat进程中的DBOPTIONS DEFERREFCONST参数,如果要使这个参数正常生效必须在数据库中配置ENABLE_GOLDENGATE_REPLICATION
= TRUE。
即:ALTER SYSTEM SET
ENABLE_GOLDENGATE_REPLICATION = TRUE SCOPE=BOTH;
注意:无法使用HANDLECOLLISIONS(该参数依赖于表的主键进行逻辑判断,无主键表使用该参数会导致重复记录出现)。
七、在初始化完成后启动还原程序
ggsci>start
sa_rep atcsn 2159117
ggsci>start
sb_rep atcsn 2159117
八、测试
请根据自己的情况进行相应的DDL,DML等测试。
例如:
create table hr.t2 as select object_id from
dba_objects;
commit;
select count(*) from hr.t2;
create table hr.t3(id int);
begin
for i in 90000..100000
loop
insert into hr.t3 values(i);
commit;
end loop;
end;
/
select count(*) from hr.t3;