目录
- 参考文章/博客
- 操作流程
- 总体流程
- 详细操作
- 操作备忘
- 数据库
- 版本
- 迁移工具
操作流程
总体流程
之前的项目一直是用MySQL,对Oracle没有丝毫了解,考虑到后续项目可能存在的多数据库读写和不同数据库间数据迁移的问题,参照网上的一些博客教程,先用一个以前的项目做数据迁移练习,以便初步了解oracle数据库。文中如有错漏,欢迎指出,我会及时修改。在此先行感谢各位博主所写的文章。
Created with Raphaël 2.2.0 开始 SQL plus创建表空间和用户 SQL developer迁移数据库 调整项目配置 结束
详细操作
- 安装Oracle,windows环境下基本是一路“下一步”,我安装的时候没遇到什么问题(建议初次安装先看一遍教程);linux环境下比较复杂,还在研究中……
- 通过SQL plus命令行界面,用安装时配置的用户名和密码登入Oracle数据库,验证安装是否成功。如果是通过Navicat来验证Oracle数据库是否安装成功,需要留意和MySQL的不同,要指定服务名(或SID),“高级”标签页里的角色可以不选,但是建议选择SYSDBA(注意:用户名和密码也应使用SYSDBA的)来连接,下图红框内容为Navicat配置时需要注意的地方:
- 推荐通过SQL代码创建Oracle表空间和用户(这一步和MySQL区别很大,要比MySQL麻烦一些,不是单纯创建一个数据库就行了)
create tablespace localtest datafile 'C:\app\OEM\oradata\orcl\localtest.dbf' size 100m;
create user test identified by root default tablespace localtest quota 50m on users;
grant all privileges to test;
上述代码中,为表空间赋予了100m空间(可在后期调整),默认用户(对应MySQL中的数据库)的表空间为刚创建的localtest,并赋予50m空间。
4. 使用Oracle SQL Developer进行表格迁移,这一步相对简单,选好MySQL的数据库和Oracle这边的用户就行。比如我待迁移的源数据库(MySQL)叫test,对应目标数据库为Oracle的test用户。基本也是一路“下一步”,虽然Oracle和MySQL在数据字段定义上存在差别,但是迁移工具已经做好了转换列表,直接用就成,如果有特殊类型没有在列表内可以自行添加。迁移耗费时间视数据库大小而定,我的测试数据库很小,而且是本地本机迁移,一分钟不到就完成了。
5. 完成迁移后,Oracle里面的表格数量会比MySQL多出不少,原因在于迁移的时候,迁移工具会创建一部分表格来记录迁移方面的内容,这些表格可以直接删除。下图所示为迁移后部分多出来的表:
完成清理后记得比对两个数据库的表格数量是否一致,然后检查表内数据是否都正确迁移了
操作备忘
- Oracle安装后自带的SQL Developer是32位版本软件,需要指定32位的JDK,个人推荐使用64位的新版SQL Developer(我不想装32位JDK,日常开发都是64位下)
- Navicat具备数据传输的功能,可以把MySQL数据迁移到Oracle中,但是不知道是我哪里没做好,一直没能正确完成迁移,SQL Developer就没出现异常
- 简单创建Oracle表空间和用户还是用SQL代码更方便,Navicat界面上创建反而感觉有点麻烦
- 新建的Oracle用户名一定要和MySQL数据库名一致,否则会出现表格数据不能正确导入的情况
- 如果需要允许外部访问Oracle数据库,需要设置数据为“共享服务器模式”,修改listener.ora文件,将监听部分的TCP协议主机(HOST)设置为当前计算机名(默认是localhost)。另外,需要在Windows本地安全策略中允许1521入站,最后,重启监听服务。代码片段是我本机的listener.ora内容,仅供参考。
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = C:\app\OEM\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:C:\app\OEM\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(ORACLE_HOME = C:\app\OEM\product\11.2.0\dbhome_1)
(SID_NAME = ORCL)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = OEM)(PORT = 1521))
)
)
ADR_BASE_LISTENER = C:\app\OEM
数据库
版本
- Oracel Database 11g release 2
- MySQL 5.7.31
迁移工具
- Oracle SQL Developer 版本 20.2.0.175
- SQL plus
- Navicat Premium 15