orcale切换mysql遇到的问题

本文讨论了从Oracle数据库迁移到MySQL过程中遇到的问题,包括clob类型的转换、事务隔离级别的差异及解决方案。

        项目部署环境发生变化,需要将原来的orcale库切换成mysql库的过程中出现一些问题:

1、clob类型需要修改类型,并删除bean中字段的@lob注解

2、切换mysql后事务隔离的级别放生了改变,orcale默认的级别是read committed而mysql默认的级别repeatable read导致同一事务中,提交的数据,在接下来的操作中无法查询到

解决办法:修改数据库的事务隔离级别

注意

¨ Hibernate不可能改变在受管环境下由应用服务器提供的数据库连接的隔离级别,只能通过改变应用服务器配置的方式来改变.

¨ 设置隔离级别是全局选项,会影响所有的连接和事务


### 若依系统 MySQL 数据库迁移到 Oracle 的方法 将若依系统的数据库MySQL 迁移到 Oracle 需要经过多个阶段的工作,包括但不限于数据结构转换、SQL 脚本调整以及数据导入导出操作。以下是详细的说明: #### 1. **分析源数据库** 在迁移之前,需要全面了解当前 MySQL 数据库的表结构、索引、存储过程以及其他对象。这一步可以通过以下方式完成: - 使用 `SHOW CREATE TABLE` 命令获取每张表的具体定义[^2]。 - 导出完整的 SQL 文件以便后续对比。 ```sql -- 获取表创建语句示例 SHOW CREATE TABLE your_table_name; ``` #### 2. **设计目标数据库** 由于 MySQLOracle 存在显著差异(如数据类型映射),因此需要手动或通过工具重新设计目标数据库的对象模型。具体如下: - 将 MySQL 中的数据类型转换为对应的 Oracle 类型。例如,MySQL 的 `INT` 对应于 Oracle 的 `NUMBER(10)`[^3]。 - 处理自增字段:MySQL 的 `AUTO_INCREMENT` 可以通过 Oracle 序列和触发器实现[^4]。 ```sql -- 创建序列和触发器替代 AUTO_INCREMENT CREATE SEQUENCE seq_your_table START WITH 1 INCREMENT BY 1; CREATE OR REPLACE TRIGGER trg_your_table BEFORE INSERT ON your_table FOR EACH ROW BEGIN SELECT seq_your_table.NEXTVAL INTO :NEW.id FROM dual; END; / ``` #### 3. **使用 ETL 工具进行数据迁移** 为了简化复杂度并提高效率,可以借助第三方工具来执行实际的数据迁移工作。推荐使用的工具有 Kettle 或者其他类似的 ETL 平台: - 安装 JDK 环境,并配置好 Kettle 所需的基础设置。 - 下载对应版本的 JDBC 驱动程序(即 ojdbc8.jar 和 mysql-connector-java-x.x.xx.jar),并将它们放置到指定目录下。 随后,在 Kettle 中构建作业流程图,连接至原生 MySQL 实例读取记录后写入新的 Oracle 表格里去。 #### 4. **测试验证** 最后一步也是至关重要的环节——确认所有业务逻辑均能正常运作无误之后再正式上线切换生产环境下的服务地址指向新部署好的 Oracle DB 上面才行哦! --- ### 注意事项 在整个过程中可能会遇到一些挑战比如性能瓶颈或者兼容性问题等等情况发生时候就需要灵活应对啦~ ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值