Skip to content

wuwen5/ojdbc-mysql2oracle

Folders and files

NameName
Last commit message
Last commit date

Latest commit

5ded070 · Feb 21, 2022

History

34 Commits
Feb 21, 2022
May 24, 2021
Jun 2, 2021
Jul 8, 2021
Jun 2, 2021
Sep 30, 2021
Feb 21, 2022

Repository files navigation

mysql to oracle

目前主要为适应nacos部署在oracle而开发

功能

mysql到oracle语法转换, 支持部分mysql语法转换. 在 nacos-1.4.x 中已测试.

驱动类配置

Java的启动参数配置

默认替换的mysql驱动为com.mysql.cj.jdbc.Driver

java -javaagent:path/to/ojdbc-mysql2oracle-x.y.x.jar

指定驱动类

java -javaagent:path/to/ojdbc-mysql2oracle-x.y.x.jar=driverClassName:com.mysql.jdbc.Driver

Nacos中使用

  • 推荐将包放入nacos-server.jar同级目录

  • Linux 修改start.sh

    #将JAVA_OPT="${JAVA_OPT} -jar ${BASE_DIR}/target/${SERVER}.jar" 改为
    JAVA_OPT="${JAVA_OPT} -javaagent:${BASE_DIR}/target/ojdbc-mysql2oracle-1.0.0-SNAPSHOT.jar -jar ${BASE_DIR}/target/${SERVER}.jar" 
  • Windows 修改start.bat

    rem 将 set "NACOS_OPTS=%NACOS_OPTS% -jar %BASE_DIR%\target\%SERVER%.jar" 改为
    set "NACOS_OPTS=%NACOS_OPTS% -javaagent:%BASE_DIR%\target\ojdbc-mysql2oracle-1.0.0-SNAPSHOT.jar -jar %BASE_DIR%\target\%SERVER%.jar"
  • 修改 nacos/conf/application.properties, 配置oracle连接信息

    ### Count of DB:
    db.num=1
    
    ### Connect URL of DB:
    db.url.0=jdbc:oracle:thin:@ip:port:orcl
    db.user.0=nacos
    db.password.0=nacos

支持的语法

  • select 1 mysql中不带from的查询

  • insert into ... returning primarykey 新增数据返回主键
    例如: JdbcTemplate中的int update(PreparedStatementCreator psc, KeyHolder generatedKeyHolder)
    Mybatis中的 <insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobGroup" useGeneratedKeys="true" keyProperty="id" >

    oracle 11使用触发器+序列做自增长id

  • delete from xxtable where ... limit ?

  • limit 分页语句

  • 空值相等条件 TODO:目前只支持在nacos中的 TENANT_ID = ?

  • select 1 from dual as tableA from项别名使用as,oracle中去除as

  • where !(...) -> where not(...)

  • select 1 from `dual` -> select 1 from dual 删除表名\列名中的反引号

  • DATE_ADD(?, INTERVAL -? SECOND)