ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Apache DolphinScheduler Oracle 数据源接入指南:SID/ServiceName 连接模式、参数配置与插件激活

Apache DolphinScheduler Oracle 数据源接入指南:SID/ServiceName 连接模式、参数配置与插件激活 Apache DolphinScheduler Oracle 数据源接入指南SID/ServiceName 连接模式、参数配置与插件激活【免费下载链接】dolphinschedulerApache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code项目地址: https://gitcode.com/GitHub_Trending/dol/dolphinscheduler本文以 Apache DolphinScheduler 仓库中的 Oracle 数据源官方文档为主线系统讲解如何在 DolphinScheduler 中创建并连接 Oracle 数据源涵盖表单字段含义、SID 与 Service Name 两种连接模式、Jdbc 连接参数的 JSON 配置方式以及为什么需要手动激活插件依赖。读完本文你将能够在 DolphinScheduler 中正确配置 Oracle 数据源并理解其底层 JDBC URL 的构造逻辑为后续 SQL、存储过程等任务使用该数据源打下基础。Oracle 数据源在 DolphinScheduler 中的定位DolphinScheduler 通过插件化架构支持多种数据源Oracle 数据源是其中由dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-oracle模块实现的一种数据源插件。从源码结构看该插件遵循统一的数据源 SPI 规范包含参数 DTO、连接参数、DataSourceProcessor处理器以及 Channel通道等组件最终可被 SQL 任务、存储过程任务等通过数据源选择器引用。官方文档docs/docs/zh/guide/datasource/oracle.md明确指出该数据源不是原生支持是否原生支持否即需要额外下载并激活插件依赖后才能使用。这一点在 pseudo-cluster 部署文档 的下载插件依赖章节中有详细说明。前置条件激活 Oracle 数据源插件从 3.3.0 版本开始DolphinScheduler 的二进制发布包不再内置插件依赖需要用户自行下载。Oracle 数据源依赖com.oracle.database.jdbc:ojdbc8见 pom.xml该依赖不随二进制包分发因此首次使用前必须执行插件安装命令bash ./bin/install-plugins.sh 3.3.0默认情况下该命令会安装全部插件如果你只需要部分插件可以修改仓库中的 config/plugins_config 来按需指定。例如只需要 Oracle 数据源与 Shell 任务插件时可配置为--datasource-plugins-- dolphinscheduler-datasource-oracle --end-- --task-plugins-- dolphinscheduler-task-shell --end--注意若在启动服务或使用数据源时遇到ClassNotFoundException等错误通常意味着缺少对应插件依赖包需回到install-plugins.sh步骤检查是否已安装。在 UI 中创建 Oracle 数据源登录 DolphinScheduler 后进入数据源中心页面新建数据源选择 ORACLE 类型表单各字段含义如下对应官方文档及截图 oracle-choose-schema.png字段说明数据源固定选择ORACLE数据源名称输入数据源的名称用于后续任务引用描述输入数据源的描述信息可选IP 主机名连接 Oracle 的 IP 或主机名端口连接 Oracle 的端口默认 1521用户名连接 Oracle 的用户名密码连接 Oracle 的密码数据库名输入连接 Oracle 的ServiceName 或 SIDJdbc 连接参数以 JSON 形式填写 Oracle 连接的额外参数其中数据库名字段同时支持 ServiceName 与 SID 两种形式具体以你选择的连接模式为准Jdbc 连接参数则用于补充连接属性官方文档给出的示例为{schema: abc}表示使用username用户下的abcschema 进行操作。连接模式SID 与 Service Name 的底层差异Oracle 数据源支持两种连接模式在 UI 中对应连接类型选择其枚举定义于 DbConnectType.javaORACLE_SERVICE_NAME(0, Oracle Service Name), ORACLE_SID(1, Oracle SID);两种模式生成 JDBC URL 的规则完全不同由 OracleDataSourceProcessor.java 中的createConnectionParams方法实现配合 DataSourceConstants.java 中定义的前缀常量连接模式JDBC URL 形式常量前缀ORACLE_SIDjdbc:oracle:thin:host:port:SIDjdbc:oracle:thin:ORACLE_SERVICE_NAMEjdbc:oracle:thin://host:port/service_namejdbc:oracle:thin://对应测试用例 OracleDataSourceProcessorTest.java 中验证了 SID 模式下生成的地址与 URLaddress jdbc:oracle:thin:localhost:3308 jdbcUrl jdbc:oracle:thin:localhost:3308:default两者的核心区别在于SID 模式直接定位 Oracle 实例的 SIDURL 中数据库名以冒号:拼接Service Name 模式通过服务名访问数据库服务URL 中数据库名以斜杠/拼接并使用//双斜杠前缀。创建连接时使用的 JDBC 驱动类为oracle.jdbc.OracleDriver常量COM_ORACLE_JDBC_DRIVER见 DataSourceConstants.java连接有效性校验语句为select 1 from dual常量ORACLE_VALIDATION_QUERY见同一文件第 82 行。Jdbc 连接参数JSON 配置如何作用到连接Jdbc 连接参数字段以 JSON 形式填写最终会追加到 JDBC URL 中。其底层实现位于 OracleDataSourceProcessor.java 的getJdbcUrl方法与transformOther方法Override public String getJdbcUrl(ConnectionParam connectionParam) { OracleConnectionParam oracleConnectionParam (OracleConnectionParam) connectionParam; if (MapUtils.isNotEmpty(oracleConnectionParam.getOther())) { return String.format(%s?%s, oracleConnectionParam.getJdbcUrl(), transformOther(oracleConnectionParam.getOther())); } return oracleConnectionParam.getJdbcUrl(); } private String transformOther(MapString, String otherMap) { // 将 {key: value} 转换为 keyvalue并用 连接 }也就是说{schema: abc}这样的 JSON 配置会被转换为schemaabc最终形成形如jdbc:oracle:thin://host:1521/servicename?schemaabc的完整连接 URL。测试用例 OracleDataSourceProcessorTest.java 也验证了这一拼接行为jdbc:oracle:thin:localhost:3308:default?otherother因此你可以通过该参数补充oracle.net.CONNECT_TIMEOUT、oracle.jdbc.timezoneAsRegion等 Oracle JDBC 支持的连接属性。需要注意多组参数请用 JSON 键值对形式填写最终以连接无需手动在 JSON 中写?或。数据源插件的源码结构与连接生命周期Oracle 数据源插件位于 dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-oracle包含 7 个核心 Java 类OracleDataSourceParamDTO前端表单参数的传输对象包含connectTypeSID/Service Name字段getType()返回DbType.ORACLEOracleConnectionParam连接参数实体继承BaseConnectionParam额外持有connectTypeOracleDataSourceProcessor核心处理器负责参数 DTO 与连接参数的互转、JDBC URL 构造、驱动与校验语句定义、连接获取以及 SQL 拆分OracleDataSourceChannelFactory / OracleDataSourceChannel通过 SPIAutoService注册数据源通道工厂供引擎按类型加载OracleAdHocDataSourceClient / OraclePooledDataSourceClient分别面向即席查询与连接池两种场景继承数据源 API 模块的基类。其中密码在存储时通过PasswordUtils.encodePassword加密、读取时解密见 OracleDataSourceProcessor.java确保敏感信息不以明文落库。此外该处理器还针对 Oracle 做了PL/SQL 语句拆分的专门处理当 SQL 同时包含BEGIN与END时使用OracleStatementParser解析整个 PL/SQL 块并原样保留、不做拆分普通多语句则按 Oracle 方言拆分并去除注释。对应实现见 OracleDataSourceProcessor.java测试用例splitAndRemoveComment_PLSQL与splitAndRemoveComment_MultipleSql验证了 PL/SQL 块不被误拆、普通 SQL 按语句正确切分的行为OracleDataSourceProcessorTest.java。配置后的验证与常见问题数据源创建成功后可在数据源列表中点击测试连接验证连通性底层走的是处理器getConnection方法使用oracle.jdbc.OracleDriver驱动建立真实连接。验证失败时建议按以下顺序排查插件是否已激活确认已执行bash ./bin/install-plugins.sh 3.3.0且conf/plugins_config源码对应 config/plugins_config包含dolphinscheduler-datasource-oracle否则会出现驱动或插件类找不到的错误连接模式与数据库名是否匹配SID 模式填实例 SIDService Name 模式填服务名两者 URL 构造规则不同混用会导致连接失败主机端口可达性确认 DolphinScheduler 服务所在节点可访问 Oracle 的 IP 与端口默认 1521Jdbc 连接参数格式确保为合法 JSON 键值对如{schema: abc}参数会被追加到 URL 后作为查询参数生效。完成以上配置后即可在 SQL 任务、存储过程任务等节点中引用该数据源结合select 1 from dual的连接校验与 PL/SQL 支持能力执行面向 Oracle 的各类数据加工与调度场景。【免费下载链接】dolphinschedulerApache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code项目地址: https://gitcode.com/GitHub_Trending/dol/dolphinscheduler创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表