This is an automated email from the ASF dual-hosted git repository.

dockerzhang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-inlong-website.git


The following commit(s) were added to refs/heads/master by this push:
     new bd0047b17 [INLONG-408][Sort] Add usage document for MySQL Extract 
Node, Elasticsearch Load Node (#410)
bd0047b17 is described below

commit bd0047b17ca2edae9ffa30b307e9284c1b92a931
Author: yunqingmoswu <[email protected]>
AuthorDate: Wed Jun 15 09:18:50 2022 +0800

    [INLONG-408][Sort] Add usage document for MySQL Extract Node, Elasticsearch 
Load Node (#410)
---
 docs/data_node/extract_node/mysql-cdc.md           |   2 +-
 docs/data_node/extract_node/oracle-cdc.md          | 526 +++++++++++++++++++-
 .../current/data_node/extract_node/mysql-cdc.md    |   2 +-
 .../current/data_node/extract_node/oracle-cdc.md   | 528 ++++++++++++++++++++-
 4 files changed, 1054 insertions(+), 4 deletions(-)

diff --git a/docs/data_node/extract_node/mysql-cdc.md 
b/docs/data_node/extract_node/mysql-cdc.md
index 52822497c..923f83ae7 100644
--- a/docs/data_node/extract_node/mysql-cdc.md
+++ b/docs/data_node/extract_node/mysql-cdc.md
@@ -10,7 +10,7 @@ The MySQL Extract Node allows for reading snapshot data and 
incremental data fro
 ## Supported Version
 | Extract Node                | Version                                        
                                                                                
                                                                                
                                                                                
                                                                                
                        | Driver                  |
 
|-----------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------|
-| [mysql-cdc](./mysql-cdc.md) | [MySQL](https://dev.mysql.com/doc): 5.6, 5.7, 
8.0.x <br/> [RDS MySQL](https://www.aliyun.com/product/rds/mysql): 5.6, 5.7, 
8.0.x <br/> [PolarDB MySQL](https://www.aliyun.com/product/polardb): 5.6, 5.7, 
8.0.x <br/> [Aurora MySQL](https://aws.amazon.com/cn/rds/aurora): 5.6, 5.7, 
8.0.x <br/> [MariaDB](https://mariadb.org): 10.x <br/> [PolarDB 
X](https://github.com/ApsaraDB/galaxysql): 2.0.1 | JDBC Driver: 8.0.21     |
+| [MySQL-CDC](./mysql-cdc.md) | [MySQL](https://dev.mysql.com/doc): 5.6, 5.7, 
8.0.x <br/> [RDS MySQL](https://www.aliyun.com/product/rds/mysql): 5.6, 5.7, 
8.0.x <br/> [PolarDB MySQL](https://www.aliyun.com/product/polardb): 5.6, 5.7, 
8.0.x <br/> [Aurora MySQL](https://aws.amazon.com/cn/rds/aurora): 5.6, 5.7, 
8.0.x <br/> [MariaDB](https://mariadb.org): 10.x <br/> [PolarDB 
X](https://github.com/ApsaraDB/galaxysql): 2.0.1 | JDBC Driver: 8.0.21     |
 
 ## Dependencies
 
diff --git a/docs/data_node/extract_node/oracle-cdc.md 
b/docs/data_node/extract_node/oracle-cdc.md
index dc322188a..1e5b4c921 100644
--- a/docs/data_node/extract_node/oracle-cdc.md
+++ b/docs/data_node/extract_node/oracle-cdc.md
@@ -1,4 +1,528 @@
 ---
 title: Oracle-CDC
 sidebar_position: 8
----
\ No newline at end of file
+---
+
+## Overview
+
+The Oracle Extract Node allows for reading snapshot data and incremental data 
from Oracle database.
+This document describes how to setup the Oracle Extract Node to run SQL 
queries against Oracle databases.
+
+## Supported Version
+| Extract Node                | Version                                        
           | Driver                   |
+|-----------------------------|-----------------------------------------------------------|--------------------------|
+| [Oracle-CDC](oracle-cdc.md) | [Oracle](https://www.oracle.com/index.html): 
11, 12, 19   | Oracle Driver: 19.3.0.0  |
+
+## Dependencies
+
+In order to setup the Oracle Extract Node, the following table provides 
dependency information for both projects using a build automation tool (such as 
Maven or SBT) and SQL Client with Sort Connectors JAR bundles.
+
+### Maven dependency
+
+```
+<dependency>
+    <groupId>org.apache.inlong</groupId>
+    <artifactId>sort-connector-oracle-cdc</artifactId>
+    <!-- Choose the version that suits your application -->
+    <version>inlong_version</version>
+</dependency>
+```
+
+The Oracle driver dependency is also required to connect to Oracle database. 
Please download 
[ojdbc8-19.3.0.0.jar](https://repo1.maven.org/maven2/com/oracle/database/jdbc/ojdbc8/19.3.0.0/ojdbc8-19.3.0.0.jar)
 and put it into `FLINK_HOME/lib/`.
+
+## Setup Oracle
+
+You have to enable log archiving for Oracle database and define an Oracle user 
with appropriate permissions on all databases that the Debezium Oracle 
connector monitors.
+
+### For Non-CDB database
+
+- Enable log archiving
+
+   (1.1). Connect to the database as DBA
+    ```sql
+    ORACLE_SID=SID
+    export ORACLE_SID
+    sqlplus /nolog
+      CONNECT sys/password AS SYSDBA
+    ```
+
+   (1.2). Enable log archiving
+    ```sql
+    alter system set db_recovery_file_dest_size = 10G;
+    alter system set db_recovery_file_dest = 
'/opt/oracle/oradata/recovery_area' scope=spfile;
+    shutdown immediate;
+    startup mount;
+    alter database archivelog;
+    alter database open;
+   ```
+   **Note:**
+
+    - Enable log archiving requires database restart, pay attention when try 
to do it
+    - The archived logs will occupy a large amount of disk space, so consider 
clean the expired logs the periodically
+
+   (1.3). Check whether log archiving is enabled
+    ```sql
+    -- Should now "Database log mode: Archive Mode"
+    archive log list;
+    ```
+   **Note:**
+
+   Supplemental logging must be enabled for captured tables or the database in 
order for data changes to capture the <em>before</em> state of changed database 
rows.
+   The following illustrates how to configure this on the table/database level.
+   ```sql
+   -- Enable supplemental logging for a specific table:
+   ALTER TABLE inventory.customers ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
+   ```
+   ```sql
+   -- Enable supplemental logging for database
+   ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
+   ```
+
+- Create an Oracle user with permissions
+
+   (2.1). Create Tablespace
+   ```sql
+   sqlplus sys/password@host:port/SID AS SYSDBA;
+     CREATE TABLESPACE logminer_tbs DATAFILE 
'/opt/oracle/oradata/SID/logminer_tbs.dbf' SIZE 25M REUSE AUTOEXTEND ON MAXSIZE 
UNLIMITED;
+     exit;
+   ```
+
+   (2.2). Create a user and grant permissions
+   ```sql
+   sqlplus sys/password@host:port/SID AS SYSDBA;
+     CREATE USER flinkuser IDENTIFIED BY flinkpw DEFAULT TABLESPACE 
LOGMINER_TBS QUOTA UNLIMITED ON LOGMINER_TBS;
+     GRANT CREATE SESSION TO flinkuser;
+     GRANT SET CONTAINER TO flinkuser;
+     GRANT SELECT ON V_$DATABASE to flinkuser;
+     GRANT FLASHBACK ANY TABLE TO flinkuser;
+     GRANT SELECT ANY TABLE TO flinkuser;
+     GRANT SELECT_CATALOG_ROLE TO flinkuser;
+     GRANT EXECUTE_CATALOG_ROLE TO flinkuser;
+     GRANT SELECT ANY TRANSACTION TO flinkuser;
+     GRANT LOGMINING TO flinkuser;
+
+     GRANT CREATE TABLE TO flinkuser;
+     GRANT LOCK ANY TABLE TO flinkuser;
+     GRANT ALTER ANY TABLE TO flinkuser;
+     GRANT CREATE SEQUENCE TO flinkuser;
+
+     GRANT EXECUTE ON DBMS_LOGMNR TO flinkuser;
+     GRANT EXECUTE ON DBMS_LOGMNR_D TO flinkuser;
+
+     GRANT SELECT ON V_$LOG TO flinkuser;
+     GRANT SELECT ON V_$LOG_HISTORY TO flinkuser;
+     GRANT SELECT ON V_$LOGMNR_LOGS TO flinkuser;
+     GRANT SELECT ON V_$LOGMNR_CONTENTS TO flinkuser;
+     GRANT SELECT ON V_$LOGMNR_PARAMETERS TO flinkuser;
+     GRANT SELECT ON V_$LOGFILE TO flinkuser;
+     GRANT SELECT ON V_$ARCHIVED_LOG TO flinkuser;
+     GRANT SELECT ON V_$ARCHIVE_DEST_STATUS TO flinkuser;
+     exit;
+   ```
+
+### For CDB database
+
+Overall, the steps for configuring CDB database is quite similar to non-CDB 
database, but the commands may be different. 
+
+- Enable log archiving
+   ```sql
+   ORACLE_SID=ORCLCDB
+   export ORACLE_SID
+   sqlplus /nolog
+     CONNECT sys/password AS SYSDBA
+     alter system set db_recovery_file_dest_size = 10G;
+     -- should exist
+     alter system set db_recovery_file_dest = 
'/opt/oracle/oradata/recovery_area' scope=spfile;
+     shutdown immediate
+     startup mount
+     alter database archivelog;
+     alter database open;
+     -- Should show "Database log mode: Archive Mode"
+     archive log list
+     exit;
+   ```
+   **Note:**
+   You can also use the following commands to enable supplemental logging:
+   ```sql
+   -- Enable supplemental logging for a specific table:
+   ALTER TABLE inventory.customers ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
+   -- Enable supplemental logging for database
+   ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
+   ```
+
+- Create an Oracle user with permissions
+   ```sql
+   sqlplus sys/password@//localhost:1521/ORCLCDB as sysdba
+     CREATE TABLESPACE logminer_tbs DATAFILE 
'/opt/oracle/oradata/ORCLCDB/logminer_tbs.dbf' SIZE 25M REUSE AUTOEXTEND ON 
MAXSIZE UNLIMITED;
+     exit
+   ```
+   ```sql
+   sqlplus sys/password@//localhost:1521/ORCLPDB1 as sysdba
+     CREATE TABLESPACE logminer_tbs DATAFILE 
'/opt/oracle/oradata/ORCLCDB/ORCLPDB1/logminer_tbs.dbf' SIZE 25M REUSE 
AUTOEXTEND ON MAXSIZE UNLIMITED;
+     exit
+   ```
+   ```sql
+   sqlplus sys/password@//localhost:1521/ORCLCDB as sysdba
+     CREATE USER flinkuser IDENTIFIED BY flinkpw DEFAULT TABLESPACE 
logminer_tbs QUOTA UNLIMITED ON logminer_tbs CONTAINER=ALL;
+     GRANT CREATE SESSION TO flinkuser CONTAINER=ALL;
+     GRANT SET CONTAINER TO flinkuser CONTAINER=ALL;
+     GRANT SELECT ON V_$DATABASE to flinkuser CONTAINER=ALL;
+     GRANT FLASHBACK ANY TABLE TO flinkuser CONTAINER=ALL;
+     GRANT SELECT ANY TABLE TO flinkuser CONTAINER=ALL;
+     GRANT SELECT_CATALOG_ROLE TO flinkuser CONTAINER=ALL;
+     GRANT EXECUTE_CATALOG_ROLE TO flinkuser CONTAINER=ALL;
+     GRANT SELECT ANY TRANSACTION TO flinkuser CONTAINER=ALL;
+     GRANT LOGMINING TO flinkuser CONTAINER=ALL;
+     GRANT CREATE TABLE TO flinkuser CONTAINER=ALL;
+     GRANT LOCK ANY TABLE TO flinkuser CONTAINER=ALL;
+     GRANT CREATE SEQUENCE TO flinkuser CONTAINER=ALL;
+
+     GRANT EXECUTE ON DBMS_LOGMNR TO flinkuser CONTAINER=ALL;
+     GRANT EXECUTE ON DBMS_LOGMNR_D TO flinkuser CONTAINER=ALL;
+
+     GRANT SELECT ON V_$LOG TO flinkuser CONTAINER=ALL;
+     GRANT SELECT ON V_$LOG_HISTORY TO flinkuser CONTAINER=ALL;
+     GRANT SELECT ON V_$LOGMNR_LOGS TO flinkuser CONTAINER=ALL;
+     GRANT SELECT ON V_$LOGMNR_CONTENTS TO flinkuser CONTAINER=ALL;
+     GRANT SELECT ON V_$LOGMNR_PARAMETERS TO flinkuser CONTAINER=ALL;
+     GRANT SELECT ON V_$LOGFILE TO flinkuser CONTAINER=ALL;
+     GRANT SELECT ON V_$ARCHIVED_LOG TO flinkuser CONTAINER=ALL;
+     GRANT SELECT ON V_$ARCHIVE_DEST_STATUS TO flinkuser CONTAINER=ALL;
+     exit
+   ```
+
+See more about the [Setting up 
Oracle](https://debezium.io/documentation/reference/1.5/connectors/oracle.html#setting-up-oracle)
+
+## How to create an Oracle Extract Node
+
+### Usage for SQL API
+
+The Oracle Extract Node can be defined as following:
+
+```sql 
+-- Create an Oracle Extract Node 'user' in Flink SQL
+Flink SQL> CREATE TABLE oracle_extract_node (
+     ID INT NOT NULL,
+     NAME STRING,
+     DESCRIPTION STRING,
+     WEIGHT DECIMAL(10, 3),
+     PRIMARY KEY(id) NOT ENFORCED
+     ) WITH (
+     'connector' = 'oracle-cdc',
+     'hostname' = 'localhost',
+     'port' = '1521',
+     'username' = 'flinkuser',
+     'password' = 'flinkpw',
+     'database-name' = 'XE',
+     'schema-name' = 'inlong',
+     'table-name' = 'user');
+  
+-- Read snapshot and binlogs from products table
+Flink SQL> SELECT * FROM oracle_extract_node;
+```
+**Note:**
+When working with the CDB + PDB model, you are expected to add an extra option 
`'debezium.database.pdb.name' = 'xxx'` in Flink DDL to specific the name of the 
PDB to connect to.
+
+### Usage for InLong Dashboard
+
+TODO: It will be supported in the future.
+
+### Usage for InLong Manager Client
+
+TODO: It will be supported in the future.
+
+## Oracle Extact Node Options
+
+<div class="highlight">
+<table class="colwidths-auto docutils">
+   <thead>
+      <tr>
+        <th class="text-left" style={{width: '25%'}}>Option</th>
+        <th class="text-left" style={{width: '8%'}}>Required</th>
+        <th class="text-left" style={{width: '7%'}}>Default</th>
+        <th class="text-left" style={{width: '10%'}}>Type</th>
+        <th class="text-left" style={{width: '50%'}}>Description</th>
+      </tr>
+    </thead>
+    <tbody>
+    <tr>
+      <td>connector</td>
+      <td>required</td>
+      <td style={{wordWrap: 'break-word'}}>(none)</td>
+      <td>String</td>
+      <td>Specify what connector to use, here should be 
<code>'oracle-cdc'</code>.</td>
+    </tr>
+    <tr>
+      <td>hostname</td>
+      <td>required</td>
+      <td style={{wordWrap: 'break-word'}}>(none)</td>
+      <td>String</td>
+      <td>IP address or hostname of the Oracle database server.</td>
+    </tr>
+    <tr>
+      <td>username</td>
+      <td>required</td>
+      <td style={{wordWrap: 'break-word'}}>(none)</td>
+      <td>String</td>
+      <td>Name of the Oracle database to use when connecting to the Oracle 
database server.</td>
+    </tr>
+    <tr>
+      <td>password</td>
+      <td>required</td>
+      <td style={{wordWrap: 'break-word'}}>(none)</td>
+      <td>String</td>
+      <td>Password to use when connecting to the Oracle database server.</td>
+    </tr>
+    <tr>
+      <td>database-name</td>
+      <td>required</td>
+      <td style={{wordWrap: 'break-word'}}>(none)</td>
+      <td>String</td>
+      <td>Database name of the Oracle server to monitor.</td>
+    </tr>
+    <tr>
+      <td>schema-name</td>
+      <td>required</td>
+      <td style={{wordWrap: 'break-word'}}>(none)</td>
+      <td>String</td>
+      <td>Schema name of the Oracle database to monitor.</td>
+    </tr>
+    <tr>
+      <td>table-name</td>
+      <td>required</td>
+      <td style={{wordWrap: 'break-word'}}>(none)</td>
+      <td>String</td>
+      <td>Table name of the Oracle database to monitor.</td>
+    </tr>
+    <tr>
+      <td>port</td>
+      <td>optional</td>
+      <td style={{wordWrap: 'break-word'}}>1521</td>
+      <td>Integer</td>
+      <td>Integer port number of the Oracle database server.</td>
+    </tr>
+    <tr>
+      <td>scan.startup.mode</td>
+      <td>optional</td>
+      <td style={{wordWrap: 'break-word'}}>initial</td>
+      <td>String</td>
+      <td>Optional startup mode for Oracle CDC consumer, valid enumerations 
are "initial"
+           and "latest-offset". 
+           Please see <a href="#startup-reading-position">Startup Reading 
Position</a>section for more detailed information.</td>
+    </tr>  
+    <tr>
+      <td>debezium.*</td>
+      <td>optional</td>
+      <td style={{wordWrap: 'break-word'}}>(none)</td>
+      <td>String</td>
+      <td>Pass-through Debezium's properties to Debezium Embedded Engine which 
is used to capture data changes from Oracle server.
+          For example: <code>'debezium.snapshot.mode' = 'never'</code>.
+          See more about the <a 
href="https://debezium.io/documentation/reference/1.5/connectors/oracle.html#oracle-connector-properties";>Debezium's
 Oracle Connector properties</a></td> 
+     </tr>
+    </tbody>
+</table>    
+</div>
+
+## Limitation
+
+### Can't perform checkpoint during scanning snapshot of tables
+
+During scanning snapshot of database tables, since there is no recoverable 
position, we can't perform checkpoints. In order to not perform checkpoints, 
Oracle CDC source will keep the checkpoint waiting to timeout. The timeout 
checkpoint will be recognized as failed checkpoint, by default, this will 
trigger a failover for the Flink job. So if the database table is large, it is 
recommended to add following Flink configurations to avoid failover because of 
the timeout checkpoints:
+
+```
+execution.checkpointing.interval: 10min
+execution.checkpointing.tolerable-failed-checkpoints: 100
+restart-strategy: fixed-delay
+restart-strategy.fixed-delay.attempts: 2147483647
+```
+
+## Available Metadata
+
+The following format metadata can be exposed as read-only (VIRTUAL) columns in 
a table definition.
+
+<table class="colwidths-auto docutils">
+  <thead>
+     <tr>
+       <th class="text-left" style={{width: '15%'}}>Key</th>
+       <th class="text-left" style={{width: '30%'}}>DataType</th>
+       <th class="text-left" style={{width: '55%'}}>Description</th>
+     </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <td>table_name</td>
+      <td>STRING NOT NULL</td>
+      <td>Name of the table that contain the row.</td>
+    </tr>
+    <tr>
+      <td>schema_name</td>
+      <td>STRING NOT NULL</td>
+      <td>Name of the schema that contain the row.</td>
+    </tr>
+    <tr>
+      <td>database_name</td>
+      <td>STRING NOT NULL</td>
+      <td>Name of the database that contain the row.</td>
+    </tr>
+    <tr>
+      <td>op_ts</td>
+      <td>TIMESTAMP_LTZ(3) NOT NULL</td>
+      <td>It indicates the time that the change was made in the database. 
<br/>If the record is read from snapshot of the table instead of the change 
stream, the value is always 0.</td>
+    </tr>
+  </tbody>
+</table>
+
+The extended CREATE TABLE example demonstrates the syntax for exposing these 
metadata fields:
+```sql
+CREATE TABLE products (
+    db_name STRING METADATA FROM 'database_name' VIRTUAL,
+    schema_name STRING METADATA FROM 'schema_name' VIRTUAL, 
+    table_name STRING METADATA  FROM 'table_name' VIRTUAL,
+    operation_ts TIMESTAMP_LTZ(3) METADATA FROM 'op_ts' VIRTUAL,
+    ID INT NOT NULL,
+    NAME STRING,
+    DESCRIPTION STRING,
+    WEIGHT DECIMAL(10, 3),
+    PRIMARY KEY(id) NOT ENFORCED
+) WITH (
+    'connector' = 'oracle-cdc',
+    'hostname' = 'localhost',
+    'port' = '1521',
+    'username' = 'flinkuser',
+    'password' = 'flinkpw',
+    'database-name' = 'XE',
+    'schema-name' = 'inventory',
+    'table-name' = 'products'
+);
+```
+
+**Note** : The Oracle dialect is case-sensitive, it converts field name to 
uppercase if the field name is not quoted, Flink SQL doesn't convert the field 
name. Thus for physical columns from oracle database, we should use its 
converted field name in Oracle when define an `oracle-cdc` table in Flink SQL.
+
+## Features
+
+### Exactly-Once Processing
+
+The Oracle Extract Node is a Flink Source connector which will read database 
snapshot first and then continues to read change events with **exactly-once 
processing** even failures happen. Please read [How the connector 
works](https://debezium.io/documentation/reference/1.5/connectors/oracle.html#how-the-oracle-connector-works).
+
+### Startup Reading Position
+
+The config option `scan.startup.mode` specifies the startup mode for Oracle 
CDC consumer. The valid enumerations are:
+
+- `initial` (default): Performs an initial snapshot on the monitored database 
tables upon first startup, and continue to read the latest binlog.
+- `latest-offset`: Never to perform a snapshot on the monitored database 
tables upon first startup, just read from
+  the change since the connector was started.
+
+_Note: the mechanism of `scan.startup.mode` option relying on Debezium's 
`snapshot.mode` configuration. So please do not use them together. If you 
specific both `scan.startup.mode` and `debezium.snapshot.mode` options in the 
table DDL, it may make `scan.startup.mode` doesn't work._
+
+### Single Thread Reading
+
+The Oracle Extract Node can't work in parallel reading, because there is only 
one task can receive change events.
+
+## Data Type Mapping
+
+<div class="wy-table-responsive">
+<table class="colwidths-auto docutils">
+    <thead>
+      <tr>
+        <th class="text-left">Oracle type<a 
href="https://docs.oracle.com/en/database/oracle/oracle-database/21/sqlrf/Data-Types.html";></a></th>
+        <th class="text-left">Flink SQL type</th>
+      </tr>
+    </thead>
+    <tbody>
+    <tr>
+      <td>NUMBER(p, s &lt;= 0), p - s &lt; 3
+      </td>
+      <td>TINYINT</td>
+    </tr>
+    <tr>
+      <td>NUMBER(p, s &lt;= 0), p - s &lt; 5
+      </td>
+      <td>SMALLINT</td>
+    </tr>
+    <tr>
+      <td>NUMBER(p, s &lt;= 0), p - s &lt; 10
+      </td>
+      <td>INT</td>
+    </tr>
+    <tr>
+      <td>NUMBER(p, s &lt;= 0), p - s &lt; 19
+      </td>
+      <td>BIGINT</td>
+    </tr>
+    <tr>
+      <td>NUMBER(p, s &lt;= 0), 19 &lt;= p - s &lt;= 38 <br/>
+      </td>
+      <td>DECIMAL(p - s, 0)</td>
+    </tr>
+    <tr>
+      <td>NUMBER(p, s &gt; 0)
+      </td>
+      <td>DECIMAL(p, s)</td>
+    </tr>
+    <tr>
+      <td>NUMBER(p, s &lt;= 0), p - s &gt; 38
+      </td>
+      <td>STRING</td>
+    </tr>
+    <tr>
+      <td> 
+        FLOAT<br/>
+        BINARY_FLOAT
+      </td>
+      <td>FLOAT</td>
+    </tr>
+    <tr>
+      <td>
+        DOUBLE PRECISION<br/>
+        BINARY_DOUBLE
+      </td>
+      <td>DOUBLE</td>
+    </tr>
+    <tr>
+      <td>NUMBER(1)</td>
+      <td>BOOLEAN</td>
+    </tr>
+    <tr>
+      <td>
+        DATE<br/>
+        TIMESTAMP [(p)]
+      </td>
+      <td>TIMESTAMP [(p)] [WITHOUT TIMEZONE]</td>
+    </tr>
+    <tr>
+      <td>TIMESTAMP [(p)] WITH TIME ZONE</td>
+      <td>TIMESTAMP [(p)] WITH TIME ZONE</td>
+    </tr>
+    <tr>
+      <td>TIMESTAMP [(p)] WITH LOCAL TIME ZONE</td>
+      <td>TIMESTAMP_LTZ [(p)]</td>
+    </tr>
+    <tr>
+      <td>
+        CHAR(n)<br/>
+        NCHAR(n)<br/>
+        NVARCHAR2(n)<br/>
+        VARCHAR(n)<br/>
+        VARCHAR2(n)<br/>
+        CLOB<br/>
+        NCLOB<br/>
+        XMLType
+      </td>
+      <td>STRING</td>
+    </tr>
+    <tr>
+      <td>BLOB<br/>
+      ROWID
+      </td>
+      <td>BYTES</td>
+    </tr>
+    <tr>
+      <td>
+      INTERVAL DAY TO SECOND<br/>
+      INTERVAL YEAR TO MONTH
+      </td>
+      <td>BIGINT</td>
+    </tr>
+    </tbody>
+</table>
+</div>
\ No newline at end of file
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/data_node/extract_node/mysql-cdc.md
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/data_node/extract_node/mysql-cdc.md
index 969484caa..545ac1661 100644
--- 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/data_node/extract_node/mysql-cdc.md
+++ 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/data_node/extract_node/mysql-cdc.md
@@ -11,7 +11,7 @@ MySQL Extract 节点允许从 MySQL 数据库中读取快照数据和增量数
 
 | Extract 节点                  | 版本                                             
                                                                                
                                                                                
                                                                                
                                                                                
                        | Driver                  |
 
|-----------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------|
-| [mysql-cdc](./mysql-cdc.md) | [MySQL](https://dev.mysql.com/doc): 5.6, 5.7, 
8.0.x <br/> [RDS MySQL](https://www.aliyun.com/product/rds/mysql): 5.6, 5.7, 
8.0.x <br/> [PolarDB MySQL](https://www.aliyun.com/product/polardb): 5.6, 5.7, 
8.0.x <br/> [Aurora MySQL](https://aws.amazon.com/cn/rds/aurora): 5.6, 5.7, 
8.0.x <br/> [MariaDB](https://mariadb.org): 10.x <br/> [PolarDB 
X](https://github.com/ApsaraDB/galaxysql): 2.0.1 | JDBC Driver: 8.0.21     |
+| [MySQL-CDC](./mysql-cdc.md) | [MySQL](https://dev.mysql.com/doc): 5.6, 5.7, 
8.0.x <br/> [RDS MySQL](https://www.aliyun.com/product/rds/mysql): 5.6, 5.7, 
8.0.x <br/> [PolarDB MySQL](https://www.aliyun.com/product/polardb): 5.6, 5.7, 
8.0.x <br/> [Aurora MySQL](https://aws.amazon.com/cn/rds/aurora): 5.6, 5.7, 
8.0.x <br/> [MariaDB](https://mariadb.org): 10.x <br/> [PolarDB 
X](https://github.com/ApsaraDB/galaxysql): 2.0.1 | JDBC Driver: 8.0.21     |
 
 ## 依赖
 
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/data_node/extract_node/oracle-cdc.md
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/data_node/extract_node/oracle-cdc.md
index dc322188a..1f1a6bcb9 100644
--- 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/data_node/extract_node/oracle-cdc.md
+++ 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/data_node/extract_node/oracle-cdc.md
@@ -1,4 +1,530 @@
 ---
 title: Oracle-CDC
 sidebar_position: 8
----
\ No newline at end of file
+---
+
+## 概述
+
+Oracle Extract 节点允许从 Oracle 数据库中读取快照数据和增量数据。本文档介绍如何设置 Oracle Extract 节点以对 
Oracle 数据库运行 SQL 查询。
+
+## 支持的版本
+
+| Extract 节点                  | 版本                                             
         | Driver                  |
+|-----------------------------|---------------------------------------------------------|-------------------------|
+| [Oracle-CDC](oracle-cdc.md) | [Oracle](https://www.oracle.com/index.html): 
11, 12, 19 | Oracle Driver: 19.3.0.0 |
+
+## 依赖
+
+为了设置 Oracle Extract 节点,下表提供了使用构建自动化工具(例如 Maven 或 SBT)和带有 Sort Connectors JAR 
包的 SQL 客户端的两个项目的依赖关系信息。
+
+### Maven 依赖
+
+```
+<dependency>
+    <groupId>org.apache.inlong</groupId>
+    <artifactId>sort-connector-oracle-cdc</artifactId>
+    <!-- 选择适合你的 Application 的版本 -->
+    <version>inlong_version</version>
+</dependency>
+```
+
+连接 Oracle 数据库还需要 Oracle 
驱动程序依赖项。请下载[ojdbc8-19.3.0.0.jar](https://repo1.maven.org/maven2/com/oracle/database/jdbc/ojdbc8/19.3.0.0/ojdbc8-19.3.0.0.jar)
 并将其放入 `FLINK_HOME/lib/`。
+
+## 设置 Oracle
+
+你必须为 Oracle 数据库启用日志归档,并定义一个对 Debezium Oracle 连接器监控的所有数据库具有适当权限的 Oracle 用户。
+
+### 对于非 CDB 数据库
+
+- 启用日志归档
+
+  (1.1). 以 DBA 身份连接到数据库
+    ```sql
+    ORACLE_SID=SID
+    export ORACLE_SID
+    sqlplus /nolog
+      CONNECT sys/password AS SYSDBA
+    ```
+
+  (1.2). 启用日志归档
+    ```sql
+    alter system set db_recovery_file_dest_size = 10G;
+    alter system set db_recovery_file_dest = 
'/opt/oracle/oradata/recovery_area' scope=spfile;
+    shutdown immediate;
+    startup mount;
+    alter database archivelog;
+    alter database open;
+   ```
+  **Note:**
+
+    - Enable log archiving requires database restart, pay attention when try 
to do it
+    - The archived logs will occupy a large amount of disk space, so consider 
clean the expired logs the periodically
+
+  (1.3). 检查是否启用了日志归档
+    ```sql
+    -- Should now "Database log mode: Archive Mode"
+    archive log list;
+    ```
+  **注意:**
+
+  必须为捕获的表或数据库启用补充日志记录,以便数据更改能够捕获已更改数据库行的<em>之前</em>状态。
+  下面说明了如何在表/数据库级别进行配置。
+   ```sql
+   -- 为特定表启用补充日志记录:
+   ALTER TABLE inventory.customers ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
+   ```
+   ```sql
+   -- 为数据库启用补充日志记录:
+   ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
+   ```
+
+- 创建具有权限的 Oracle 用户
+
+  (2.1). 创建表空间
+   ```sql
+   sqlplus sys/password@host:port/SID AS SYSDBA;
+     CREATE TABLESPACE logminer_tbs DATAFILE 
'/opt/oracle/oradata/SID/logminer_tbs.dbf' SIZE 25M REUSE AUTOEXTEND ON MAXSIZE 
UNLIMITED;
+     exit;
+   ```
+
+  (2.2). 创建用户并授予权限
+   ```sql
+   sqlplus sys/password@host:port/SID AS SYSDBA;
+     CREATE USER flinkuser IDENTIFIED BY flinkpw DEFAULT TABLESPACE 
LOGMINER_TBS QUOTA UNLIMITED ON LOGMINER_TBS;
+     GRANT CREATE SESSION TO flinkuser;
+     GRANT SET CONTAINER TO flinkuser;
+     GRANT SELECT ON V_$DATABASE to flinkuser;
+     GRANT FLASHBACK ANY TABLE TO flinkuser;
+     GRANT SELECT ANY TABLE TO flinkuser;
+     GRANT SELECT_CATALOG_ROLE TO flinkuser;
+     GRANT EXECUTE_CATALOG_ROLE TO flinkuser;
+     GRANT SELECT ANY TRANSACTION TO flinkuser;
+     GRANT LOGMINING TO flinkuser;
+
+     GRANT CREATE TABLE TO flinkuser;
+     GRANT LOCK ANY TABLE TO flinkuser;
+     GRANT ALTER ANY TABLE TO flinkuser;
+     GRANT CREATE SEQUENCE TO flinkuser;
+
+     GRANT EXECUTE ON DBMS_LOGMNR TO flinkuser;
+     GRANT EXECUTE ON DBMS_LOGMNR_D TO flinkuser;
+
+     GRANT SELECT ON V_$LOG TO flinkuser;
+     GRANT SELECT ON V_$LOG_HISTORY TO flinkuser;
+     GRANT SELECT ON V_$LOGMNR_LOGS TO flinkuser;
+     GRANT SELECT ON V_$LOGMNR_CONTENTS TO flinkuser;
+     GRANT SELECT ON V_$LOGMNR_PARAMETERS TO flinkuser;
+     GRANT SELECT ON V_$LOGFILE TO flinkuser;
+     GRANT SELECT ON V_$ARCHIVED_LOG TO flinkuser;
+     GRANT SELECT ON V_$ARCHIVE_DEST_STATUS TO flinkuser;
+     exit;
+   ```
+
+### 对于 CDB 数据库
+
+总的来说,配置 CDB 数据库的步骤与非 CDB 数据库非常相似,但命令可能会有所不同。
+
+- 启用日志归档
+   ```sql
+   ORACLE_SID=ORCLCDB
+   export ORACLE_SID
+   sqlplus /nolog
+     CONNECT sys/password AS SYSDBA
+     alter system set db_recovery_file_dest_size = 10G;
+     -- should exist
+     alter system set db_recovery_file_dest = 
'/opt/oracle/oradata/recovery_area' scope=spfile;
+     shutdown immediate
+     startup mount
+     alter database archivelog;
+     alter database open;
+     -- Should show "Database log mode: Archive Mode"
+     archive log list
+     exit;
+   ```
+  **注意:**
+  您还可以使用以下命令启用补充日志记录:
+   ```sql
+   -- Enable supplemental logging for a specific table:
+   ALTER TABLE inventory.customers ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
+   -- Enable supplemental logging for database
+   ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
+   ```
+
+- 创建具有权限的 Oracle 用户
+   ```sql
+   sqlplus sys/password@//localhost:1521/ORCLCDB as sysdba
+     CREATE TABLESPACE logminer_tbs DATAFILE 
'/opt/oracle/oradata/ORCLCDB/logminer_tbs.dbf' SIZE 25M REUSE AUTOEXTEND ON 
MAXSIZE UNLIMITED;
+     exit
+   ```
+   ```sql
+   sqlplus sys/password@//localhost:1521/ORCLPDB1 as sysdba
+     CREATE TABLESPACE logminer_tbs DATAFILE 
'/opt/oracle/oradata/ORCLCDB/ORCLPDB1/logminer_tbs.dbf' SIZE 25M REUSE 
AUTOEXTEND ON MAXSIZE UNLIMITED;
+     exit
+   ```
+   ```sql
+   sqlplus sys/password@//localhost:1521/ORCLCDB as sysdba
+     CREATE USER flinkuser IDENTIFIED BY flinkpw DEFAULT TABLESPACE 
logminer_tbs QUOTA UNLIMITED ON logminer_tbs CONTAINER=ALL;
+     GRANT CREATE SESSION TO flinkuser CONTAINER=ALL;
+     GRANT SET CONTAINER TO flinkuser CONTAINER=ALL;
+     GRANT SELECT ON V_$DATABASE to flinkuser CONTAINER=ALL;
+     GRANT FLASHBACK ANY TABLE TO flinkuser CONTAINER=ALL;
+     GRANT SELECT ANY TABLE TO flinkuser CONTAINER=ALL;
+     GRANT SELECT_CATALOG_ROLE TO flinkuser CONTAINER=ALL;
+     GRANT EXECUTE_CATALOG_ROLE TO flinkuser CONTAINER=ALL;
+     GRANT SELECT ANY TRANSACTION TO flinkuser CONTAINER=ALL;
+     GRANT LOGMINING TO flinkuser CONTAINER=ALL;
+     GRANT CREATE TABLE TO flinkuser CONTAINER=ALL;
+     GRANT LOCK ANY TABLE TO flinkuser CONTAINER=ALL;
+     GRANT CREATE SEQUENCE TO flinkuser CONTAINER=ALL;
+
+     GRANT EXECUTE ON DBMS_LOGMNR TO flinkuser CONTAINER=ALL;
+     GRANT EXECUTE ON DBMS_LOGMNR_D TO flinkuser CONTAINER=ALL;
+
+     GRANT SELECT ON V_$LOG TO flinkuser CONTAINER=ALL;
+     GRANT SELECT ON V_$LOG_HISTORY TO flinkuser CONTAINER=ALL;
+     GRANT SELECT ON V_$LOGMNR_LOGS TO flinkuser CONTAINER=ALL;
+     GRANT SELECT ON V_$LOGMNR_CONTENTS TO flinkuser CONTAINER=ALL;
+     GRANT SELECT ON V_$LOGMNR_PARAMETERS TO flinkuser CONTAINER=ALL;
+     GRANT SELECT ON V_$LOGFILE TO flinkuser CONTAINER=ALL;
+     GRANT SELECT ON V_$ARCHIVED_LOG TO flinkuser CONTAINER=ALL;
+     GRANT SELECT ON V_$ARCHIVE_DEST_STATUS TO flinkuser CONTAINER=ALL;
+     exit
+   ```
+
+查看更多关于 [设置 
Oracle](https://debezium.io/documentation/reference/1.5/connectors/oracle.html#setting-up-oracle)
+
+## 如何创建 Oracle Extract 节点
+
+### SQL API 用法
+
+Oracle Extract 节点可以定义如下:
+
+```sql 
+-- 创建 an Oracle Extract 节点 'products' in Flink SQL
+Flink SQL> CREATE TABLE products (
+     ID INT NOT NULL,
+     NAME STRING,
+     DESCRIPTION STRING,
+     WEIGHT DECIMAL(10, 3),
+     PRIMARY KEY(id) NOT ENFORCED
+     ) WITH (
+     'connector' = 'oracle-cdc',
+     'hostname' = 'localhost',
+     'port' = '1521',
+     'username' = 'flinkuser',
+     'password' = 'flinkpw',
+     'database-name' = 'XE',
+     'schema-name' = 'inlong',
+     'table-name' = 'user');
+     
+Flink SQL> SELECT * FROM products;
+```
+**注意:**
+
+当使用 CDB + PDB 模型时,您需要在 Flink DDL 中添加一个额外的选项 `'debezium.database.pdb.name' = 
'xxx'` 来指定要连接的 PDB 的名称。
+
+### InLong Dashboard 用法
+
+TODO: 将在未来支持此功能。
+
+### InLong Manager Client 用法
+
+TODO: 将在未来支持此功能。
+
+## Oracle Extact 节点参数
+
+<div class="highlight">
+<table class="colwidths-auto docutils">
+   <thead>
+      <tr>
+        <th class="text-left" style={{width: '25%'}}>参数</th>
+        <th class="text-left" style={{width: '8%'}}>是否必须</th>
+        <th class="text-left" style={{width: '7%'}}>默认值</th>
+        <th class="text-left" style={{width: '10%'}}>数据类型</th>
+        <th class="text-left" style={{width: '50%'}}>描述</th>
+      </tr>
+    </thead>
+    <tbody>
+    <tr>
+      <td>connector</td>
+      <td>required</td>
+      <td style={{wordWrap: 'break-word'}}>(none)</td>
+      <td>String</td>
+      <td>指定要使用的连接器,这里应该是 <code>'oracle-cdc'</code>。</td>
+    </tr>
+    <tr>
+      <td>hostname</td>
+      <td>required</td>
+      <td style={{wordWrap: 'break-word'}}>(none)</td>
+      <td>String</td>
+      <td>Oracle 数据库服务器的 IP 地址或主机名。</td>
+    </tr>
+    <tr>
+      <td>username</td>
+      <td>required</td>
+      <td style={{wordWrap: 'break-word'}}>(none)</td>
+      <td>String</td>
+      <td>连接到 Oracle 数据库服务器时要使用的 Oracle 数据库的名称。</td>
+    </tr>
+    <tr>
+      <td>password</td>
+      <td>required</td>
+      <td style={{wordWrap: 'break-word'}}>(none)</td>
+      <td>String</td>
+      <td>连接到 Oracle 数据库服务器时使用的密码。</td>
+    </tr>
+    <tr>
+      <td>database-name</td>
+      <td>required</td>
+      <td style={{wordWrap: 'break-word'}}>(none)</td>
+      <td>String</td>
+      <td>要监视的 Oracle 服务器的数据库名称。</td>
+    </tr>
+    <tr>
+      <td>schema-name</td>
+      <td>required</td>
+      <td style={{wordWrap: 'break-word'}}>(none)</td>
+      <td>String</td>
+      <td>要监视的 Oracle 数据库的 Schema 名称。</td>
+    </tr>
+    <tr>
+      <td>table-name</td>
+      <td>required</td>
+      <td style={{wordWrap: 'break-word'}}>(none)</td>
+      <td>String</td>
+      <td>要监视的 Oracle 数据库的表名。</td>
+    </tr>
+    <tr>
+      <td>port</td>
+      <td>optional</td>
+      <td style={{wordWrap: 'break-word'}}>1521</td>
+      <td>Integer</td>
+      <td>Oracle 数据库服务器的整数端口号。</td>
+    </tr>
+    <tr>
+      <td>scan.startup.mode</td>
+      <td>optional</td>
+      <td style={{wordWrap: 'break-word'}}>initial</td>
+      <td>String</td>
+      <td>
+Oracle CDC 消费者的可选启动模式,有效枚举为"initial"
+           和"latest-offset"。
+           请参阅<a href="#startup-reading-position">启动阅读位置</a>部分了解更多详细信息。</td>
+    </tr>  
+    <tr>
+      <td>debezium.*</td>
+      <td>optional</td>
+      <td style={{wordWrap: 'break-word'}}>(none)</td>
+      <td>String</td>
+      <td>将 Debezium 的属性整合到用于从 Oracle 服务器捕获数据更改的 Debezium Embedded Engine。
+          例如:<code>'debezium.snapshot.mode' = 'never'</code>。
+          详细了解 <a 
href="https://debezium.io/documentation/reference/1.5/connectors/oracle.html#oracle-connector-properties";>Debezium
 的 Oracle 连接器属性</a></td> 
+     </tr>
+    </tbody>
+</table>    
+</div>
+
+## 局限性
+
+### 在扫描表的快照期间无法执行 `checkpoint`
+
+在扫描数据库表的快照时,由于没有可恢复的位置,我们无法执行检查点。为了不执行检查点,Oracle CDC 
源将保持检查点等待超时。超时检查点将被识别为失败的检查点,默认情况下,这将触发 Flink 作业的故障转移。所以如果数据库表很大,建议添加以下 Flink 
配置,避免因为超时检查点而导致故障转移:
+```
+execution.checkpointing.interval: 10min
+execution.checkpointing.tolerable-failed-checkpoints: 100
+restart-strategy: fixed-delay
+restart-strategy.fixed-delay.attempts: 2147483647
+```
+
+## 可用的元数据字段
+
+以下格式元数据可以作为表定义中的只读 (VIRTUAL) 列公开。
+
+<table class="colwidths-auto docutils">
+  <thead>
+     <tr>
+       <th class="text-left" style={{width: '15%'}}>字段名称</th>
+       <th class="text-left" style={{width: '30%'}}>数据类型</th>
+       <th class="text-left" style={{width: '55%'}}>描述</th>
+     </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <td>table_name</td>
+      <td>STRING NOT NULL</td>
+      <td>Name of the table that contain the row.</td>
+    </tr>
+    <tr>
+      <td>schema_name</td>
+      <td>STRING NOT NULL</td>
+      <td>Name of the schema that contain the row.</td>
+    </tr>
+    <tr>
+      <td>database_name</td>
+      <td>STRING NOT NULL</td>
+      <td>Name of the database that contain the row.</td>
+    </tr>
+    <tr>
+      <td>op_ts</td>
+      <td>TIMESTAMP_LTZ(3) NOT NULL</td>
+      <td>It indicates the time that the change was made in the database. 
<br/>If the record is read from snapshot of the table instead of the change 
stream, the value is always 0.</td>
+    </tr>
+  </tbody>
+</table>
+
+扩展的 CREATE TABLE 示例演示了公开这些元数据字段的语法:
+
+```sql
+CREATE TABLE products (
+    db_name STRING METADATA FROM 'database_name' VIRTUAL,
+    schema_name STRING METADATA FROM 'schema_name' VIRTUAL, 
+    table_name STRING METADATA  FROM 'table_name' VIRTUAL,
+    operation_ts TIMESTAMP_LTZ(3) METADATA FROM 'op_ts' VIRTUAL,
+    ID INT NOT NULL,
+    NAME STRING,
+    DESCRIPTION STRING,
+    WEIGHT DECIMAL(10, 3),
+    PRIMARY KEY(id) NOT ENFORCED
+) WITH (
+    'connector' = 'oracle-cdc',
+    'hostname' = 'localhost',
+    'port' = '1521',
+    'username' = 'flinkuser',
+    'password' = 'flinkpw',
+    'database-name' = 'XE',
+    'schema-name' = 'inventory',
+    'table-name' = 'products'
+);
+```
+
+**注意**:Oracle 方言是区分大小写的,如果字段名没有被引用,它会将字段名转换为大写,Flink SQL 不会转换字段名。因此对于 oracle 
数据库中的物理列,我们在 Flink SQL 中定义 `oracle-cdc` 表时应该使用其在 Oracle 中转换后的字段名称。
+
+## 特征
+
+### Exactly-Once 处理
+
+Oracle Extract 节点是一个 Flink Source 连接器,它将首先读取数据库快照,然后通过**exactly-once 
处理**继续读取更改事件,即使发生故障。请阅读 
[连接器的工作原理](https://debezium.io/documentation/reference/1.5/connectors/oracle.html#how-the-oracle-connector-works)。
+
+### 启动读取位置
+
+<a name="startup-reading-position"></a>
+
+配置选项 `scan.startup.mode` 指定 Oracle Extract 节点消费者的启动模式。有效的枚举是:
+
+- `initial` (默认): 首次启动时对被监控的数据库表进行初始快照,并继续读取最新的 Binlog。
+- `latest-offset`: 永远不要在第一次启动时对受监控的数据库表执行快照,只需从自连接器启动以来的更改。
+
+_注意: `scan.startup.mode` 选项的机制依赖于 Debezium 的`snapshot.mode` 
配置。所以请不要一起使用它们。如果您在 DDL 表中同时指定了 `scan.startup.mode` 和 `debezium.snapshot.mode` 
选项,可能会导致 `scan.startup.mode` 不起作用。_
+
+### 单线程读取
+
+Oracle Extract 节点不能并行读取,因为只有一个任务可以接收更改事件。
+
+## 数据类型映射
+
+<div class="wy-table-responsive">
+<table class="colwidths-auto docutils">
+    <thead>
+      <tr>
+        <th class="text-left">Oracle type<a 
href="https://docs.oracle.com/en/database/oracle/oracle-database/21/sqlrf/Data-Types.html";></a></th>
+        <th class="text-left">Flink SQL type</th>
+      </tr>
+    </thead>
+    <tbody>
+    <tr>
+      <td>NUMBER(p, s &lt;= 0), p - s &lt; 3
+      </td>
+      <td>TINYINT</td>
+    </tr>
+    <tr>
+      <td>NUMBER(p, s &lt;= 0), p - s &lt; 5
+      </td>
+      <td>SMALLINT</td>
+    </tr>
+    <tr>
+      <td>NUMBER(p, s &lt;= 0), p - s &lt; 10
+      </td>
+      <td>INT</td>
+    </tr>
+    <tr>
+      <td>NUMBER(p, s &lt;= 0), p - s &lt; 19
+      </td>
+      <td>BIGINT</td>
+    </tr>
+    <tr>
+      <td>NUMBER(p, s &lt;= 0), 19 &lt;= p - s &lt;= 38 <br/>
+      </td>
+      <td>DECIMAL(p - s, 0)</td>
+    </tr>
+    <tr>
+      <td>NUMBER(p, s &gt; 0)
+      </td>
+      <td>DECIMAL(p, s)</td>
+    </tr>
+    <tr>
+      <td>NUMBER(p, s &lt;= 0), p - s &gt; 38
+      </td>
+      <td>STRING</td>
+    </tr>
+    <tr>
+      <td> 
+        FLOAT<br/>
+        BINARY_FLOAT
+      </td>
+      <td>FLOAT</td>
+    </tr>
+    <tr>
+      <td>
+        DOUBLE PRECISION<br/>
+        BINARY_DOUBLE
+      </td>
+      <td>DOUBLE</td>
+    </tr>
+    <tr>
+      <td>NUMBER(1)</td>
+      <td>BOOLEAN</td>
+    </tr>
+    <tr>
+      <td>
+        DATE<br/>
+        TIMESTAMP [(p)]
+      </td>
+      <td>TIMESTAMP [(p)] [WITHOUT TIMEZONE]</td>
+    </tr>
+    <tr>
+      <td>TIMESTAMP [(p)] WITH TIME ZONE</td>
+      <td>TIMESTAMP [(p)] WITH TIME ZONE</td>
+    </tr>
+    <tr>
+      <td>TIMESTAMP [(p)] WITH LOCAL TIME ZONE</td>
+      <td>TIMESTAMP_LTZ [(p)]</td>
+    </tr>
+    <tr>
+      <td>
+        CHAR(n)<br/>
+        NCHAR(n)<br/>
+        NVARCHAR2(n)<br/>
+        VARCHAR(n)<br/>
+        VARCHAR2(n)<br/>
+        CLOB<br/>
+        NCLOB<br/>
+        XMLType
+      </td>
+      <td>STRING</td>
+    </tr>
+    <tr>
+      <td>BLOB<br/>
+      ROWID
+      </td>
+      <td>BYTES</td>
+    </tr>
+    <tr>
+      <td>
+      INTERVAL DAY TO SECOND<br/>
+      INTERVAL YEAR TO MONTH
+      </td>
+      <td>BIGINT</td>
+    </tr>
+    </tbody>
+</table>
+</div>
\ No newline at end of file

Reply via email to