Skip to content

Oracle Reader

Oracle Reader 插件用于从 Oracle 读取数据

配置样例

配置一个从Oracle数据库同步抽取数据到本地的作业:

json
{
  "job": {
    "setting": {
      "speed": {
        "byte": 1048576,
        "channel": 1
      }
    },
    "content": {
      "reader": {
        "name": "oraclereader",
        "parameter": {
          "username": "oracle",
          "password": "password",
          "column": [
            "id",
            "name"
          ],
          "splitPk": "db_id",
          "connection": {
            "table": [
              "table"
            ],
            "jdbcUrl": "jdbc:oracle:thin:@127.0.0.1:5432/orcl"
          }
        }
      },
      "writer": {
        "name": "streamwriter",
        "parameter": {
          "print": true
        }
      }
    }
  }
}

参数说明

该插件基于 RDBMS Reader 实现,因此可以参考 RDBMS Reader 的所有配置项。

对 GEOMETRY 类型的支持

从 Addax 4.0.13 开始,实验性的支持 Oracle GEOMETRY 类型,该插件会把该类型的数据转为 JSON 数组字符串。

假定你有这样的的表和数据

sql
-- create demo table
CREATE TABLE spatial_data(id int, name varchar2(50), geo SDO_GEOMETRY);
-- insert some records
INSERT INTO HR.spatial_data (id, name, geo) VALUES (
       1,
       'Point 1',
       MDSYS.SDO_GEOMETRY(
         2001, -- 二维点类型
         NULL,
         MDSYS.SDO_POINT_TYPE(1, 1, NULL), -- X, Y 坐标为 1
         NULL,
         NULL
           )
   );

INSERT INTO HR.spatial_data (id, name, geo) VALUES (
       2,
       'Line 1',
       MDSYS.SDO_GEOMETRY(
         2002, -- 二维线类型
         NULL,
         NULL,
         MDSYS.SDO_ELEM_INFO_ARRAY(1,2,1), -- 表示一个由两个点组成的线段
         MDSYS.SDO_ORDINATE_ARRAY(1,1, 2,2) -- 线段的起点为 (1,1),终点为 (2,2)
           )
   );

INSERT INTO HR.spatial_data (id, name, geo) VALUES (
       3,
       'Polygon 1',
       MDSYS.SDO_GEOMETRY(
         2003, -- 二维多边形类型
         NULL,
         NULL,
         MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1), -- 表示一个由三个点组成的三角形
         MDSYS.SDO_ORDINATE_ARRAY(1,1, 2,2, 3,1) -- 三角形的三个顶点分别为 (1,1)、(2,2) 和 (3,1)
           )
   );

读取表该的数据的最后输出结果类似如下:

txt

  ___      _     _
 / _ \    | |   | |
/ /_\ \ __| | __| | __ ___  __
|  _  |/ _` |/ _` |/ _` \ \/ /
| | | | (_| | (_| | (_| |>  <
\_| |_/\__,_|\__,_|\__,_/_/\_\

:: Addax version ::    (v4.0.13-SNAPSHOT)

2023-04-24 22:45:03.270 [        main] INFO  VMInfo               - VMInfo# operatingSystem class => sun.management.OperatingSystemImpl
2023-04-24 22:45:03.285 [        main] INFO  Engine               -
{
	"content":{
		"reader":{
			"name":"oraclereader",
			"parameter":{
				"column":[
					"*"
				],
				"connection":[
					{
						"jdbcUrl":[
							"jdbc:oracle:thin:@127.0.0.1:1521/XE"
						],
						"table":[
							"HR.spatial_data"
						]
					}
				],
				"username":"oracle",
				"password":"*****"
			}
		},
		"writer":{
			"name":"streamwriter",
			"parameter":{
				"print":true
			}
		}
	},
	"setting":{
		"speed":{
			"bytes":-1,
			"channel":1
		}
	}
}

2023-04-24 22:45:03.305 [        main] INFO  PerfTrace            - PerfTrace traceId=job_-1, isEnable=false
2023-04-24 22:45:03.305 [        main] INFO  JobContainer         - Addax jobContainer starts job.
2023-04-24 22:45:03.306 [        main] INFO  JobContainer         - Set jobId = 0
2023-04-24 22:45:04.540 [       job-0] INFO  OriginalConfPretreatmentUtil - Available jdbcUrl:jdbc:oracle:thin:@127.0.0.1:1521/XE.
2023-04-24 22:45:04.541 [       job-0] WARN  OriginalConfPretreatmentUtil - 您的配置文件中的列配置存在一定的风险. 因为您未配置读取数据库表的列,当您的表字段个数、类型有变动时,可能影响任务正确性甚至会运行出错。请检查您的配置并作出修改.
2023-04-24 22:45:04.545 [       job-0] INFO  JobContainer         - Addax Reader.Job [oraclereader] do prepare work .
2023-04-24 22:45:04.546 [       job-0] INFO  JobContainer         - Addax Writer.Job [streamwriter] do prepare work .
2023-04-24 22:45:04.546 [       job-0] INFO  JobContainer         - Job set Channel-Number to 1 channel(s).
2023-04-24 22:45:04.548 [       job-0] INFO  JobContainer         - Addax Reader.Job [oraclereader] splits to [1] tasks.
2023-04-24 22:45:04.548 [       job-0] INFO  JobContainer         - Addax Writer.Job [streamwriter] splits to [1] tasks.
2023-04-24 22:45:04.569 [       job-0] INFO  JobContainer         - Scheduler starts [1] taskGroups.
2023-04-24 22:45:04.577 [ taskGroup-0] INFO  TaskGroupContainer   - taskGroupId=[0] start [1] channels for [1] tasks.
2023-04-24 22:45:04.579 [ taskGroup-0] INFO  Channel              - Channel set byte_speed_limit to -1, No bps activated.
2023-04-24 22:45:04.580 [ taskGroup-0] INFO  Channel              - Channel set record_speed_limit to -1, No tps activated.
2023-04-24 22:45:04.593 [0-0-0-reader] INFO  CommonRdbmsReader$Task - Begin to read record by Sql: [select * from HR.spatial_data
] jdbcUrl:[jdbc:oracle:thin:@10.90.70.11:13521/XE].
2023-04-24 22:45:05.561 [0-0-0-reader] INFO  CommonRdbmsReader$Task - Finished read record by Sql: [select * from HR.spatial_data
] jdbcUrl:[jdbc:oracle:thin:@10.90.70.11:13521/XE].
1	Point 1	[{"sdo_gtype":2001,"sdo_srid":0,"sdo_point":{"x":1.0,"y":1.0,"z":null}}]
2	Line 1	[{"sdo_gtype":2002,"sdo_srid":0,"sdo_point":{"x":null,"y":null,"z":null},"sdo_elem_info":[1,2,1],"sdo_ordinates":[1.0,1.0,2.0,2.0]}]
3	Polygon 1	[{"sdo_gtype":2003,"sdo_srid":0,"sdo_point":{"x":null,"y":null,"z":null},"sdo_elem_info":[1,1003,1],"sdo_ordinates":[1.0,1.0,2.0,2.0,3.0,1.0]}]
2023-04-24 22:45:07.589 [       job-0] INFO  AbstractScheduler    - Scheduler accomplished all tasks.
2023-04-24 22:45:07.589 [       job-0] INFO  JobContainer         - Addax Writer.Job [streamwriter] do post work.
2023-04-24 22:45:07.590 [       job-0] INFO  JobContainer         - Addax Reader.Job [oraclereader] do post work.
2023-04-24 22:45:07.592 [       job-0] INFO  JobContainer         - PerfTrace not enable!
2023-04-24 22:45:07.593 [       job-0] INFO  StandAloneJobContainerCommunicator - Total 3 records, 372 bytes | Speed 124B/s, 1 records/s | Error 0 records, 0 bytes |  All Task WaitWriterTime 0.000s |  All Task WaitReaderTime 0.000s | Percentage 100.00%
2023-04-24 22:45:07.594 [       job-0] INFO  JobContainer         -
任务启动时刻                    : 2023-04-24 22:45:03
任务结束时刻                    : 2023-04-24 22:45:07
任务总计耗时                    :                  4s
任务平均流量                    :              124B/s
记录写入速度                    :              1rec/s
读出记录总数                    :                   3
读写失败总数                    :                   0

注意:该数据类型目前还处于实验支持阶段,作者对此数据类型的理解并不深刻,也未经过全面的测试,请勿直接在生产环境使用。