详细代码 https://gitee.com/echohawk/xxl-job/tree/v2.0.1-oracle/
SQL脚本 doc/db/tables_xxl_job_oracle.sql · echohawkOuyang/xxl-job - Gitee.com
Oracle版本 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Product
其中要把Mysql改成Oracle数据库 有几个点需要注意
需要把使用Oracle的包
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>${oracle-connector-java.version}</version>
</dependency>
改application.properties中的数据库驱动和配置 附上我的配置
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@127.0.0.1:1521:ORCL
spring.datasource.username=lw
spring.datasource.password=lw1234
Oracle数据库因为字段和表不能有超过30个字符的 所以如果使用使用quartz的表前缀为XXL_JOB_QRTZ_的话 那么XXL_JOB_QRTZ_PAUSED_TRIGGER_GRPS这个表的表名将会超长 所以必须要把表的前缀改短 因为表的后缀是quartz框架中写死的 所以我把他改成了XXL_JOB_ 详见xxl-job-admin/src/main/resources/quartz.properties · echohawkOuyang/xxl-job - Gitee.com
Oracle数据库不能有字段名为order的情况 属于是数据库的关键词 所以在后面加了_ 而且oracle脚本中不允许有` 需要去掉(Mysql中如果关键词的话用``括起来就行)
Oracle没有自增主键需要借助Oracle的序列 Mapper需要做出如下修改
Oracle表名后的AS需要去除 之前的LIMIT分页需要改正
Oracle中的NOW() 需要改成sysdate 并且插入和更新最好加上参数的jdbcType的值 SQL结束的;去掉
Oracle中的字段别名不能group排序 DATE_FORMAT需要改成to_char
上面的SQL也可以改成
SELECT
to_char(trigger_time,'yyyy-mm-dd') triggerDay,
COUNT(handle_code) triggerDayCount,
SUM(CASE WHEN (trigger_code = 200 and handle_code = 0) then 1 else 0 end) as triggerDayCountRunning,
SUM(CASE WHEN handle_code = 200 then 1 else 0 end) as triggerDayCountSuc
FROM XXL_JOB_QRTZ_TRIGGER_LOG
WHERE trigger_time BETWEEN #{from} and #{to}
GROUP BY to_char(trigger_time,'yyyy-mm-dd');
Oracle没有DATE_ADD(NOW(),INTERVAL -#{timeout} SECOND) 这种写法 需要改成 sysdate-numtodsinterval(#{timeout},'SECOND')
Oracle把结果映射成Map 之后KEY值需要改成大写
差不多就这些 其他的可以看看码云上的代码修改记录