一．Supported Oracle data types
1.1 Numeric data types
（1） NUMBER up to the maximum sizepermitted by Oracle
（2） BINARY FLOAT
（3） BINARY DOUBLE
Limitations of support
The support of rangeand precision for floating-point numbers depends on the host machine. Ingeneral, the precision is accurate to 16 significant digits, but you shouldreview the database documentation to determine the expected approximations.Oracle GoldenGate rounds or truncates values that exceed the supportedprecision.
1.2 Character data types
1.3 Multi-byte character types
（1） NCHAR and NVARCHAR2 multi-bytecharacter data types
（2） Multi-byte data stored in CHAR andVARCHAR2 columns
Limitations of support
（1） For OracleGoldenGate to support multi-byte character data, the source and target databasesmust be identical. Transformation, filtering, and other manipulation are not supported.
（2） Multi-bytecharacters can be used with limitations in MAP and TABLE parameter statementssuch as string-based conversion functions and WHERE clauses. The code point fora multi-byte character must be represented within an escape sequence, for example“\u20ac.”
（3） Multi-bytedata is supported whether the length semantics are in bytes or characters. Ifthe semantics setting of the source database is BYTE and the setting of thetarget is CHAR, use the Replicat parameter SOURCEDEFS in your configuration,and place a DEFGEN generated definitions file on the target. These steps arerequired to support the difference in semantics, whether or not the source andtarget data definitions are identical. Replicat refers to the definitions fileto determine the upper size limit for fixed-size character columns.
（4） If thedatabase has an NLS_NCHAR_CHARACTERSET value other than AL16UTF16, use the VARWIDTHNCHARparameter to force NCHAR data to be written to the trail with 2-byte lengthinformation.
1.4 Binary data types
（2） LONG RAW
1.5 Date and timestamp data types
（2） TIMESTAMP (see Limitations ofsupport)
Limitations of support
（1） By default,only TIMESTAMP WITH TIME ZONE specified as a UTC offset is supported. To supportTIMESTAMP WITH TIME ZONE specified as TZR (Region ID), you must use the Extractparameter TRANLOGOPTIONS with either the INCLUDEREGIONID or INCLUDEREGIONIDWITHOFFSEToption. Without TRANLOGOPTIONS, Extract abends on this data type.
（2） TIMESTAMPWITH TIME ZONE as TZR is not supported by Oracle GoldenGate for initial loads, foruse with the SQLEXEC feature, or for operations where the column must befetched from the database. In these cases, the region ID is converted to a timeoffset by the Oracle database engine when the column is selected. Replicat willreplicate the column data as date and time data with a time offset value.
（3）Because ofthe way that the Oracle database normalizes TIMESTAMP WITH LOCAL TIME ZONE tothe local time zone of the database, the timestamps do not transfer correctlybetween databases that are in different time zones. Timestamps will transfercorrectly between databases in the same time zone if you set the time zone ofthe Replicat session to the timezone of the database. Include the followingparameter statement in the Replicat parameter file, placing it after the USERIDparameter, but before the first MAP statement:
SQLEXEC"ALTER SESSION SET TIME_ZONE = <value of dbtimezone>"
（4） OracleGoldenGate does not support negative dates.
1.6 Large object data types
Limitations of support
（1） SECUREFILE and BASICFILE are bothsupported.
（2） Store large objects out of row ifpossible.
（3） LOB capturediffers between earlier and later versions of Oracle:
Oracle versions earlierthan 10g:
In-row LOBs are captured from the redo log, but outof-rowLOBs are fetched from the database. If a value getsdeleted before a fetch occurs, Extract writes a null to the trail. If a valuegets updated before the fetch occurs, Extract writes the updated value. Toprevent these inaccuracies, try to keep Extract latency low. The OracleGoldenGate documentation provides guidelines for tuning process performance.
In-rows的情况从redo log captured，out of-row从lobsegments里进行fetch。
这里in-row 和 outof-row的区别，可以参考我的blog：
Oracle LOB 详解
Oracle 10g and later,BASICFILE LOBs:
All BASICFILELOBs are captured from the redo log, whether stored in-row or out-of row. However,Extract will continue to fetch LOBs under the following conditions, for whichit will issue a warning:
--对于BASICFILE LOBs，不管是in-row 还是out-ofrow都是从redo log 里进行captured，但是在一下情况下会从LOBs里进行fetch：
1) Extract determines that a LOB instanceis invalid.
2) The LOB data is missing from the redolog. This can occur if the BASICFILE LOB is created with the no_logging option.
3) The LOB is created with the CACHEattribute.
4) A LOB is only partially updated. Oracle GoldenGate does not support partial column data.Extract assumes LOB data to be incomplete if the LOB data does not start with aLOB reset record or does not start at the first byte and does not end at thelast byte, according to the new LOB length. Partial updates can be generated bythe following OCI calls: OCILOBWrite(), OCILobAppend(), OCiLobCopy(), OCILobLoadFromFile(),OCILobTrim(), and by updated made through procedures in the dbms_lob package.
5) Extract detects an anomaly in the LOBdata, such as a missing page number, missing END MARKER, or a mismatch betweenthe size that was captured and the expected size.
Oracle 10g and later,SECUREFILE LOBs:
Oracleintroduced SECUREFILE LOBs in 11g Release 1. SECUREFILE LOBs are captured fromthe redo logs only when the update is complete and the LOB is not transformed(the column is not compressed or encrypted or deduplicated) and storedout-of-row.
--SECUREFILE LOBs是11gR1里推出来的，当update完成，并且这个LOB 没有进行compress 或者encrypted 或者deduplicated，且数据存在lobsegment里。满足这种情况才从redo log里进行captured。
Extract will fetchSECUREFILE LOBs under the following circumstances:
1） The LOB is stored in-row.
2） The LOB is transformed either with compression or encryption.
3） The LOB is created with the CACHE attribute.
4） Extract determines that a LOB instance is invalid.
5）LOB data is missing from the redo log. This can occur if the LOB is created with any of following options:deduplicate, no_logging, filesystem_like_logging.
--redo log里LOB data 丢失的情况下也会进行fetch。
6） The LOB is updated using OCILOBWrite(), OCILobAppend(),OCiLobCopy(), OCILobLoadFromFile(), OCILobTrim(), or through procedures in thedbms_lob package.
7） Any other anomalies as detected by Extract in terms of a missingpage number, a missing END MARKER, or a mismatch between the size that wascaptured and the expected size.
（4） When changing a SECUREFILE LOBfrom one storage to another (such as from ENCRYPT to DECRYPT), Oracle updatesthe whole table, and Extract captures those updates from the log. Therefore, itwill appear as though Oracle updated all of the data blocks that are associatedwith the table. This also can happen when an ALTER TABLE command sets a DEFAULTvalue to a column that has null values.
（5） If CLOB columns can store binarydata, set the NLS_LANG system environment variable and the NLS_LANGUAGEdatabase parameter to the same value.
（6） When the size of a large objectexceeds 4K, Oracle GoldenGate stores the data in segments within the OracleGoldenGate trail. The first 4K is stored in the base segment, and the rest isstored in a series of 2K segments. Oracle GoldenGate does not support thefiltering, column mapping, or manipulation of large objects of this size. Full OracleGoldenGate functionality can be used for objects that are 4K or smaller.
1.7 XML data types
Limitations of support
（1）The source and target objects thatcontain the XML must be identical. Filtering and manipulation are notsupported. However, you can map the XML representation of an object to acharacter column by means of a COLMAP clause in a TABLE or MAP statement.
（2） Oracle GoldenGate treats XMLTypedata as a LOB. There is no size limitation, but see “Large object data types”on page 10 for additional support and limitations.
（3） A table that contains XMLTypecolumns must have one of the following: a primary key, column(s) with a uniqueconstraint, or a unique index.
1.8 User defined types
OracleGoldenGate supports user defined types (UDT) when the source and target objectshave the same structure. The schema names can be different.
1.8.1 General limitationsof support
（1） Extract mustfetch UDTs (except for object tables) from the database, so you should configureand use a snapshot for data consistency. Because a UDT must be fetched, a tablethat contains one must have one of the following: a primary key, column(s) witha unique constraint, or a unique index.
--UDT 必须从database 进行fetch
（2） OracleGoldenGate does not support UDTs with the following embedded scalar types: CLOB,CFILE, BFILE, or INTERVAL_YM, INTERVAL_DS, and OPAQUE (with the exception ofXMLType, which is supported).
（3） Object or relational tables wherethe key contains a UDT, or where a UDT is the only column, are not supported.
（4） The RMTTASK parameter does notsupport user-defined types (UDT).
（5） CHAR and VARCHAR attributes thatcontain binary or unprintable characters are not supported.
（6） UDTs, including values insideobject columns or rows, cannot be used within filtering criteria in TABLE orMAP statements, or as input or output for the Oracle GoldenGate column-conversionfunctions, SQLEXEC, or other built-in data-manipulation tools. Support is onlyprovided for like-to-like Oracle source and targets.
（7） Oracle GoldenGate does not supportREF types.
1.8.2 Limitations forcollection types
（1） When data ina nested table is updated, the row that contains the nested table must be updatedat the same time.
（2） When VARRAYSand nested tables are fetched, the entire contents of the column are fetchedeach time, not just the changes.
1.8.3 Limitations forobject tables
（1） OracleGoldenGate supports object tables in uni-directional and active-active configurationsfor Oracle 10g and later. Object tables are captured from the redo log,butcertain data types that are fetched from the database when in regularrelational tables, such as LOBs and collection types, will also be fetched whenin object tables. Similarly, current limitations that apply to collection typeswhen in regular tables also apply to these types when in object tables.
（2） An Oracle objecttable can be mapped to a non-Oracle object table in a supported target database.
（3） A primarykey must be defined on the root-level object attributes of the object table,andcannot include leaf-level attributes. If no key is defined, Oracle GoldenGatewill use all viable columns as a pseudo-key.
（4）OracleGoldenGate does not support the replication of DDL operations for an object table.This limitation includes the database object versioning that is associated withALTERs of object tables.
（5） Synonyms arenot supported for object tables or relational tables that contain object tables.
1.8.4 Limitations forspatial types
OracleGoldenGate supports SDO_GEOMETRY, SDO_TOPO_GEOMETRY, and SDO_GEORASTER (rastertables) for Oracle 10g and later.
1.9 Other supported data types
（3） INTERVAL DAY and INTERVAL YEAR ifthe size of the target column is equal to, or greater than, that of the source.
二. Non-supported Oracle data types
三. Supported objects and operations forOracle DML
3.1 Tables, views, and materialized views
Oracle GoldenGate supports the following DML operations made to regular tables, index organizedtables (created with the ORGANIZATION INDEX clause of CREATE TABLE), clustered tables,and materialized views.
（4） Associated transaction controloperations
3.1.1 Limitations of support for regular tables
（1） Oracle GoldenGate supports tablesthat contain any number of rows up to 2 MB in length. Each character LOB/LONGcolumn contributes up to 4 KB to this limit, and each binary LOB columncontributes up to 8 KB. This row-size limitation mostly affects updateoperations on columns that are being used as a row identifier. This identifier canbe a primary or unique key, a key defined within the Oracle GoldenGateparameter file, or all of the columns if no key is defined. If a row identifieris updated, the 2 MB length must include not only the after image, but also thefull before image, which is required to find the correct key on the target forthe update.
（2） LOB columns are supported in theirfull size.
（3） Oracle GoldenGate supports themaximum number of columns per table that is
supported by the database.
（4） Oracle GoldenGate supports themaximum column size that is supported by the
database. OracleGoldenGate supports tables that contain only one column, except when the columncontains one of the following data types:
3） Nested table
4） User defineddata type
（5） Oracle GoldenGate supports tableswith unused columns, but the support is disabled by default, and Extract abendson them. You can use the DBOPTIONS parameter with the ALLOWUNUSEDCOLUMN optionto force Extract to generate a warning and continue processing. When usingALLOWUNUSEDCOLUMN, either the same unused column must exist in the targettable, or a source definitions file must be created for Replicat with theDEFGEN utility. You can include the appropriate ALTER TABLE...SET UNUSEDstatements in a DDL replication configuration.
--GG 支持unused 列，但是该功能默认是禁用的。可以通过DBOPTIONS参数的ALLOWUNUSEDCOLUMN 选项来强制extract 生成warning.
（6） Oracle GoldenGate supports tableswith interval partitioning. Make certain that the WILDCARDRESOLVE parameterremains at its default of DYNAMIC.
--GG 支持interval partitioning。
（7） Oracle GoldenGate supports tableswith virtual columns, but does not capture change data for these columns,because the database does not write it to the transaction log. You can use theFETCHCOLS option of the TABLE parameter to fetch the value of a virtual column.Replicat does not apply DML to a virtual column, even if the data for that columnis in the trail, because the database does not permit DML on that type of column.Data from a source virtual column when fetched can be applied to a target columnthat is not a virtual column.
--GG 支持virtual columns，但是不会capture virtual columns上的数据变化，因为数据库不会将virtual columns上的的信息写入log。 我们可以使用FETCHCOLS 选项来fetch 到virtualcolumn上的信息，但是Replicat 进程不会应用这些信息到virtual columns上，即使这些信息存在trail里，但是可以将这些fetch 的信息target database上的非virtualcolumn上。
（8） In an initial load, all of thedata is selected directly from the source tables, not the transaction log.Therefore, in an initial load, data values for all columns, including virtualcolumns, gets written to the trail or sent to the target, depending on themethod that is being used. As when applying change data, however, Replicat doesnot apply initial load data to virtual columns, because the database does notpermit DML on that type of column.
--在初始化装载的时候，所有数据是直接从source table上获取，而不是从事务日志里。 因此在initialload 时，所有列的值，包含virtual columns，都会写入trail 文件或者发送到target。 但在target端apply时，Replicat 不会应用data 到virtualcolumns，因为数据库进制virtual column上的DML 操作。
（9） Oracle GoldenGate does not permita virtual column to be used in a KEYCOLS clause in a TABLE or MAP statement.
（10） If a unique key includes a virtualcolumn, and Oracle GoldenGate must use that key, the virtual column will beignored. This might affect data integrity if the remaining columns do notenforce uniqueness. Fetching only provides an after value, and Oracle GoldenGaterequires before and after values of keys.
（11） If a unique index is defined onany virtual columns, it will not be used.
（12） If a unique key or index containsa virtual column and is the only unique identifier on a table, OracleGoldenGate must use all of the columns as an identifier to find target rows.Because a virtual column cannot be used in this identifier, it is possible thatReplicat could apply operations containing this identifier to the wrong targetrows.
（13） Tables created as EXTERNAL are notsupported.
（14） A key cannot contain a column thatis part of an invisible index.
（15） Tables created with tablecompression or OLTP table compression are not supported. Oracle GoldenGatesupports delivery to Oracle Exadata with EHCC compression enabled for insertoperations. In order for Replicat to apply data so that it is compressed withEHCC, you must use the INSERTAPPEND parameter for Replicat, which causesReplicat to use an APPEND hint for inserts.
（16） OracleGoldenGate supports Transparent Data Encryption (TDE) applied at the column andtablespace level. Column-level encryption is supportedfor all versions of Oracle 10.2.0.5, 11.1, and 11.2. Tablespace-levelencryption is supported for all versions of Oracle 10.2.0.5 and 220.127.116.11.
（17） Oracle GoldenGate supports thesynchronization of TRUNCATE statements as part of the full DDL synchronizationfeature or as standalone functionality that is independent of full DDLsynchronization. The standalone TRUNCATE feature supports the replication of TRUNCATETABLE, but no other TRUNCATE options. The full DDL feature supports TRUNCATE TABLE,ALTER TABLE TRUNCATE PARTITION, and other DDL. To avoid errors from duplicate operations,only one of these features can be active at the same time. The GETTRUNCATES parametercontrols the standalone TRUNCATE feature.
（18） Oracle GoldenGate supports thecapture of direct-load INSERTs for Oracle versions 9iR2, 10gR1, and 10gR2 andlater. Supplemental logging must be enabled, and the database must be inarchive log mode. The affected tables cannot contain LOBs if the database is9iR2 or 10gR1, but LOBs are supported for later versions. The followingdirect-load methods are supported.
1） /*+ APPEND */ hint
2）/*+ PARALLEL */ hint (Non-RAC only)
3） SQLLDR with DIRECT=TRUE
3.1.2 Limitations of support for views
（1） Oracle GoldenGate can replicate toa view as long as it is inherently updatable.
（2） Oracle GoldenGate supports capturefrom a table in the source database to an inherently updatable view in thetarget database.
（3） The structures of the table andthe view must be identical.
（4） A key must be defined on theunique columns in the view. This is done by means of a KEYCOLS clause in theMAP statements.
3.1.3 Limitations of support for materialized views
（1） Materialized views created WITHROWID are not supported.
（2） The materialized view log can becreated WITH ROWID.
（3） The source table must have aprimary key.
（4） Truncates of materialized viewsare not supported. You can use a DELETE FROM statement.
（5） Some Oracle GoldenGateinitial-load methods do not support LOBs in a materialized view.
（6） For Replicat, the materializedview must be updateable.
（7） DML (but not DDL) from a fullrefresh of a materialized view is supported for Oracle 10g and later. If DDLsupport for this feature is required, open an Oracle GoldenGate support case.
3.1.4 Limitations of support for index-organized tables
（1） IOTs are supported for Oracleversions 10.2 and later.
（2） Oracle GoldenGate supports IOTsthat are created with the MAPPING TABLE option, but it only captures changesmade to the base IOT, not changes made to the mapping table. However, Oraclewill maintain the mapping table on the target, if one is being used.
（3） IOTs that are stored in acompressed format are not supported (for example, in a
A compressed IOTis different from an IOT that has key compression defined with the COMPRESSoption. IOTs with key compression are supported.
（4） Because an IOT does not have arowid, Oracle GoldenGate must fetch certain data types in an IOT from thedatabase. The fetch uses the key value as the row identifier, which increasesthe potential for “row not found” errors. Oracle GoldenGate provides theFETCHOPTIONS parameter to handle these errors. Data types that are fetched are:
6） Nested table
（5） (Oracle 10g and later) TRUNCATESof an IOT where one partition is empty will not be captured.
3.1.5 Limitations of support for clustered tables
（1） Indexed and hash clusters are bothsupported.
（2） Encrypted and compressed clusteredtables are not supported.
OracleGoldenGate supports the replication of sequence values by means of the SEQUENCEparameter. Oracle GoldenGate ensures that the target sequence values willalways be higher than those of the source (or equal to them, if the cache is0).
DDL support forsequences (CREATE, ALTER, DROP, RENAME) is compatible with, but not requiredfor, replicating sequence values. To replicate just sequence values, you do notneed to install the Oracle GoldenGate DDL support environment. You can just usethe SEQUENCE parameter.
Limitations of support for sequences
（1） The cache size and the incrementinterval of the source and target sequences must be identical.
（2） The cache can be any size,including 0 (NOCACHE).
（3） The sequence can be set to cycleor not cycle, but the source and target databases must be set the same way.
（4） To add SEQUENCE to a configurationin which DDL support is enabled, you must reinstall the Oracle GoldenGate DDLobjects in INITIALSETUP mode.
四. Non-supported objects and operations for Oracle DML
（2） Tablespaces and tables created oraltered with COMPRESS
（4） Database Replay
（5） Distributed transactions
（6） XA distributed transactions
（7） Transparent Application Failover
五. Supported objects and operations forOracle DDL
All Oracle GoldenGatetopology configurations are supported for Oracle DDL replication. Active-active(bi-directional) replication of Oracle DDL is supported between two (and only two)databases that contain identical metadata.
Oracle GoldenGate supports DDL operations of up to 2 MB in size on the following objects:
The 2 MB size limitation includes packages,procedures, and functions.
The actual sizelimit of the DDL support is approximate, because the size will not only includethe statement text but also Oracle GoldenGate maintenance overhead that dependson the length of the object name, the DDL type, and other characteristics ofkeeping a DDL record internally.
六．Non-supported objects and operations forOracle DDL
6.1 Oracle-reserved schemas
The following schema names are considered Oracle-reserved and must be excluded from the OracleGoldenGate DDL configuration. Oracle GoldenGate will ignore these schemas.
6.2 Oracle recycle bin
Because of aknown issue in Oracle 10g, the Oracle recycle bin must be turned off to supportOracle GoldenGate DDL replication. If the recycle bin is enabled, the Oracle GoldenGateDDL trigger session receives implicit recycle bin DDL operations that cause thetrigger to fail.
To turn off the recyclebin:
（1） Oracle 10g Release 2 and later:Set the RECYCLEBIN initialization parameter to OFF.
（2） Oracle 10g Release 1: Set the_RECYCLEBIN initialization parameter to FALSE. Consult the Oracle 10g databasedocumentation for the correct syntax.
6.3 Other non-supported DDL
Oracle GoldenGate does not support thefollowing:
（1） ALTER TABLE ... MOVE TABLESPACE
（2） DDL on nested tables.
（3） DDL that involves password-basedcolumn encryption, such as:
1） CREATE TABLE t1 ( a number, bvarchar2(32) ENCRYPT IDENTIFIED BY my_password);
2） ALTER TABLE t1 ADD COLUMN cvarchar2(64) ENCRYPT IDENTIFIED BY my_password;
（4） ALTER DATABASE and ALTER SYSTEM(these are not considered to be DDL)
七. Supported and non-supported object namesand case
The followingwill help you verify whether the name of a supported object qualifies or disqualifiesit for inclusion in an Oracle GoldenGate configuration.
Object names and owners
Source andtarget object names must be fully qualified in Oracle GoldenGate parameter files,as in fin.emp. Oracle GoldenGate supports character case as follows.
7.1 Case sensitivity
The followingare general guidelines for the case-sensitivity of object names as it relatesto Oracle GoldenGate. These guidelines may or may not apply to your databases,depending on whether the database or the underlying operating system supportscase-sensitivity.
Keep in mindthat case-sensitivity (or lack thereof) may apply to the source database but notthe target, or to the target but not the source.
（1） If thesystem or database is case-sensitive, Oracle GoldenGate supports the case sensitivityof database names, owner and schema names, object names, column names, and usernames.
（2） If thesystem or database is case-insensitive (or is configured forcase-insensitivity), Oracle GoldenGate converts all names to upper case. Theexception is Oracle 11g, where case-sensitive passwords are supported in OracleGoldenGate input that requires passwords.
To preservecase-sensitivity in an Oracle GoldenGate configuration：
In OracleGoldenGate parameter files, specify case-sensitive names exactly as they appearin the database. In TABLE and MAP parameters, enclose case-sensitive names indouble quotes if the other database (the source or target of the case-sensitiveobjects) is not casesensitive.
If replicatingfrom a case-insensitive source to a case-sensitive target, enter the source namesin upper case in the Replicat MAP statements, to reflect the fact that Extractwrites them to the trail as uppercase.
MAP SALES.CUSTOMER, TARGET"Sales.Account";
7.2 Supported characters
Oracle GoldenGate supports alphanumeric characters in object names and in the names ofkey columns and non-key columns. Oracle GoldenGate also supports the following nonalphanumericcharacters in columns that are not being used by Oracle GoldenGate as a key.
7.3 Non-supported characters
Oracle GoldenGate does not support the following characters in object or column names.