homework-jianmu/docs/zh/06-advanced/05-data-in/15-oracle.md

105 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: "Oracle"
sidebar_label: "Oracle"
---
本节讲述如何通过 Explorer 界面创建数据迁移任务,从 Oracle 迁移数据到当前 TDengine 集群。
## 功能概述
Oracle 数据库系统是世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小微机环境。它是一种高效率的、可靠性好的、适应高吞吐量的数据库方案。
TDengine 可以高效地从 Oracle 读取数据并将其写入 TDengine以实现历史数据迁移或实时数据同步。
## 创建任务
### 1. 新增数据源
在数据写入页面中点击左上角的 **+新增数据源** 按钮进入新增数据源页面,如下图所示:
![Common-zh00-EnterDataSourcePage.png](./pic/Common-zh00-EnterDataSourcePage.png "进入新增数据源页面")
### 2. 配置基本信息
**名称** 字段中输入任务名称,例如 *`test_oracle_01`*
选择 **类型** 下拉框中的 *`Oracle`* ,如下图所示(选择完成后页面中的字段会发生变化)。
**代理** 是非必填项,如有需要,可以在下拉框中选择指定的代理,也可以先点击右侧的 **+创建新的代理** 按钮创建一个新的代理 。
**目标数据库** 是必填项,可以先点击右侧的 **+创建数据库** 按钮创建一个新的数据库。
![oracle-01.png](./pic/oracle-01.png "选择数据源类型为 Oracle")
### 3. 配置连接信息
**连接配置** 区域填写 *`源 Oracle 数据库的连接信息`*,如下图所示:
![oracle-02.png](./pic/oracle-02.png "填写源 Oracle 数据库的连接信息")
### 4. 配置认证信息
**用户** 输入源 Oracle 数据库的用户,该用户必须在该组织中拥有读取权限。
**密码** 输入源 Oracle 数据库中上方用户的登陆密码。
![ oracle-03.png](./pic/oracle-03.png "配置认证信息")
然后点击 **检查连通性** 按钮,用户可以点击此按钮检查上方填写的信息是否可以正常获取源 Oracle 数据库的数据。
### 5. 配置 SQL 查询
**子表字段** 用于拆分子表的字段,它是一条 select distinct 的 SQL 语句,查询指定字段组合的非重复项,通常与 transform 中的 tag 相对应:
> 此项配置主要为了解决数据迁移乱序问题,需要结合**SQL 模板**共同使用,否则不能达到预期效果,使用示例如下:
> 1. 子表字段填写语句 `select distinct col_name1, col_name2 from table`,它表示使用源表中的字段 col_name1 与 col_name2 拆分目标超级表的子表
> 2. 在**SQL 模板**中添加子表字段占位符,例如 `select * from table where ts >= ${start} and ts < ${end} and ${col_name1} and ${col_name2}` 中的 `${col_name1} and ${col_name2}` 部分
> 3. 在 **transform** 中配置 `col_name1` 与 `col_name2` 两个 tag 映射
**SQL 模板** 用于查询的 SQL 语句模板SQL 语句中必须包含时间范围条件且开始时间和结束时间必须成对出现。SQL 语句模板中定义的时间范围由源数据库中的某个代表时间的列和下面定义的占位符组成。
> SQL使用不同的占位符表示不同的时间格式要求具体有以下占位符格式
> 1. `${start}`、`${end}`:表示 RFC3339 格式时间戳,如: 2024-03-14T08:00:00+0800
> 2. `${start_no_tz}`、`${end_no_tz}`: 表示不带时区的 RFC3339 字符串2024-03-14T08:00:00
> 3. `${start_date}`、`${end_date}`:表示仅日期,但 Oracle 中没有纯日期类型所以它会带零时零分零秒2024-03-14 00:00:00所以使用 `date <= ${end_date}` 时需要注意,它不能包含 2024-03-14 当天数据
>
> 为了解决迁移数据乱序的问题,应在查询语句中添加排序条件,例如 `order by ts asc`。
**起始时间** 迁移数据的起始时间,此项为必填字段。
**结束时间** 迁移数据的结束时间,可留空。如果设置,则迁移任务执行到结束时间后,任务完成自动停止;如果留空,则持续同步实时数据,任务不会自动停止。
**查询间隔** 分段查询数据的时间间隔默认1天。为了避免查询数据量过大一次数据同步子任务会使用查询间隔分时间段查询数据。
**延迟时长** 实时同步数据场景中,为了避免延迟写入的数据丢失,每次同步任务会读取延迟时长之前的数据。
![ oracle-04.png](./pic/oracle-04.png "配置数据采集")
### 6. 配置数据映射
**数据映射** 区域填写数据映射相关的配置参数。
点击 **从服务器检索** 按钮,从 Oracle 服务器获取示例数据。
**从列中提取或拆分** 中填写从消息体中提取或拆分的字段,例如:将 vValue 字段拆分成 `vValue_0``vValue_1` 这 2 个字段,选择 split 提取器seperator 填写分割符 `,`, number 填写 2。
**过滤** 中,填写过滤条件,例如:填写`Value > 0`,则只有 Value 大于 0 的数据才会被写入 TDengine。
**映射** 中,选择要映射到 TDengine 的超级表,以及映射到超级表的列。
点击 **预览**,可以查看映射的结果。
![oracle-05.png](pic/oracle-05.png)
### 7. 配置高级选项
**高级选项** 区域是默认折叠的,点击右侧 `>` 可以展开,如下图所示:
**最大读取并发数** 数据源连接数或读取线程数限制,当默认参数不满足需要或需要调整资源使用量时修改此参数。
**批次大小** 单次发送的最大消息数或行数。默认是 10000。
![oracle-06.png](pic/oracle-06.png)
### 8. 创建完成
点击 **提交** 按钮,完成创建 Oracle 到 TDengine 的数据同步任务,回到**数据源列表****页面可查看任务执行情况。