一、了解PPAS的迁移方式
1、在线迁移和离线迁移
使用Migration Studio或Migration Toolkit直接向PPAS数据库进行对象定义和数据表中数据的迁移称为在线迁移,生成要迁移对象的脚本,在随后的某一时刻在PPAS中执行这些脚本用来恢复对象定义称为离线迁移。

2、迁移过程
1)明确需要对哪些数据库对象和数据进行迁移;
2)了解在迁移过程中可能遇到的问题;
3)准备迁移环境,安装必要的软件,建立好服务器之间的连接;
4)迁移过程中,如果有大量数据需要进行处理,那么应在移动数据前先迁移模式中的对象定义(DDL),并验证DDL的迁移结果,并解决所有出现的问题;
5)对数据进行迁移;
6)确认数据迁移结果,并解决在迁移结果概要中所报告的问题;
7)对应用程序进行转换,使应用程序可以在PPAS环境中运行;
8)进行系统性能测试,对新数据库服务器进行性能调整

二、一个简单的迁移实例
1、准备实验环境
PPAS9.2,RHEL6.3 64bit,Oracle 10g 10.2.0.1/4

安装Oracle
Oracle版本:10.2.0.1
全局数据库名:oraedb SID:oraedb
IP:192.168.1.115
监听端口:1521

安装PPAS
PPAS版本:9.2.1.3
IP地址:192.168.1.221
其他默认安装

第三方驱动下载地址
http://www.enterprisedb.com/downloads/third-party-jdbc-drivers
2、准备jdbc驱动
挂载光盘或ISO镜像文件作源mount -o loop -t iso9660 /home/rhel_6_3_64bit.iso /mnt/cdrom
在PPAS主机上配置好redhat的yum源之后安装jdk
[root@rhel home]# yum install java-1.6.0-openjdk
[root@rhel home]# java -version
我安装的Oracle版本是10.2.0.1,PPAS主机上的jdk版本是1.6.0_24,在Oracle官方网站下载对应的jdbc驱动。关于jdbc驱动驱动包的名称和它们的作用:
classes12.jar  - JDK 1.2 和 JDK 1.3下使用
classes12_g.jar - 和classes12.jar相同, 但是包中的类使用"javac -g"命令编译,包含调试信息.
classes12dms.jar - 和classes12.jar相同, 但是包含一些附加的代码支持Oracle Dynamic Monitoring Service.
classes12dms_g.jar - 和 classes12dms.jar相同,但是包中的类使用"javac -g"编译,包含调试信息.
ojdbc14.jar - JDK 1.4下使用
ojdbc14_g.jar - 和ojdbc14.jar相同,但是包中的类使用"javac -g"编译,包含调试信息.
ocrs12.jar - 引入了javax.sql.rowset接口, 如CachedRowSet 和 WebRowSet. 可以在 JDK 1.2, 1.3, 和 1.4下使用.
orai18n.jar - 使用在JDK 1.2, 1.3 和 1.4下的NLS(National Language Support,国家语言支持)类.这个jar包替换了老的nls_charset jar/zip 文件.
他们在Oracle安装目录中的具体地址:/oracle/product/10.2.0/db_1/jdbc,oracle的官方网站,sun官方站点都有。
Java是可以向下兼容的,使用JDK1.6,用classes12.jar是可以使用的,当然用ojdbc14.jar 更没问题,但是如果JDK是1.3,那么只能用classes12.jar。
将JDBC驱动复制到PPAS的以下目录中:
[root@rhel ~]# cp ~/*.jar /opt/PostgresPlus/9.2AS/jre/lib/ext/
[root@rhel ~]# ls /opt/PostgresPlus/9.2AS/jre/lib/ext/

3、从Oracle10g迁移到PPAS-9.2
Migration Tookit的可执行文件为安装目录下bin中的runMTK。
4、编辑tookit.properties文件
[root@rhel ~]# vim /opt/PostgresPlus/9.2AS/etc/toolkit.properties
以下是文件内容:
SRC_DB_URL=jdbc:oracle:thin:@192.168.1.115:1521:oraedb
SRC_DB_USER=scott
SRC_DB_PASSWORD=TIGER

TARGET_DB_URL=jdbc:edb://localhost:5444/oraedb
TARGET_DB_USER=scott
TARGET_DB_PASSWORD=TIGER
5、给准备迁移的模式的用户赋予dba角色并执行迁移动作
我这里测试是用scott用户,首先在Oracle中临时给scott用户赋予所有权限
SQL> grant dba to scott;
创建与准备迁移的Oracle模式所有者相同的用户,本例为scott;

6、迁移
[root@rhel bin]# ./runMTK.sh -users scott scott

至此,oracle10g向PPAS9.2的迁移操作成功!

三、PPAS与Oracle在dblink下的迁移
1、环境准备:
ppas9.2.1.3:
ip:192.168.1.111

oracle10g 10.2.0.1
ip:192.168.1.115

2、创建dblink
这里要创建的是oci-dblink,首先配置PPAS的OCI库。先从oracle官网下载instance client 11,解压后放在/opt/目录中。
修改目录的所有者为enterprisedb:
[root@edbserver opt]# chown -R enterprisedb.enterprisedb instantclient_11_2/
建名称为libclntsh.so的软连接指向libclntsh.so.11.1
[root@edbserver opt]# ln -s /opt/instantclient_11_2/libclntsh.so.11.1 /opt/instantclient_11_2/libclntsh.so
在迁移时可能会遇到错误ERROR: unable to load OCI library: libnnz11.so: cannot open shared object file: No such file or directory,复制libnnz11.so到系统lib64目录去便可以解决。
[root@edbserver bin]# cp /opt/instantclient_11_2/libnnz11.so /lib64/

从oracle数据库服务器复制tnsnames.ora文件到instance client目录
[root@edbserver ~]# scp root@192.168.1.115:/oracle/product/10.2/db_1/network/admin/tnsnames.ora /opt/instantclient_11_2/network/admin/
编辑root用户的bashrc文件
[root@edbserver ~]# vim ~/.bashrc
加入Oracle相关的环境变量并使之生效
export ORACLE_HOME=/opt/instantclient_11_2  
export PATH=$PATH:$ORACLE_HOME
export TNS_ADMIN=$ORACLE_HOME/network/admin  
export LD_LIBRARY_PATH=$ORACLE_HOME:$LD_LIBRARY_PATH
[root@edbserver ~]# source ~/.bashrc
[root@edbserver ~]# echo $ORACLE_HOME
运行sqlplus进行测试
[root@edbserver instantclient_11_2]# sqlplus scott/tiger@192.168.1.115:/oraedb
这时sqlplus连接Oracle数据库已经成功。

3、编辑postgresql.conf文件
[root@edbserver ~]# vim /opt/PostgresPlus/9.2AS/data/postgresql.conf
修改oracle_home参数的值为oci库所在位置:/opt/instantclient_11_2,这个参数仅仅在使用oracle oci才有用。
编辑完之后需要做一次重启操作:
[root@edbserver opt]# /etc/init.d/ppas-9.2 restart

4、使用psql创建dblink
[root@edbserver ~]# psql -U enterprisedb
edb=# CREATE PUBLIC DATABASE LINK edblinkora CONNECT TO scott IDENTIFIED BY 'tiger' USING oci '//192.168.1.115/oraedb';
其中,edblinkora是dblink的名称,oracle为scott用户,密码tiger,使用oci,最后是连接oracle数据库的连接字符串。提示“CREATE DATABASE LINK”表明dblink已经创建成功。

5、测试dblink
[root@edbserver ~]# psql -U enterprisedb  
edb=# select * from dept@edblinkora;

以上是PPAS与Oracle的DBLINK,下面准备迁移

6、将jdbc驱动copy到PPAS的驱动目录
[oracle@oraserver lib]$ scp /oracle/product/10.2/db_1/jdbc/lib/ojdbc14.jar root@192.168.1.111:/opt/PostgresPlus/9.2AS/jre/lib/ext/
这里需要注意一点:在复制oracle的jdbc驱动时,不要用*.*全部复制,应该需要哪一个就复制哪一个,否则会有错误Exception in thread "main" java.lang.NoClassDefFoundError: oracle/dms/instrument/ExecutionContextForJDBC。在这里我只需要ojdbc14.jar这一个jar包。

7、编辑toolkit.properties文件
[root@rhel ~]# vim /opt/PostgresPlus/9.2AS/etc/toolkit.properties
以下是文件内容:
SRC_DB_URL=jdbc:oracle:thin:@192.168.1.115:1521:oraedb
SRC_DB_USER=scott
SRC_DB_PASSWORD=tiger

TARGET_DB_URL=jdbc:edb://localhost:5444/oraedb
TARGET_DB_USER=enterprisedb
TARGET_DB_PASSWORD=000000

8、开始迁移
[root@edbserver ~]# cd /opt/PostgresPlus/9.2AS/bin
[root@edbserver bin]# ./runMTK.sh -users scott -copyViaDBLinkOra scott

四、Microsoft SQL Server向PPAS的迁移
(本次实验使用的是MS SQL Server2005与2008)
1、编辑tookit.properties文件
[root@rhel ~]# vi /opt/PostgresPlus/9.2AS/etc/toolkit.properties
SRC_DB_URL=jdbc:jtds:sqlserver://192.168.1.65:53024/bookmanage
SRC_DB_USER=sa
SRC_DB_PASSWORD=111111

TARGET_DB_URL=jdbc:edb://localhost:5444/bookmanage
TARGET_DB_USER=enterprisedb
TARGET_DB_PASSWORD=111111

2、准备驱动
下载jtds驱动并放置在/opt/PostgresPlus/9.2AS/jre/lib/ext/目录中。
下载地址:http://sourceforge.net/projects/jtds/
这里使用的数据库是SQL Server2005,经过测试,使用jtds-1.2.6版本驱动可以正常迁移。

3、迁移
[root@RHEL bin]# ./runMTK.sh -sourcedbtype sqlserver -targetSchema enterprisedb dbo
-targetSchema为ppas中的目标模式名称,但不能选择information_schema、dbo、sys 或 pg_catalog 作为目标架构。

-sourcedbtype的值默认为oracle,这里使用sqlserver,所以需要显式的指定-sourcedbtype的值。

4、对MS SQL Server的迁移的建议
目前测试过程中发现MS SQL Server的数据类型有money建议修改为numeric(12,4)。

五、迁移相关参数补充
linux下./runMTK.sh的基本参数
./runMTK.sh schema_name
schema_name参数是在源数据库中需要迁移的模式名称,在runMTK命令中必须至少包含一个schema_name的参数

-sourcedbtype db_type
指定源数据库类型,db_type的值:mysql,oracle,sqlserver,sybase

-offlineMigration
离线迁移
[root@rhel ~]# mkdir /opt/mtk/
[root@rhel ~]# ./runMTK.sh -users scott -offlineMigration /opt/mtk scott

-schemaOnly和-dataOnly
在缺省情况下,当迁移模式时,Migration tookit同时导入数据和对象定义(DDL),如果想只导入数据或对象定义(DDL),可以使用这两个参数。

还有其他的迁移选项开关,可以参考PPAS官方文档《Postgres_Plus_Migration_Guide_9_2.pdf》。

[原创]从Oracle和Microsoft Sql Server迁移到PostgreSQL Plus Advanced Server的更多相关文章

  1. [原创]使用benchmarksql和pgbench对PostgreSQL Plus Advanced Server进行性能测试

    一.测试环境 benchmarksql version:4.0.8 rhel 6.3 vmware esxi 二.理解benchmarksql性能测试原理TPC-C 1.理解TPC-C TPC-C模拟 ...

  2. [原创] PostgreSQL Plus Advanced Server在Windows中配置双机热备流复制

    一.系统环境 操作系统:Windows Server 2003/2008 两个节点分别为master与slave. 主节点master:172.27.19.28 备机点slave:172.27.19. ...

  3. [原创]PostgreSQL Plus Advanced Server配合crontab实现定时维护工作

    本文要实现的目标1.PostgreSQL定时全备2.定时删除归档WAL文件3.定时删除全备文件4.删除n天之前的数据库日志文件 实验环境操作系统:RHEL 6.3数据库:PostgreSQL Plus ...

  4. Oracle、Microsoft SQL Server、Mysql

    数据库对比.----1.Oracle:最贵,功能最多,安装最不方便,Oracle环境里的其他相关组件最多,支持平台数量一般,使用中等方便,开发中等方便,运维中等方便,不开源,速度最慢,最安全.---- ...

  5. [原创]PostgreSQL Plus Advanced Server监控工具PEM(四)

    四.PEM管理工具 1.编辑配置 选择进行管理的目标服务器,点击菜单Tools->Server Configuration->postgresql.conf管理服务器配置,可以看到我们经常 ...

  6. [原创]PostgreSQL Plus Advanced Server监控工具PEM(一)

    一.概述 PEM是为数据库管理员.系统架构师和性能分析师为管理.监控和优化 PostgreSQL 和 EnterpriseDB 数据库服务器设计的图形化管理工具.旨在解决大量数据库服务器跨地域.精细化 ...

  7. [原创]PostgreSQL Plus Advanced Server监控工具PEM(二)

    2.安装PEM Client 简单两条命令,开始PEM Client的安装. 我们在SUSE 11sp2上安装PEM Client 安装结束,运行PEM Client后可以看到如下的界面: 目前我们并 ...

  8. [原创]PostgreSQL Plus Advanced Server批量创建分区表写入亿级别数据实例

    当前情况:大表的数据量已接近2亿条我的解决思路:为它创建n*100个分区表,将各个分区表放在不同的tablespace上这样做的优点:1.首先是对这个级别的数据表的性能会有所提升2.数据管理更科学3. ...

  9. [原创]PostgreSQL Plus Advanced Server监控工具PEM(三)

    三.使用PEM Client 在PEM Client中连接PEM Server 点击上图所示的按钮或点击菜单-> 第一次连接PEM Server,会有一次导入证书的操作,点击Yes按钮. 接下来 ...

随机推荐

  1. Flex 使用列表和表格

    Flex 设计了不同的控件来实现列表和表格,不仅能够将数据显示在表格和列表中,还可以实现对数据进行操纵,修改等更加强大的功能. 与列表和表格相关的控件如下所示: 列表控件(List Control): ...

  2. EXTJS 表单提交

    EXTJS框架中,在提交表单时,可有3种方式: 方法一: 普通的 Form 提交方式, 主要使用 form.submit() 方法来将表单提交到后台,在后台是根据表单的 name 属性来获取表单中元素 ...

  3. 关于java.lang.IllegalStateException

    今天调试程序时遇到了java.lang.IllegalStateException org.apache.catalina.connector.ResponseFacade.sendRedirect( ...

  4. Android基础总结(6)——内容提供器

    前面学习的数据持久化技术包括文件存储.SharedPreferences存储以及数据库存储技术保存的数据都只能被当前应用程序所访问.虽然文件存储和SharedPreferences存储中提供了MODE ...

  5. Java基础整理(1)

    1.源代码的文件名必须与公共类(public)的类名一致,而且一个源代码文件中最多只能有一个公共类(public) 2.注释: 3种 行注释  以双斜线  //  开始 段落注释  /*  注释内容 ...

  6. SQL Server 数据库基础编程

    Ø Go批处理语句 用于同时执行多个语句 Ø 使用.切换数据库 use master go     Ø 创建.删除数据库   方法1.   --判断是否存在该数据库,存在就删除 if (exists ...

  7. 使用/proc实现内核与用户空间通信

    1. 前言   Linux内核空间与用户空间的通信可通过"/proc"目录的文件读写来实现,如果只是控制内核中的参数而不是传输较多数据的话,用“/proc”是很合适的.另外一种内核 ...

  8. JavaScript的检测属性、属性特性、枚举属性

    /* 检测属性 检测属性可以通过三种方式 1.通过in运算符 2.通过hasOwnPerperty() 如果给定的属性是继承属性将返回false 3.通过propertyIsEnumerable(): ...

  9. Android IOS WebRTC 音视频开发总结(三五)-- chatroulette介绍

    本文主要从技术角度介绍chatroulette,文章来自博客园RTC.Blacker,支持原创,转载请说明出处. 很多人不知道或没用过chatroulette,下面先来张界面截图让大家有个整体了解: ...

  10. mac ping ip地址

    Mac下有个类似于Windows下CMD的模式叫做终端,但是这个模式和Windows下的CMD有着很大的差别. 工具/原料 Mac电脑一台 方法/步骤   首先通过菜单栏的搜索功能找到“终端”,也可以 ...