
# 同步前构造数据
同步前需要在源库构造一些数据类型，供同步完成后验证数据。
DRS支持的数据类型如下所示：
表1数据类型映射关系 
| **源库数据类型**    | **目标库数据类型**                    | **源库数据类型做主键，同步能力** | **源库数据类型做非主键，同步能力** | **源库数据类型做主键，对比能力** | **源库数据类型做非主键，对比能力** | **备注**                                         |
|:---|:---|:---|:---|:---|:---|:---|
| CHAR          | character                      | 支持                 | 支持                  | 支持，忽略字符前后的空格       | 支持，忽略字符前后的空格        | -                                              |
| VARCHAR       | character varying              | 支持                 | 支持                  | 支持                 | 支持                  | 源目标库数据表示范围不同，存在精度损失。                           |
| VARCHAR2      | character varying              | 支持                 | 支持                  | 支持                 | 支持                  | -                                              |
| NCHAR         | character                      | 支持                 | 支持                  | 支持，忽略字符前后的空格       | 支持，忽略字符前后的空格        | -                                              |
| NVARCHAR2     | nvarchar2                      | 支持                 | 支持                  | 支持                 | 支持                  | -                                              |
| NUMBER        | numeric                        | 支持                 | 支持                  | 支持                 | 支持                  | -                                              |
| NUMBER (6,3)  | numeric(6,3)                   | 支持                 | 支持                  | 支持                 | 支持                  | -                                              |
| NUMBER (6,0)  | Integer                        | 支持                 | 支持                  | 支持                 | 支持                  | -                                              |
| NUMBER (3)    | smallint                       | 支持                 | 支持                  | 支持                 | 支持                  | -                                              |
| NUMBER (6,-2) | integer                        | 支持                 | 支持                  | 支持                 | 支持                  | -                                              |
| BINARY_FLOAT  | real                           | 不支持（目标库不支持做主键建表）   | 支持                  | 不支持                | 支持                  | 源目标库数据表示范围不同，存在精度损失。                           |
| BINARY_DOUBLE | double precision               | 不支持（目标库不支持做主键建表）   | 支持                  | 不支持                | 支持                  | -                                              |
| FLOAT         | real                           | 不支持（目标库不支持做主键建表）   | 支持                  | 不支持                | 支持                  | 源目标库数据表示范围不同，存在精度损失。                           |
| INT           | numeric                        | 支持                 | 支持                  | 支持                 | 支持                  | -                                              |
| INTEGER       | numeric                        | 支持                 | 支持                  | 支持                 | 支持                  | -                                              |
| DATE          | date                           | 支持                 | 支持                  | 不支持                | 支持                  | DRS在目标库建表时类型为date，此时源目标库数据表示范围不同，存在精度损失，不支持对比。 |
| TIMESTAMP     | timestamp(6) without time zone | 支持                 | 支持                  | 不支持                | 校验到小数点后6位           | 源库使用限制：支持的最大精度是6。                              |
| TIMESTAMP_TZ  | timestamp(6) with time zone    | 不支持(源库不支持做主键建表)    | 支持                  | 不支持                | 过滤该列                | -                                              |
| TIMESTAMP_LTZ | timestamp(6) with time zone    | 不支持（目标库不支持做主键建表）   | 支持                  | 不支持                | 过滤该列                | -                                              |
| INTERVAL_YM   | interval year to month         | 支持                 | 支持                  | 不支持                | 不支持                 | 增量同步不支持该类型。                                    |
| INTERVAL_DS   | interval day to second         | 支持                 | 支持                  | 不支持                | 不支持                 | 增量同步不支持该类型。源库使用限制：支持的最大精度是6。                   |
| BLOB          | bytea                          | 不支持(源库不支持做主键建表)    | 支持                  | 不支持                | 过滤该列                | -                                              |
| CLOB          | text                           | 不支持(源库不支持做主键建表)    | 支持                  | 不支持                | 过滤该列                | -                                              |
| NCLOB         | text                           | 不支持(源库不支持做主键建表)    | 支持                  | 不支持                | 过滤该列                | -                                              |
| LONG          | text                           | 不支持(源库不支持做主键建表)    | 支持                  | 不支持                | 过滤该列                | -                                              |
| LONG_RAW      | bytea                          | 不支持(源库不支持做主键建表)    | 支持                  | 不支持                | 过滤该列                | -                                              |
| RAW           | bytea                          | 不支持（目标库不支持做主键建表）   | 支持                  | 不支持                | 支持                  | -                                              |
| RowID         | character varying(18)          | 支持                 | 支持                  | 支持                 | 支持                  | -                                              |
| BFILE         | -                              | 不支持                | 不支持                 | 不支持                | 不支持                 | 源库使用限制：不支持bfile类型。                             |
| XMLTYPE       | -                              | 不支持                | 不支持                 | 不支持                | 不支持                 | 源库使用限制：不支持xmltype类型。                           |
| UROWID        | -                              | 不支持                | 不支持                 | 不支持                | 不支持                 | 全量增量都不支持同步。                                    |
| sdo_geometry  | -                              | 不支持                | 不支持                 | 不支持                | 不支持                 | 源库使用限制：不支持sdo_geometry类型。                      |
| NUMBER(\*，0)  | numeric                        | 支持                 | 支持                  | 支持                 | 支持                  | -                                              |
   
执行如下步骤在源库构造数据：
1. 根据本地的Oracle数据库的IP地址，通过数据库连接工具连接数据库。
2. 根据DRS支持的数据类型，在源库执行语句构造数据。 
   1. 创建一个测试用的用户。 **create user** *test_info* **identified by** *xxx* **;**
      test_info为本次实践创建的用户，xxx为用户的密码，请根据实际情况替换。
      
   
   2. 给用户赋权。 **grant dba to** *test_info* **;**
      
   
   3. 在当前用户下创建一个数据表。 **CREATE TABLE** *test_info* **.** *DATATYPELIST* **(**
      **ID INT,**
      **COL_01_CHAR______E CHAR(100),**
      **COL_02_NCHAR_____E NCHAR(100),**
      **COL_03_VARCHAR___E VARCHAR(1000),**
      **COL_04_VARCHAR2__E VARCHAR2(1000),**
      **COL_05_NVARCHAR2_E NVARCHAR2(1000),**
      **COL_06_NUMBER____E NUMBER(38,0),**
      **COL_07_FLOAT_____E FLOAT(126),**
      **COL_08_BFLOAT____E BINARY_FLOAT,**
      **COL_09_BDOUBLE___E BINARY_DOUBLE,**
      **COL_10_DATE______E DATE DEFAULT SYSTIMESTAMP,**
      **COL_11_TS________E TIMESTAMP(6),**
      **COL_12_TSTZ______E TIMESTAMP(6) WITH TIME ZONE,**
      **COL_13_TSLTZ_____E TIMESTAMP(6) WITH LOCAL TIME ZONE,**
      **COL_14_CLOB______E CLOB DEFAULT EMPTY_CLOB(),**
      **COL_15_BLOB______E BLOB DEFAULT EMPTY_BLOB(),**
      **COL_16_NCLOB_____E NCLOB DEFAULT EMPTY_CLOB(),**
      **COL_17_RAW_______E RAW(1000),**
      **COL_19_LONGRAW___E LONG RAW,**
      **COL_24_ROWID_____E ROWID,**
      **PRIMARY KEY(ID)**
      **);**
      
   
   4. 插入两行数据。 **insert into test_info.DATATYPELIST values(4,'huawei','xian','Shannxi','zhongguo','shijie', 666,12.321,1.123,2.123,sysdate,sysdate,sysdate,sysdate,'hw','cb','df','FF','FF','AAAYEVAAJAAAACrAAA');**
      **insert into test_info.DATATYPELIST values(2,'Migrate-test','test1','test2','test3','test4', 666,12.321,1.123,2.123,sysdate,sysdate,sysdate,sysdate,'hw','cb','df','FF','FF','AAAYEVAAJAAAACrAAA');**
      
   
   5. 使语句生效。 **commit;**
      
   
   
   
   
3. 在目标端创建库。 
   1. 登录[华为云控制台](https://console.huaweicloud.com)。
   
   2. 单击管理控制台左上角的![](https://support.huaweicloud.com/bestpractice-drs/zh-cn_image_0000001214847275.png)，选择区域。
   
   3. 单击左侧的服务列表图标，选择"数据库 \> 数据管理服务 DAS"。
   
   4. 在数据管理服务DAS左侧导航栏，单击"开发工具"，进入开发工具数据库登录列表页面。
   
   5. 单击"新增数据库实例登录"，打开新增数据库实例登录窗口。
   
   6. 选择"数据库引擎"、"数据库来源"，填写登录用户名、密码以及描述（非必填项）信息，开启定时采集、SQL执行记录功能。 如开启"定时采集"，需勾选"记住密码"。
      
      
   
   
   
   7. 单击"测试连接"测试连接是否成功。 如测试连接成功，将提示"连接成功"，您可继续新增操作。如测试连接失败，将提示连接失败原因，您需根据提示信息进行修改，以便新增数据库登录成功。
      
   
   8. 设置完登录信息，单击"立即新增"。
   
   9. 新增完成后，单击新增登录的"登录"，登录当前数据库。 ![](https://support.huaweicloud.com/bestpractice-drs/zh-cn_image_0000001214727301.png)
      
   
   10. 选择"SQL操作"\> "SQL查询"进入SQL查询页面。 ![](https://support.huaweicloud.com/bestpractice-drs/zh-cn_image_0000001214847415.png)
       
   
   11. 执行如下语句创建兼容Oracle的数据库。
       此例中为：test_database_info，请根据实际情况选择。
       ```
       CREATE DATABASE test_database_info DBCOMPATIBILITY 'ORA';
       ```
       
   
   
   
   
 
