Oracle数据库dmp转mysql格式

一、背景

一项目客户是oracle数据库,需要导一个表数据到自研系统mysql数据库,甲方已给出oracle格式dmp文件!
处理思路:
①、安装Oracle数据库。
②、用甲方提供oracle格式dmp文件导入我方自搭建的Oracle。
③、安装一台mysql数据库或使用现成的MySQL数据库。
④、使用Navicat工具,使用 工具数据传输功能将Oracle数据传输至mysql!

二、安装Oracle数据库。

忽略此步骤,度娘一堆安装教程。
大致就是使用Centos7桌面服务器安装。
参考连接:https://www.cnblogs.com/nmlwh/p/11923553.html#top

三、Oracle数据库导入dmp备份文件。

备份还原参考:https://www.cnblogs.com/xiaohuizhenyoucai/p/11100750.html

①、使用imp命令导入

[oracle@localhost mnt]$  imp system/*******@abc file=/mnt/sxgddzhdaochu20220302.dmp ignore=y full=y

system:oracle用户
*****:代表密码
@abc:数据导入abc数据库
file:导入文件绝对路径。

报错

[oracle@localhost mnt]$ imp system/aaaAAA3451@abc file=/mnt/sxgddzhdaochu20220302.dmp ignore=y full=yImport: Release 12.1.0.2.0 - Production on Tue Mar 8 21:14:59 2022Copyright (c) 1982, 2014, Oracle and/or its affiliates.  All rights reserved.Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing optionsExport file created by EXPORT:V11.02.00 via conventional pathWarning: the objects were exported by SXGDDZH, not by youimport done in US7ASCII character set and AL16UTF16 NCHAR character set
import server uses AL32UTF8 character set (possible charset conversion)
export client uses ZHS16GBK character set (possible charset conversion)
. importing SXGDDZH's objects into SYSTEM
. importing SXGDDZH's objects into SYSTEM
. . importing table                     "WO_ORDER"
IMP-00019: row rejected due to ORACLE error 12899
IMP-00003: ORACLE error 12899 encountered
ORA-12899: value too large for column "SYSTEM"."WO_ORDER"."CALLIN_CODE" (actual: 33, maximum: 30)

原因分析:
大致就是dmp文件的字符集和搭建出来创建好的abc数据库字符集不符合,所以报错!

解决办法:

SQL>connect username/password as SYSDBA;
SQL>SHUTDOWN IMMEDIATE;
SQL>STARTUP MOUNT;
SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQL>ALTER DATABASE OPEN;
SQL> ALTER DATABASE CHARACTER SET ZHS16GBK ;
ALTER DATABASE CHARACTER SET ZHS16GBK;
*ERROR at line 1:
ORA-12712: new character set must be a superset of old character set
此时报错,不必慌张。提示新字符集必须是超集,此时INTRENAL_USE指令不对字符集超集进行检查。输入以下命令即可:SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;
SQL>SHUTDOWN IMMEDIATE;
SQL>STARTUP;

修改后再次导入:

[oracle@localhost mnt]$ imp system/aaaAAA3451@abc file=/mnt/sxgddzhdaochu20220302.dmp ignore=y full=yImport: Release 12.1.0.2.0 - Production on Tue Mar 8 21:45:49 2022Copyright (c) 1982, 2014, Oracle and/or its affiliates.  All rights reserved.Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing optionsExport file created by EXPORT:V11.02.00 via conventional pathWarning: the objects were exported by SXGDDZH, not by youimport done in US7ASCII character set and AL16UTF16 NCHAR character set
import server uses ZHS16GBK character set (possible charset conversion)
export client uses ZHS16GBK character set (possible charset conversion)
. importing SXGDDZH's objects into SYSTEM
. importing SXGDDZH's objects into SYSTEM
. . importing table                     "WO_ORDER"    1540160 rows imported
Import terminated successfully without warnings.

通过Navicat 管理工具查看,已经有WO_ORDER表!

三、通过Docker搭建Mysql数据库。

①、拉取mysql镜像

[oracle@localhost mnt]$  docker pull mysql:5.7.20

②、运行mysql容器

[root@localhost ~]# docker run -d -p 3306:3306 --name mysql  -v /opt/mysql/data:/var/lib/mysql  -v /opt/mysql/logs:/var/log/mysql  -v /opt/mysql/conf:/etc/mysql/mysql.conf.d  -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.20

注:记得关闭selinux,否则可能会报错。

③、进入mysql容器授权mysql root用户可远程连接

[root@localhost ~]#  docker exec -it mysql sh
# mysql -uroot -p
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
Query OK, 0 rows affected, 1 warning (0.00 sec)mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

此时,使用Navicat 工具连接mysql成功。

四、使用Navicat 工具数据传输功能,将Oracle数据库中指定表传输至mysql数据库。

两个数据库语法不同,表字段类型也不同,如果公国Navicat工具导出、导入会有很多报错!

①、数据传输

选择传输的源和目标

选择需要同步的表

开始

报错:

[ERR] 1> 1170 - BLOB/TEXT column 'BLANK3' used in key specification without a key length


报错原因可参考:https://blog.csdn.net/helloxiaozhe/article/details/83018347
大致就是建索引、约束这些有问题了!
解决办法:
取消建索引、外键约束即可!

去掉索引和约束之后在开始数据就会从Oracle传输至MySQL了!好了文章到这里就结束了!
剩下的就是mysql导出表数据同步到项目mysql的事情了!

插曲
Navicate 连接Oracle可能会有报错,大致意思就是oci驱动太老了,需要上oracle官网下载oci驱动!
报错提示是:ORA-28547:connection to server failed, probable Oracle Net admin error

   上网一查原来是oci.dll版本不对。因为Navicat是通过Oracle客户端连接Oracle服务器的,Oracle的客户端分为两种,一种是标准版,一种是简洁版,即Oracle Install Client。而我们用Navicat时通常会在自己的安装路径下包含多个版本的OCI,如果使用Navicat连接Oracle服务器出现ORA-28547错误时,多数是因为Navicat本地的OCI版本与Oracle服务器服务器不符造成的。所以我们要做的就是下载OCI使之与我们所安装的Oracle服务器相符合。

下载地址:https://www.oracle.com/database/technologies/instant-client/downloads.html
下载64位安装包:

选择第一个

下载后解压
打开Navicate,依次点击工具----选项----环境 OCI选择刚下载的oci文件。

OK,按以上操作基本就可以了。

Oracle数据库数据同步到mysql数据库(Oracle数据库备份dmp如何同步到mysql)相关推荐

  1. 数据库oracle文件怎么打开,Oracle某个数据文件损坏,如何打开数据库-数据库专栏,ORACLE...

    某个数据文件损坏,如何打开数据库? 系统环境: 1.操作系统:windows 2000 server,机器内存128m 2.数据库: oracle 8i r2 (8.1.6) for nt 企业版 3 ...

  2. Java 实现两个不同服务器的数据库数据的迁移(注释含数据库建表语句备份)

    现在需要将内网数据库的数据及表同步到外网中,但是连接内网需要jar包才能穿透连接到,经测试,jar包对获取建表语句进行了限制(注释的代码),所以需要内外网两边把表建好,直接同步数据. 逻辑: 获取内网 ...

  3. java下拉框读取数据库数据_下拉框读取数据库数据库

    一起谈.NET技术,Visual Studio 2008单元测试_数据库测试 我们开发一个系统必须与数据库打交道,需要写N个SQL.存储过程.自定义函数.视图等,那么能否使用Visual Studio ...

  4. oracle用数据泵,Navicat 教程:Oracle 数据泵是什么

    Oracle 数据泵技术可从一个数据库高速移动数据和元数据到另一个数据库,它包括两个实用工具:数据泵导出和数据泵导入. 在使用服务器对象时,应该创建并打开一个连接.创建用户帐号时,可同时创建那个用户的 ...

  5. mysql xtrabackup还原_Xtrabackup备份、还原、恢复Mysql操作大全

    #数据目录:/data/mysql $ mkdir -pv /backup/3306/20171107/{full,inc1,inc2} #本地 单实例 全量备份 $ innobackupex --d ...

  6. oracle数据库导出灰色_oracle数据库导出和oracle导入数据的二种方法(oracle导入导出数据)...

    方法一:利用PL/SQL Developer工具导出: 菜单栏---->Tools---->Export Tables,如下图,设置相关参数即可: 方法二:利用cmd的操作命令导出,详情如 ...

  7. oracle 数据导入 mysql_oracle数据库导出和oracle导入数据的二种方法(oracle导入导出数据)...

    这篇文章主要介绍了oracle导入导出数据的二种方法,利用PL/SQL Developer工具导出和利用cmd的操作命令导出的出方法,大家参考使用吧 方法一:利用PL/SQL Developer工具导 ...

  8. oracle数据库导出和oracle导入数据的二种方法(oracle导入导出数据)

    这篇文章主要介绍了oracle导入导出数据的二种方法,利用PL/SQL Developer工具导出和利用cmd的操作命令导出的出方法,大家参考使用吧 方法一:利用PL/SQL Developer工具导 ...

  9. 将oracle中数据转化为汉字,将Oracle数据库中的“数字”对应成“汉字”

    例如:数据库中的STATE字段对应的数字是1与0,当要将1显示在gridview上,显示为'是',0显示为'否',可以通过下面的语句实现.BZZT是STATE的别名,gridview绑定的时候(fie ...

最新文章

  1. MyBatis魔法堂:ResultMap详解
  2. Exchange2003-2010迁移系列之六,配置及配置第二台Exchange CAS/HUB服务器
  3. 指定用户 启动 进入 docker容器
  4. Apache 虚拟主机 VirtualHost 配置
  5. CGI,BOA配置心得
  6. 计算机中用户权利和用户权限,揭秘:Win7系统用户和组权限说明
  7. 使用Spring进行面向切面编程(AOP)---讲解+代码
  8. Python读取写入yaml文件
  9. 未来已来!医院数字化转型为“看病难”画上“休止符”
  10. 软考知识点梳理--鱼骨图
  11. 为什么说比特币隐私是一门艺术?
  12. “才子进销存”新一代真正基于互联网(Internet)的进销存分销管理软件
  13. TensorFlow 学习(七) — 常用函数 api、tf.nn、tf.keras
  14. 表达式,语句,变量与宏的一些概念
  15. Android开机程序(自定义哦!)
  16. OPENCV与OPENCL
  17. 自动识别语音生成字幕
  18. css3实现椭圆轨迹运动
  19. Sonic一站式开源分布式集群云真机测试平台阶段性使用总结
  20. 雷达图按照权重和排名计算出每项得分,并且按照综合得分排序

热门文章

  1. md5 php 加密后乱码_PHP中的密码加密的解决方案总结
  2. 程序员职业规划:让自己变得重要
  3. 使用GrowPart工具完成对LVM逻辑卷的在线热扩容
  4. adb shell dumpsys package
  5. 物联网数据采集网关开发历程(一)
  6. 【小5聊】jQuery基础之获取指定时间月份的最后一天
  7. 移动互联网时代,微营销该怎么做?
  8. 重庆交通大学校园邮箱开通
  9. java中的对称加密算法和非对称加密算法
  10. 联想m100显示耗材_联想领像M100系列打印机加粉及清零方法