1、了解PPAS的迁移方式
一、在线迁移和离线迁移
使用Migration Studio或Migration Toolkit直接向PPAS数据库进行对象定义和数据表中数据的迁移称为在线迁移,生成要迁移对象的脚本,在随后的某一时刻在PPAS中执行这些脚本用来恢复对象定义称为离线迁移。
二、迁移过程
1)明确须要对哪些数据库对象和数据进行迁移;
2)了解在迁移过程当中可能遇到的问题;
3)准备迁移环境,安装必要的软件,创建好服务器之间的链接;
4)迁移过程当中,若是有大量数据须要进行处理,那么应在移动数据前先迁移模式中的对象定义(DDL),并验证DDL的迁移结果,并解决全部出现的问题;
5)对数据进行迁移;
6)确认数据迁移结果,并解决在迁移结果概要中所报告的问题;
7)对应用程序进行转换,使应用程序能够在PPAS环境中运行;
8)进行系统性能测试,对新数据库服务器进行性能调整
2、一个简单的迁移实例
一、准备实验环境
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
二、准备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/
三、从Oracle10g迁移到PPAS-9.2
Migration Tookit的可执行文件为安装目录下bin中的runMTK。
四、编辑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
五、给准备迁移的模式的用户赋予dba角色并执行迁移动做
我这里测试是用scott用户,首先在Oracle中临时给scott用户赋予全部权限
SQL> grant dba to scott;
建立与准备迁移的Oracle模式全部者相同的用户,本例为scott;
六、迁移
[root@rhel bin]# ./runMTK.sh -users scott scott
至此,oracle10g向PPAS9.2的迁移操做成功!
3、PPAS与Oracle在dblink下的迁移
一、环境准备:
ppas9.2.1.3:
ip:192.168.1.111
oracle10g 10.2.0.1
ip:192.168.1.115
二、建立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数据库已经成功。
三、编辑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
四、使用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已经建立成功。
五、测试dblink
[root@edbserver ~]# psql -U enterprisedb
edb=# select * from dept@edblinkora;
以上是PPAS与Oracle的DBLINK,下面准备迁移
六、将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包。
七、编辑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
八、开始迁移
[root@edbserver ~]# cd /opt/PostgresPlus/9.2AS/bin
[root@edbserver bin]# ./runMTK.sh -users scott -copyViaDBLinkOra scott
4、Microsoft SQL Server向PPAS的迁移
(本次实验使用的是MS SQL Server2005与2008)
一、编辑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
二、准备驱动
下载jtds驱动并放置在/opt/PostgresPlus/9.2AS/jre/lib/ext/目录中。
下载地址:http://sourceforge.net/projects/jtds/
这里使用的数据库是SQL Server2005,通过测试,使用jtds-1.2.6版本驱动能够正常迁移。
三、迁移
[root@RHEL bin]# ./runMTK.sh -sourcedbtype sqlserver -targetSchema enterprisedb dbo
-targetSchema为ppas中的目标模式名称,但不能选择information_schema、dbo、sys 或 pg_catalog 做为目标架构。
-sourcedbtype的值默认为oracle,这里使用sqlserver,因此须要显式的指定-sourcedbtype的值。
四、对MS SQL Server的迁移的建议
目前测试过程当中发现MS SQL Server的数据类型有money建议修改成numeric(12,4)。
5、迁移相关参数补充
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》。
java