Share
Amazon RDS Oracle Setup Guide

Amazon RDS for Oracle is a fully managed database service provided by AWS that allows you to leverage the power and flexibility of Oracle databases in the cloud. This reduces the burden of managing these databases yourself and enables you to easily scale its resources up or down as per your requirements. Amazon RDS helps you reduce costs while providing enhanced security, improved performance, and simplified database management.

Refer to Oracle on Amazon RDS for the supported Oracle database versions.


Data Type Mapping

Hevo maps the Oracle Source data type internally to a unified data type, referred to as the Hevo Data Type, in the table below. This data type is used to represent the Source data from all supported data types in a lossless manner.

The following table lists the supported Oracle data types and the corresponding Hevo data type to which they are mapped:

Oracle Data Type Hevo Data Type
- BIT BOOLEAN
- NUMBER
- FLOAT
DECIMAL
- BINARY_FLOAT
- BINARY_DOUBLE
FLOAT
- CHAR
- VARCHAR
- VARCHAR2
- NCHAR
- NVARCHAR
- CLOB
- NCLOB
- ROWID
- INTERVAL_DAY_TO_SECOND
- INTERVAL_YEAR_TO_MONTH
VARCHAR
- TIMESTAMPTZ
- TIMESTAMP_LOCALTZ
TIME_TZ
- DATE DATE
- TIMESTAMP TIME
- BLOB
- RAW
BYTE_ARRAY

Read ANSI, DB2, and SQL/DS Data Types to know the data types that Oracle converts from ANSI to its supported ones.

Handling of NUMBER Data Type

In Oracle, NUMBER is a data type that stores fixed or floating-point numbers. To keep a check on the integrity of the input, the NUMBER data type is specified in the format NUMBER(p,s), where s is the scale and p is the precision. Precision (p) refers to the maximum number of significant digits a number can have. Significant digits are the main digits in a number, excluding any leading or trailing zeros. Scale (s) refers to the number of digits to the right of the decimal point. Read Numeric Data Types to know more about how Oracle handles the NUMBER data type.

Non-Positive Scale Handling

In case a negative scale (s < 0) is specified, Oracle rounds the input value by 10^(ABS(scale)). So, the value will not be a floating-point number, but rather a positive integer. For instance, a scale of -2 leads to rounding to the nearest hundred.

Consider the data type NUMBER(10, -2). Suppose you want to store the number 123456.78 in this column, Precision (10) allows for up to 10 total digits, so 123456.78 fits within this limit. With a negative scale (-2), the value is rounded to the nearest hundred. So, 123456.78 would be rounded to 123500 and stored in the column.

Hevo calculates the width of a stored value using the formula, Width = Precision - Scale, which always gives a positive value in case of a negative scale. Width refers to the total number of digits required to store a number, considering both the integer (digits before decimal point) and fractional (digits after decimal point) parts.

The NUMBER data types are mapped to the following Hevo data types based on the calculated width:

Width Hevo Data Type
< 5 SHORT
< 10 INT
< 19 LONG
> 19 DECIMAL

Note: If precision and scale are not defined for the NUMBER datatype, Destination-specific default maximum values for precision and scale are used.

Handling of Unsupported Data Types

If any of the Source objects ingested by Hevo contain unsupported data types, Hevo fails such objects and does not load their data to the Destination.

At this time, the following Oracle data types are not supported by Hevo:

  • UROWID
  • LONG
  • LONG_RAW
  • XMLTYPE
  • Any other data type not listed in the tables above.

Source Considerations

  • Redo Log does not support user-defined data types. Therefore, fields with such data types are not captured in the log and are lost.

  • The log-mining strategy used in Hevo writes the Oracle data dictionary to redo logs during log switches. This allows Oracle LogMiner to effectively track schema changes but may generate more archive logs and require more database memory, resulting in the LogMiner process taking more time to start after each log switch.


Limitations

  • Hevo does not support the flashback method to track incremental updates.
Last updated on Jul 11, 2024

Tell us what went wrong

Skip to the section