博文结构图以下:算法
|
IPsql |
系统数据库 |
Oracle版本数组 |
OGG版本缓存 |
源端安全 |
172.16.10.16/36服务器 |
RHEL6.5网络 |
oracle11204session |
12.1架构 |
目标端 |
172.16.10.154 |
RHEL6.5 |
oracle11204 |
12.1 |
同步用户为:hr。
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
一、尽可能避免OGG 双向同步,ogg双活安装须要业务避免更改同一行记录。
二、配置Extract,为了不数据丢失,在启动extract 以前,必须确保全部open 的事务都已经完成。(或者在配置时,中止全部中间件以及监听业务)
三、特别大的表,或者操做太频繁的表,建议单独拆成多组抽取,还原进程。
四、TRAIL是否压缩,以及到期时间,字符集设置,ogg管理密码是否加密。
五、自动过滤重复时段的数据冲突,用于不能停机执行初始化,打开该参数后不会将数据错误报到discard文件中。
六、rac ogg 须要安装到共享目录上。
七、源库和目标库设置参数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、安装的全部主机尽可能时间保持一直。
九、使用TRANLOGOPTIONS参数与DBLOGREADER选项参数文件若是RDBMS是Oracle 11.1.0.7或Oracle 11.2.0.2或更高版本11g R2版本。
十、DDL 数据库版本高于10G,不须要关闭回收站。
在经典捕获模式下,Oracle GoldenGate Extract进程从源库上的Oracle重作或归档日志文件或备库上的归档日志中捕获数据更改。
经典捕捉彻底支持大多数Oracle数据类型,对复杂数据类型提供有限的支持。经典捕获是最初的Oracle GoldenGate捕获方法。对于Oracle GoldenGate支持的任何源Oracle RDBMS,您可使用经典捕获,但多租户容器数据库除外。
NOLOGGING
VARRAY,源数据库兼容性设置在11.2.0.0.0如下的LOB。SECUREFILE
源数据库兼容性设置为低于11.2.0.0.0的LOB支持。NOLOGGING
源数据库兼容性设置为低于11.2.0.0.0的LOB支持。
在集成捕获模式下,Oracle GoldenGate Extract进程直接与数据库登陆服务器进行交互,以逻辑更改记录(LCR)的形式接收数据更改。图显示了集成捕获模式下的提取配置。
与经典捕捉相比,集成捕捉支持更多的数据和存储类型,支持更加透明。
如下是集成捕获的一些额外好处:
彻底支持:为了支持全部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在直接模式下应用如下功能:
SQLEXEC
参数TABLE
或MAP
参数EVENTACTIONS
处理USENATIVEOBJSUPPORT
捕获UDT,则集成的Replicat将将其应用于入站服务器,不然将由Replicat直接处理。
要使用集成的Replicat:
在非集成模式下,Replicat进程使用标准SQL将数据直接应用到目标表。在这种模式下,Replicat的操做以下:
阅读Oracle GoldenGate跟踪。
执行数据过滤,映射和转换。
构造表明源数据库DML或DDL事务的SQL语句(按提交顺序)。
经过Oracle调用接口(OCI)将SQL应用于目标。
使用不一样的捕获和应用模式,能够一块儿使用如下捕捉和应用模式:
经典捕获(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数据类型,并保持源事务完整性。您能够根据须要将并行度设置调整到所需的应用性能级别。
磁盘空间要求: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环境要求:
一、将Oracle GoldenGate Manager流程(和惟一的管理器)注册为集群管理的资源, Manager必须惟一的Oracle GoldenGate进程,即集群管理软件启动中止,由于它是管理全部其余进程的父进程,将Oracle GoldenGate集成到集群中
二、若是集群使用一个虚拟IP地址(如Oracle Clusterware),您可能须要为管理程序获取可用的固定IP地址。VIP必须公共子网上的一个可用的IP地址,不能肯定经过DHCP。在提取数据泵的参数文件中,指定其中的VIP远程管理器做为RMTHOST参数的输入值。其余的
访问Manager的GoldenGate产品也应该使用VIP。
三、确保集群中的全部节点具备相同的兼容参数
设置。
四、当您配置管理器时,添加AUTOSTART和AUTORESTART参数该管理器将自动启动复制过程。在须要的时候,能够控制提取、复制和其余Oracle GoldenGate进程GoldenGate用户界面。
五、只在一个节点上安装共享驱动器。这阻止了进程的存在开始另外一个节点。在全部节点上使用相同的挂载点。
六、能够专门为OGG 添加一个服务。
OGG 12.1支持的类型:
■ 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
■ NUMBER up to the maximum size permitted by Oracle
■ BINARY FLOAT
■ BINARY DOUBLE
■ CHAR
■ VARCHAR2
■ LONG
■ NCHAR
■ NVARCHAR2
■ NCHAR and NVARCHAR2 multi-byte character data types
■ Multi-byte data stored in CHAR and VARCHAR2 columns
■ RAW
■ LONG RAW
■ DATE
■ TIMESTAMP
注意:
Oracle GoldenGate不支持负的日期。
■间隔一天,间隔年只是若是目标大小的支持列等于或大于源的列。
■Oracle GoldenGate支持捕获和时间戳和时间复制带为UTC偏移(timestamp 2011-01-01 8:00:00 - 8”)。
■时间戳和时区的TZR(区域ID)是复制支持数据的变化,而不是初始荷载,为返回,或操做的地方必须从数据库中提取列。在这些状况下,区域id是当选定列时,由数据库转换为时间偏移量。复制将时间戳复制为具备时间偏移值的日期和时间数据。
■ CLOB
■ NCLOB
■ BLOB
■ SECUREFILE and BASICFILE
Oracle GoldenGate不支持过滤、列映射,或操纵大于4K的大对象。
支持如下XML类型:
■集成捕获模式,Oracle GoldenGate支持XMLType列XMLType表存储为XML CLOB,XML和XML二进制对象关系。
■经典的捕获模式,Oracle GoldenGate支持XMLType列存储XML和XML二进制字符
用户定义或抽象类型
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
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支持每一个表的最大列数由数据库支持。
– Range partitioning
– Hash Partitioning
– Interval Partitioning
– System Partitioning
– Composite Partitioning
– Virtual Column-Based Partitioning
– Reference Partitioning
– List Partitioning
不包括如下类型的表(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
当源数据库是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.
– 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触发器。
■GoldenGate支持DDL操做4 MB的大小。GoldenGate用字节来度量DDL语句的大小,而不是字符。这大小限制包括包、过程和函数。实际的大小限制DDL的支持是近似的,由于大小不只包括语句文本,但也包括Oracle GoldenGate的维护开销对象名称的长度、DDL类型和其余特征在内部保存DDL记录。
■GoldenGate支持全局临时表(GTT)DDL操做要清晰可见,这样它们就能够被复制。您必须设置DDLOPTIONS容许这个操做的参数,由于它不是默认设置的
集成和经典的捕获模式
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。
索引组织表的不支持限制,这些适用于经典拍摄模式。
■启用密钥压缩的IOT(由COMPRESS关键字指示key_compression子句)在经典捕获模式下不受支持,可是支持集成捕获模式。
不支持的视图,这些限制适用于集成和经典的捕获模式。
■GoldenGate支持捕获从一个视图提取初始载荷模式(直接从源视图获取,而不是重作日志)。
■GoldenGate不捕获变动数据从一个视图,可是它支持从视图的底层表中捕获。
■GoldenGate能够复制到一个视图可更新,只要视图是固有的。源表的结构和目标视图必须是相同的
在经典的和集成的模式中获得了物化视图
如下的局限性。
■物化视图不支持建立ROWID。
对Oracle DML中对象和操做的支持细节为Oracle数据库安装和配置Oracle GoldenGate
■能够建立物化视图日志与ROWID。
■源表必须有一个主键。
■截断的物化视图不支持。您可使用DELETE FROM声明。
■DML(但不是DDL)从一个完整的刷新物化视图的支持。若是DDL
须要支持此特性,打开Oracle GoldenGate支持案例。
■为Replicat Create MV命令必须包括更新条款
■物化视图能够被复制或底层基表(s),但不是二者都有
不支持的集群表:
在集成和经典的捕获模式中支持索引集群,在两种模式中都不支持散列集群。在经典的捕获模式下:
■加密和压缩群集表不支持在经典的捕捉。
■提取在经典的捕获模式捕获DML更改索引集群表,若是集群因子大小保持不变。任何致使集群大小的DDL增长或减小可能致使提取到该表上的后续DML不正确。
不支持的序列,这些适用于集成和经典的捕获模式。
■GoldenGate不支持复制的序列值active - active双向配置。
■缓存大小和源和目标序列的增量区间必须的是相同的。缓存能够是任何大小,包括0(NOCACHE)。
■序列能够设置为循环周期,但源和目标数据库必须以一样的方式设置。
以下DML在经典或集成捕获模式中都不支持:
■REF
■序列值在一个active - active双向配置
■Database Replay
■建立外部表
■无形的列不支持经过经典或综合提取。
如下是经典捕获模式中不支持:
■Exadata混合柱状压缩
■捕获与OLTP表压缩表
■捕获与压缩的表空间和表建立或修改
■捕获从加密和压缩群集表
■无形的列
■分布式事务。在Oracle版本11.1.0.6和更高版本中,能够捕获这些事务若是您经过如下方式使它们不分布命令,要求从新启动数据库。
改变系统设置_CLUSTERWIDE_GLOBAL_TRANSACTIONS = FALSE;
■RAC分布式XA和PDML分布式事务
■enabled-tables版本
■标识列
"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
■ 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)支持大小写敏感性。
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';
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);
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');
select owner,table_name from dba_tables where compression='ENABLED';
或者按用户查找:
select owner,table_name from dba_tables where owner in ('HR') and compression='ENABLED';
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';
注释:源库和目标库都安装。
相关目录,并把安装软件上传上去:
官方建议软件安装到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
以上所建立的目录的做用:
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 |
当事物所须要的内存超过已分配内存时,默认存储在这个目录 |
查看以及修改语句以下(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;
一、确认全部表的状态是否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.
二、打开表级附加日志
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;
三、确认已经打开标记附加日志。
select owner,table_name from dba_tables where owner in ('HR') and logging='NO';
注意:
Oracle 11.2.0.4 以及以后版本数据库,源库以及目标库必须开启参数。
ENABLE_GOLDENGATE_REPLICATION
一、启用参数 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;
二、设置闪回查询
若是源库须要开启闪回查询,建议增大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;
三、须要注意的参数
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
注意:要按照实际状况分配大小(目标库、源库执行如下操做)。
建立表空间是为了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;
来自(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 捕获方法一块儿使用。
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安装).
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.
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.
查看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 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.*)
使用语法,说明来自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
参数说明来自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,使得配置生效。
参数说明来自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检查点表在生产库配置完成。
参数 |
说明 |
EXCLUDEWILDCARDOBJECTSONLY |
强制包含指定的非通配符的源对象在表或映射参数中,当一个排除参数包含一个通配符,不然将排除该对象。 |
MAPEXCLUDE |
从映射语句中排除源对象。 |
TABLEEXCLUDE |
从表语句中排除源对象。 |
CATALOGEXCLUDE |
将源对象排除在指定的源容器中来自Oracle GoldenGate配置的目录容器或目录名使用通配符来指定表或映射语句。 |
SCHEMAEXCLUDE |
不包括由指定源拥有的源对象全部者(如模式)来自Oracle GoldenGate配置当通配符用于指定表或映射表中的全部者。 |
DEFGEN为源表或目标表建立具备数据定义的文件。数据定义当源表和目标表有不一样的定义时,是否须要数据库有不一样的类型。
参数 |
说明 |
CATALOGEXCLUDE |
从通配符中排除指定的源容器或目录规范。 |
CHARSET |
指定进程使用的多字节字符集,而不是读取参数文件时操做系统默认。 |
DEFSFILE |
标识出DEFGEN写定义的文件的名称。 |
NAMECCSID |
为i CCSID指定一个DB2,若是SQL目录中的对象名称是与系统不一样的CCSID。 |
NOCATALOG |
防止容器或目录名被包含在其中元数据 |
SCHEMAEXCLUDE |
从通配符规范中排除指定的源模式。 |
SOURCEDB |
将数据源指定为登陆信息的一部分 |
TABLE for DEFGEN |
标识要捕获定义的表 |
USERIDALIAS |
指定数据库链接信息。 |
这些参数控制Oracle GoldenGate DDL支持。其余参数能够须要使用DDL支持,可是这里的这些是专门处理DDL特性的。
参数 |
说明 |
DDL |
启用DDL支持和过滤DDL。 |
DDLERROR |
处理DDL复制期间发生的错误。 |
DDLOPTIONS |
除了过滤和过滤以外,还配置DDL复制的各个方面字符串替换。 |
DDLSUBST |
容许在DDL操做中替换字符串。 |
DDLTABLE |
指定DDL历史表的替代名称。 |
GGSCHEMA |
指定包含对象的模式的名称支持DDL复制 |
PURGEDDLHISTORY 或 PURGEDDLHISTORYALT |
控制DDL历史表的大小。 |
PURGEMARKERHISTORY |
控制DDL mark的大小 |
使用语法,说明来自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/'
传输进程要配置的参数:
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
具体设置以下:
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
具体操做:
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,使得配置生效。
或者直接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检查点表在目标库配置完成。
--生产端查询表格所在表空间
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
注意:检查操做可选。
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;
SQL> select to_char(current_scn) from v$database;
TO_CHAR(CURRENT_SCN)
----------------------------------------
2159117
在使用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;
检查源库对象下表的具体行数:
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;
/
英文:
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');
参数说明来自OGG 12.1.2 (Reference for Oracle GoldenGate for Windows and UNIX)12c 215-216页
参数说明:
参数 |
参数说明 |
TARGETDB |
将数据源指定为登陆信息的一部分。 |
HAVEUDTWITHNCHAR |
在utf - 8中进行复制以链接到utf - 8,以防止数据丢失被处理的记录是具备用户定义的类型NCHAR / NVARCHAR2属性。 |
BEGIN |
指定复制处理的起点。SPECIALRUN时须要都是肯定的。 |
BULKLOAD |
将数据直接加载到Oracle SQL * Loader实用程序的接口中。 |
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;