为什么80%的码农都做不了架构师?>>>   

最近做了很多关于Sakai数据库迁移的工作,服务器和服务器之间,Oralcle和Mysql之间导来导去。尽管最后发现都是无用功,但把数据库迁移的过程记下来,也算没白忙活。

Oracle版本:Oracle11g2

Mysql版本:Mysql5.5.30

Sakai版本:CLE2.9.1

一、Oracle到Oracle

使用的工具:Navicat For Oracle
下载地址:http://pan.baidu.com/share/link?shareid=457377&uk=2819378455
可能要更新一下oci的版本,需要instantclient-sqlplus-win32-11.2.0.1.0.zip这个包(下载地址:http://pan.baidu.com/share/link?shareid=457381&uk=2819378455)
1.软件安装完成以后启动,选择Tools—Option,即可更新Oci及sqlplus的位置,如下图所示。

2.新建两个连接,一个是源服务器连接,一个是目标服务器连接,然后使用Data Transfer的功能,选择好Schema,需要迁移的表,视图,序列等,开始即可。如下图所示。

二、Mysql到Mysql

需要使用的工具:mysql-gui-tools-5.0-r17-win32.msi

下载地址:http://pan.baidu.com/share/link?shareid=457410&uk=2819378455

服务器与服务器之间的迁移使用该工具提供的MySQL Migration Toolkit即可完成,迁移过程在下面Oracle到Mysql的迁移中会详细介绍,这里类似。

一台服务器中数据库的复制,根据要求,要把名为system数据库完全复制到sakai数据库,由于一些外键的限制,使用phpMysqlAdmin工具提供的复制数据库的功能无法顺利完成,而使用该工具进行Backup,然后Restore就可以了。备份system数据库,然后restore到sakai数据库,就ok了,如下图所示。

三、Oracle到Mysql

实现不同服务器间不同数据库的迁移,特定此方法仅对Sakai的数据库迁移工作有效,因为Sakai在启动的时候可以自动把Mysql的表建立起来,就不用考虑Oracle到Mysql引起的字段不同的问题,只要把数据迁过来就行了。

需要使用的工具1:mysql-gui-tools-5.0-r17-win32.msi

下载地址:http://pan.baidu.com/share/link?shareid=457410&uk=2819378455

需要使用的工具2:phpMysqlAdmin

下载地址:http://pan.baidu.com/share/link?shareid=457429&uk=2819378455

(由于MySQL Migration Toolki不提供仅仅转移数据库结构的功能,所以需要用phpMysqlAdmin来完成)

0、准备工作:将sakai在mysql上的某个空库(如sakaitmp)的基础上运行,就会在sakaitmp中生成sakai的表,然后使用phpMysqlAdmin工具的复制数据库功能将sakaitmp库(注意要选择“仅结构”)复制到另外一个数据库(这个数据库的名字与oracle中需要迁移的schema名字相同),这样就把mysql中的表结构建好了。

1、打开MySQL Migration Toolkit工具,点击next,选择Direct Magration,然后next

2、配置源数据库(Oracle)与目标数据库(Mysql)的连接(地址,端口,用户名密码),选择需要迁移的Schema

3、点击details,选择需要迁移的表,视图等,如下图所示

4.设置参数,选择Multilanguage(sakai仅支持utf8),如下图

5.一直点next,到下一步,选择show all objects with messages,把advance展开,把每张表的建表语句都删掉(建表让Sakai在Mysql里自己做,这里不再做,需要删300多张表),apply change即可,如图所示。

6、后面一直next即可。这样既可完成Oracle到Mysql的迁移。

四、Sakai中资源的迁移

Sakai提供两种存放资源的方式,一种是放在数据库中,一种是放在文件系统中,放在文件系统中需要修改配置项(sakai.properties中):

bodyPath@org.sakaiproject.content.api.ContentHostingService = /app/elearndata

bodyVolumes@org.sakaiproject.content.api.ContentHostingService =vol1,vol2,vol3

如果已经放到数据库中了,想转移到文件系统中,就加上下面的配置项:

convertToFile@org.sakaiproject.content.api.ContentHostingService = true

但对于Oracle数据库好像不管用,参考这里报告的问题https://jira.sakaiproject.org/browse/KNL-164,

修改

/kernel/kernel-impl/src/main/java/org/sakaiproject/content/impl/DbContentService.java

这个代码即可(在kernel-impl)。下面是patch文件:

===================================================================
---src/main/java/org/sakaiproject/content/impl/DbContentService.java   (revisão 236)
+++src/main/java/org/sakaiproject/content/impl/DbContentService.java   (cópia de trabalho)
@@ -2724,12 +2724,10 @@try{
-                        Object clob = result.getObject(3);
-                        if(clob != null && clob instanceof byte[])
-                        {
-                            edit = new BaseResourceEdit();
-                            resourceSerializer.parse(edit, (byte[]) clob);
-                        }
+                       Blob clob = result.getBlob(3);
+                       edit = new BaseResourceEdit();
+                       resourceSerializer.parse(edit, clob.getBytes(1L, (int) clob.length()));
+}

重新启动tomcat,就完成了资源从数据库到文件系统的转移,然后再迁移到别的机器上就方便了。只要把资源文件迁移到目标服务器相同的目录下即可。

转载于:https://my.oschina.net/immk/blog/127301

SakaiCLE2.9数据库迁移相关推荐

  1. MySQL基础之 恢复数据和数据库迁移

    1.mysql命令或者source命令恢复数据 这两个命令在进行恢复数据的时候要检查是否创建数据库.如果数据库不存在,则恢复失败. 数据库迁移 1.相同版本的mysql数据库之间的迁移. mysqld ...

  2. 简单分析Flask 数据库迁移详情

    本文给大家分享的是 Flask 数据库迁移详情,db.create_all()不会重新创建表或是更新表,需要先使用db.drop_all()删除数据库中所有的表之后再调用db.create_all() ...

  3. 数据库迁移_【干货分享】DM数据库迁移方法(物理迁移)

    在数据库的维护过程中,可能涉及换服务器,或者需要现网数据库环境测试的情况,这时,最简单快速的办法就是将源数据库相关的文件拷贝到目标主机,然后注册数据库实例服务.这就是数据库的物理迁移过程,可以是从wi ...

  4. 数据库迁移用到的命令

    //在程序包管理器控制台中执行以下语句,安装EntityFramework. PM> Install-Package EntityFramework //执行成功后,控制台应用程序代码结构中,添 ...

  5. 如何将本地数据库迁移到数据库上?

    使用数据传输服务(DTS)将本地数据库迁移到 阿里云的云数据库RDS,可以实现应用不停服务的情况下,平滑完成数据库的迁移工作.接下来我们将学习下如何使用DTS将本地数据库迁移到RDS上. 背景 DTS ...

  6. 用Kettle的一套流程完成对整个数据库迁移 费元星

    原地址 :http://ainidehsj.iteye.com/blog/1735434 需求:  1.你是否遇到了需要将mysql数据库中的所有表与数据迁移到Oracle.  2.你是否还在使用ke ...

  7. Oracle XTTS跨平台数据库迁移(从Unix迁移数据库到Linux)_Oracle数据库迁移项

    Oracle数据库迁移教程04 Oracle XTTS跨平台数据库迁移实战 (真正超越OCP/OCM的项目实战系列教程) 本套风哥Oracle教程学习内容 1.Oracle XTTS技术基础知识 2. ...

  8. yii 执行指定迁移文件_Web 云开发 · 云开发数据库迁移指南

    云开发数据库 云开发为我们提供了一个 JSON 文档型数据库(NoSQL),并集成了 「增删改查」 等 API,操作方便,简单易懂.并且相比传统数据库而言它具有「高性能的数据库读写服务」,「可以直接在 ...

  9. 使用容器和数据库克隆进行数据库迁移

    SQL Server迁移在DBA的生命周期中是一个常量,SQL Server 2008的支持终结正在推动大量的迁移规划.数据库迁移通常涉及将备份还原到目标环境,为应用程序测试提供开发和QA环境,以及识 ...

最新文章

  1. 流行漏洞利用工具包瞄准Flash、Java和IE
  2. js调用html5cookie,CSS+JS+Cookie实现页脚固定广告展示
  3. python基础-分支判断语句(4)
  4. 【floyd模板】哈利·波特的考试 (25 分)
  5. python热部署_关于Spring Cloud 框架热部署的方法
  6. php实现身份证号码获取归属地地址的实列教程,含完整全国地区归属数据!
  7. WEB安全基础-WEB服务器相关知识
  8. linux 挂载和网络命令
  9. C++项目中编译部分C的代码
  10. talib python文档_TALib中文文档代码实现
  11. git mac 可视化diff_Git可视化比较工具P4Merge
  12. 删除重复节点(细节每太明白)
  13. 产品快速迭代的五大要点
  14. 记录蓝屏问题FAULTY_HARDWARE_CORRUPTED_PAGE
  15. 美爆!《自然》公布2018年19张最震撼的科学图片
  16. 101平衡模式 DIR的理解
  17. 还在期待安卓9.0吗?Android 10.0要来了
  18. 统计学中sp_统计学名词解释
  19. 51单片机LED模拟交通灯
  20. maven编译jar包时打一个瘦包,依赖包和配置文件到jar包外面

热门文章

  1. C++socket编程(三):3.1 TCP/IP协议特点
  2. 用python统计图片中的点_用python按照图像灰度值统计并筛选图片的操作(PIL,shutil,os)...
  3. 服务器端添加网站,服务器添加网站
  4. php镂空窗,木窗镂空的雕刻象征着什么?黑色在彝族人民心中有何寓意?陆川猪为何是著名“陆川三宝”之一?...
  5. Node.js webpack webpack-dev-server
  6. Pandas Period
  7. ubuntu dpkg
  8. numpy.core.defchararray.join
  9. Linux进程间通信的方法和示例
  10. 如何查html病毒svchost.exe,小编教你在Win7系统中检查svchost.exe进程是否为病毒的方法步骤...