anchor.diff:  [[oracle-data-type-mappings]]
   == Data type mappings
   
  -To represent changes that occur in a table rows, the {prodname} Oracle connector emits change events that are structured like the table in which the rows exists.
  -The event contains a field for each column value.
  -Column values are represented according to the Oracle data type of the column.
  -The following sections describe how the connector maps oracle data types to a _literal type_ and a _semantic type_ in event fields.
  -
  -_literal type_:: Describes how the value is literally represented using Kafka Connect schema types: `INT8`, `INT16`, `INT32`, `INT64`, `FLOAT32`, `FLOAT64`, `BOOLEAN`, `STRING`, `BYTES`, `ARRAY`, `MAP`, and `STRUCT`.
  -
  -_semantic type_:: Describes how the Kafka Connect schema captures the _meaning_ of the field using the name of the Kafka Connect schema for the field.
  +When the {prodname} {connector-name} connector detects a change in the value of a table row, it emits a change event that represents the change.
  +Each change event record is structured in the same way as the original table, with the event record containing a field for each column value.
  +The data type of a table column determines how the connector represents the column's values in change event fields, as shown in the tables in the following sections.
  +
  +For each column in a table, {prodname} maps the source data type to a _literal type_ and, and in some cases, a _semantic type_, in the corresponding event field.
  +
  +Literal types:: Describe how the value is literally represented, using one of the following Kafka Connect schema types: `INT8`, `INT16`, `INT32`, `INT64`, `FLOAT32`, `FLOAT64`, `BOOLEAN`, `STRING`, `BYTES`, `ARRAY`, `MAP`, and `STRUCT`.
  +
  +Semantic types:: Describe how the Kafka Connect schema captures the _meaning_ of the field, by using the name of the Kafka Connect schema for the field.
  +
  +For some Oracle binary large object (BLOB) and numeric data types, you can manipulate the way that the connector performs the type mapping by changing default configuration property settings.
  +For more information about how {prodname} properties control mappings for these data types, see xref:oracle-binary-character-lob-types[Binary and Character LOB types] and xref:oracle-numeric-types[Numeric types].
   
   ifdef::product[]
  -Details are in the following sections:
  -
  +For more information about data type mappings, see the following topics:
  +
  +* xref:oracle-binary-character-lob-types[]
   * xref:oracle-character-types[]
   * xref:oracle-numeric-types[]
  -* xref:oracle-decimal-types[]
  +* xref:oracle-boolean-types[]
   * xref:oracle-temporal-types[]
   * xref:oracle-rowid-types[]
  +* xref:oracle-user-defined-types[]
  +* xref:oracle-suppplied-types[]
   
   endif::product[]
   
  
positive.code: For example, such timeouts can occur when a LogMiner session that processes large amounts of data runs concurrently with Oracle's periodic checkpointing task.
  
  ifdef::product[]
  To prevent timeouts with the AWS Gateway Load Balancer, enable keep-alive packets from the Kafka Connect environment, by performing the following task as root or a super-user:
  endif::product[]
  ifdef::community[]
  To prevent timeouts with the AWS Gateway Load Balancer, enable keep-alive packets from the kafka Connect or Debezium Server environment, by performing the following task as root or a super-user in the environment that hosts the connector:
  endif::community[]
  
  From a terminal, run the following command:
  ```shell
  sysctl -w net.ipv4.tcp_keepalive_time=60
  ```
  
  Edit `/etc/sysctl.conf` and set the value of the following variable as shown:
  
  ```properties
  net.ipv4.tcp_keepalive_time=60
  ```
  
  Reconfigure the {prodname} for Oracle connector to use the `database.url` property rather than `database.hostname` and add the `(ENABLE=broken)` Oracle connect string descriptor as shown in the following example:
  
  ```properties
  database.url=jdbc:oracle:thin:username/password!@(DESCRIPTION=(ENABLE=broken)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(Host=hostname)(Port=port)))(CONNECT_DATA=(SERVICE_NAME=serviceName)))
  ```
  
  The precdeding steps configure the TCP network stack to send keep-alive packets every 60 seconds.
  As a result, the AWS Gateway Load Balancer does not timeout when JDBC calls to the LogMiner API take more than 350 seconds to complete, enabling the connector to continue to read changes from the database's transaction logs.
negative.code:  +
  Handled equivalently to `NUMBER` (note that S defaults to 0 for `NUMERIC`).
  
  When the `decimal.handling.mode` property is set to `double`, the connector represents `NUMERIC` values as Java `double` values with schema type `FLOAT64`.
  
  When the `decimal.handling.mode` property is set to `string`, the connector represents `NUMERIC` values as their formatted string representation with schema type `STRING`.
  
  |`SMALLINT`
  |`BYTES`
  |`org.apache.kafka.connect.data.Decimal` +
  