16 Understanding What's Supported for PostgreSQL
This chapter contains information on supported features for Oracle GoldenGate for PostgreSQL:
Topics:
- Supported Databases
- Details of Supported PostgreSQL Data Types
- Supported Objects and Operations for PostgreSQL
Parent topic: Using Oracle GoldenGate for PostgreSQL
Supported Databases
-
Only user databases are supported for capture and delivery.
-
Oracle GoldenGate does not support capture from archived logs.
-
Capture and delivery are not supported against replica, standby databases.
-
High Availability:
-
Oracle GoldenGate Extract does not support seamless role transitioning from a primary to a secondary Extract with PostgreSQL high availability configurations. However, manual procedural operations could be followed to provide continuity from the new primary Extract.
-
For more information, see the details available in the my Oracle Support note, Oracle GoldenGate Procedures for PostgreSQL HA Failover (Doc ID 2818379.1).
-
Parent topic: Understanding What's Supported for PostgreSQL
Details of Supported PostgreSQL Data Types
This topic describes both supported and non-supported data types by Oracle GoldenGate for PostgreSQL:
Parent topic: Understanding What's Supported for PostgreSQL
Supported PostgreSQL Data Types
Here's a list of PostgreSQL data types that Oracle GoldenGate supports along with the limitations of this support.
-
bigint -
bigserial -
bit(n) -
bit varying(n) -
boolean -
bytea -
char (n) -
cidr -
citext -
date -
decimal -
double precision -
inet -
integer -
interval -
json -
jsonb -
macaddr -
macaddr8 -
money -
numeric -
real -
serial -
smallint -
smallserial -
text -
timewith/without timezone -
timestampwith/without timezone -
uuid -
varchar(n) -
varbit -
xml
Limitations of Support
-
If columns of
char,varchar,text, orbyteadata types are part of a primary or unique key, then the maximum individual lengths for these columns must not exceed 8191 bytes. -
Columns of data type
CITEXTthat are part of the Primary Key are supported up to 8000 bytes in size.CITEXTcolumns that are greater than 8000 bytes and are part of the Primary Key are not supported. -
real,double,numeric,decimal: NaNinput values are not supported. -
The following limitations apply to
bit/varbitdata types:-
They are supported up to 4k in length. For lengths greater than 4k the data is truncated and only the lower 4k bits are captured.
-
The source bit(n) column can be applied only onto a character type column on a non-PostgreSQL target and can be applied onto a
chartype or abit/varbitcolumn on PostgreSQL target.
-
-
The following limitations are applicable to both
timestampwith time zone andtimestampwithout time zone:-
The
timestampdata with BC or AD tags in the data is not supported. -
The
timestampdata older than 1883-11-18 12:00:00 is not supported. -
The
timestampdata with more than 4 digits in the YEAR component is not supported. -
Infinity/-Infinityinput strings fortimestampcolumns are not supported.
-
-
The following are the limitations when using
interval:-
The capture of mixed sign
intervaldata fromintervaltype columns is not supported. You can useDBOPTIONSALLOWNONSTANDARDINTERVALDATAin the Extract parameter file to capture the mixed signintervaldata (or any other format ofintervaldata, which is not supported by Oracle GoldenGate) as a string (not as standardintervaldata).The following are a few examples of data that gets written to the trail file, on using the
DBOPTIONSALLOWNONSTANDARDINTERVALDATAin the Extract param file:
-
+1026-9 +0 +0:0:22.000000is interpreted as 1026 years, 9 months, 0 days, 0 hours, 0 minutes, 22 seconds. -
-0-0 -0 -8is interpreted as 0 years, 0 months, 0 days, -8 hours. -
+1-3 +0 +3:20is interpreted as 1 year, 3 months, 0 days, 3 hours, 20 minutes.
-
-
Replicat: If the source interval data was captured using
DBOPTIONSALLOWNONSTANDARDINTERVALDATAand written as a string to the trail, the corresponding source column is allowed to be mapped to either acharor abinarytype column on the target. -
datelimitations are:-
The
datedata with BC or AD tags in the data is not supported. -
Infinity/-Infinityinput strings fordatecolumns are not supported.
-
-
Columns of
text,json,xml,bytea,char (>8191),varchar (>8191)are treated as LOB columns and have the following limitations:-
When using
GETUPDATEBEFORES, the before image of LOB columns is never logged. -
When using
NOCOMPRESSUPDATES,LOBcolumns are logged in the after image only if they were modified.
-
-
The support of range and precision for floating-point numbers depends on the host machine. In general, the precision is accurate to 16 significant digits, but you should review the database documentation to determine the expected approximations. Oracle GoldenGate rounds or truncates values that exceed the supported precision.
Parent topic: Details of Supported PostgreSQL Data Types
Non-Supported PostgreSQL Data Types
-
Arrays -
box -
circle -
Composite Types -
Domain Types -
Enumerated Types -
line -
lseq -
Object Identifiers Types -
path -
pg_lsn -
pg_snapshot -
point -
polygon -
Pseudo-Types -
Range Types -
tsquery -
tsvector -
User-defined Types (UDTs) -
Extensions and Additional Supplied Modules listed at: https://www.postgresql.org/docs/current/contrib.html
Note:
If the Extract parameter file contains a table with unsupported data types, the Extract will stop with an error message. To resume replication, remove the table from the Extract file or remove the column from the table with an unsupported data type.Note:
If an Extension or Additional Supplied Module is supported, it will be explicitly added to the Supported PostgreSQL data types list.
Parent topic: Details of Supported PostgreSQL Data Types
Supported Objects and Operations for PostgreSQL
-
Oracle GoldenGate for PostgreSQL only supports DML operations (Insert/Update/Deletes). DDL replication is not supported.
-
Oracle GoldenGate for PostgreSQL supports replication of truncate operations beginning with PostgreSQL 11 and above, and requires the
GETTRUNCATESparameter in Extract and Replicat. -
Case-Sensitive/Insensitive names Usage:
-
Unquoted names are case-insensitive and are implicitly lowercase. For example,
CREATE TABLE MixedCaseTableandSELECT * FROM mixedcasetableare equivalent. -
Quoted table and column names are case-sensitive and need to be listed correctly in Extracts and Replicats and with Oracle GoldenGate commands.
For example,
TABLE appschema.”MixedCaseTable”andADD TRANDATA appschema.”MixedCaseTable”would be required to support a case-sensitive table name.
-
Parent topic: Understanding What's Supported for PostgreSQL
Tables and Views
Tables to be included for capture and delivery must meet the following requirements and must only include data types listed under Supported PostgreSQL Data Types.
-
Oracle GoldenGate for PostgreSQL supports capture of transactional DML from user tables, and delivery to user tables.
-
Oracle GoldenGate for PostgreSQL supports delivery to partitioned tables.
-
Globalization is supported for object names (table /schema/database/column names) and column data.
-
Oracle GoldenGate for PostgreSQL does not support capture and delivery for views.
-
Oracle GoldenGate for PostgreSQL does not support capture from partitioned tables.
Parent topic: Supported Objects and Operations for PostgreSQL
Sequences and Identity Columns
-
Sequences are supported on source and target tables for unidirectional, bidirectional, and multi- directional implementations.
-
Identity columns created using the
GENERATED BY DEFAULT AS IDENTITYclause are supported on source and target tables, for unidirectional, bidirectional, and multi- directional implementations. -
Identity columns created using the
GENERATED ALWAYS AS IDENTITYclause are not supported in target database tables and the Identity property should be removed from target tables or changed toGENERATED BY DEFAULT AS IDENTITY. -
For bidirectional and multi-directional implementations, define the Identity columns and sequences with an
INCREMENT BYvalue equal to the number of servers in the configuration, with a differentMINVALUEfor each one.For example,MINVALUE/INCREMENT BYvalues for a bidirectional, two-database configuration would be as follows:Database1, set the MINVALUE at 1 with an INCREMENT BY of 2.Database2, set the MINVALUE at 2 with an INCREMENT BY of 2.For example,MINVALUE/INCREMENT BYvalues for a multi-directional, three-database configuration would be as follows:Database1, set the MINVALUE at 1 with an INCREMENT BY of 3.Database2, set the MINVALUE at 2 with an INCREMENT BY of 3.Database3, set the MINVALUE at 3 with an INCREMENT BY of 3.
Parent topic: Supported Objects and Operations for PostgreSQL