Oracle移植经验交流

合集下载

循序渐进讲解Oracle9i数据库的迁移过程

循序渐进讲解Oracle9i数据库的迁移过程

循序渐进讲解Oracle9i数据库的迁移过程需求:把原系统Oracle 9205数据库迁移到一台新的服务器和阵列上,原系统有250GB的数据量,需要停止原来系统的业务,做冷备份和恢复。

解决方法如下:◆1.在新的服务器和阵列上装好一个oracle 9206数据库;◆2.停止原系统oracle 9205;◆3.把原系统的数据冷拷贝到新的服务器上,然后按照以下步骤来进行恢复:(1)、获取数据库相关信息首先要查看一下数据库的文件内容:select * from v$datafile;select * from v$controlfileselect * from v$logfile;数据文件:G:\ORADATA\WEBOA\SYSTEM01.DBFG:\ORADATA\WEBOA\UNDOTBS01.DBFG:\ORADATA\WEBOA\CWMLITE01.DBFG:\ORADATA\WEBOA\DRSYS01.DBFG:\ORADATA\WEBOA\EXAMPLE01.DBFG:\ORADATA\WEBOA\INDX01.DBFG:\ORADATA\WEBOA\ODM01.DBFG:\ORADATA\WEBOA\TOOLS01.DBFG:\ORADATA\WEBOA\USERS01.DBFG:\ORADATA\WEBOA\XDB01.DBF控制文件:G:\ORADATA\WEBOA\CONTROL01.CTLG:\ORADATA\WEBOA\CONTROL02.CTLG:\ORADATA\WEBOA\CONTROL03.CTL重做日志文件:G:\ORADATA\WEBOA\REDO03.LOGG:\ORADATA\WEBOA\REDO02.LOGG:\ORADATA\WEBOA\REDO01.LOG(2)、移动应用数据文件shutdown immediate关闭数据库,拷贝数据文件到另外一个目录下。

ORACLE到DB2应用移植方法探讨

ORACLE到DB2应用移植方法探讨
DDL 语句作为注释。报告文件包含在转换期 间标识的一列错误。可以在 R e i e 页上查 f n 看和编辑这些文件. 该页在对象被转换之后自 动打开。 步骤3细化细化步骤用来查看转换结 果, 定位错误消息和对已转换的 DDL 进行更 改在细化了已 转换的数据之后, 必须返回到转 换步骤来应用更改。当再次执行转换步骤时, 转换器将细化的更改与最初抽取的源 DDL语
1 引言 在一些企业系统应用 集成时, 往往需要把
DDL 源文件。 源文 件可以来自 本地文件系
统, 也可以直由源数据库直接导出。步骤
2 : 转换在从转换选项中进行选择之后, 源
DDL 语句被转换成T DBZ DDL。每次转换 的结果都是一个 DBZ文件(.DB2 和一个报告 )
文件( .rpt 。 ) DBZ文件包含转换期间 创建的 DBZ DDL 语句, 通常在这些语句前加上源
高新 技 术
2 D0 7 N() . 1, g C 乍帐芥 & T〔 和臼 OO Y INF 自 刁 A l l(》」 自 M
ORACLE 到 0 日 应用移植方法探讨 2
段永见
(西安建筑科技大学
1 7 0055 )
摘 要: 本文从应用 移植的角度描述了OR ACLE 和DBZ 存在的一些差异, 列举了几种移植方案,结合作者参与的项目,对基干MT K 的移植方案: MTK 移植工具的应用和两 个数据库系 统中不兼容的数据库对象的 移植策略做了进一步的探讨与应用。获得了 满意的效果。
句合并, 以产生更新的目 DBZ 和XML元 标 数据( 由 DDL 指定的源对象表示)。最初的
关 键词 移 植 数据 库对象 MTK ORACLE DBZ
中图分类号: T P 392 文献标识码: A

DM DBA手记之ORACLE移植到DM

DM DBA手记之ORACLE移植到DM

(2)源 oracle 序列范围超出目的 DM 序列可定义范围。对于这类报错,需要分析源库 序列用途,目的库范围是否能够满足使用情境。如可以满足,则按照目的 DM 的可定义 范围设置,如存在风险,则考虑在应用层面修改或者采取其他措施规避风险。
2.3.3 表对象迁移
一次性迁移
对于表比较少,数据量不大的系统,可以通过 DTS 采取一次性迁移, 全部选中即可。
(4)关于字符集 CHARSET。建议采用默认值 GB18030,如果需要国际字符可以采用 Unicode,GB18030 数字字母占 1 个字节,普通汉字占 2 个字节,部分繁体及少数民族文 字占 4 字节,Unicode 在达梦中采用 UTF-8 编码格式,欧洲的字母字符占 1 到 2 个字节, 亚洲的大部分字符占 3 个字节,附加字符为 4 个字节。如果只存储中文和字母数字,一般 来说 GB18030 更节省空间一些。
(2)关于簇大小 EXTENT_SIZE。数据文件使用的簇大小,即每次分配新的段空间时连 续的页数,只能是 16 页或 32 页,缺省使用 16 页,从 ORACLE 移植到 DM 使用默认值就 可。
(3)关于大小写敏感 CASE_SENSITIVE。DM 为了兼容不同的数据库,在初始化数据 库的时候有一个参数字符串比较大小写敏感,用于确定数据库对象及数据是否区分大小写, 默认为区分,不可更改。建议 MYSQL 和 SQLSERVER 迁移过来的系统,使用大小写不敏感, ORACLE 迁移过来的系统,使用大小写敏感,以便和原来系统匹配。
2.2 准备移植环境
本节讨论的内容是关于对移植环境的准备工作,鉴于移植工作最终的目的可能不同,我
们需要对目的做一下分类,分类之后,可以更好的明确我们的环境准备工作的需求,从而使

oracle数据库移植到postgresql数据库的注意事项

oracle数据库移植到postgresql数据库的注意事项
出处:/lichkui/archive/2008/07/11/2639325.aspx
最近尝试把一个Oracle数据库,连同构建在这个数据库上的Java应用移植到PostgreSQL环境。在移植过程中,总结了一些要点,一方面作为笔记备忘,一方面也给有类似任务需要处理而又无从下手的朋友作为参考。 1- 首先是准备PostgreSQL环境。有条件的话,最好是找一台空闲的PC机作为测试服务器,安装Linux或BSD,然后从源码编译最新的PostgreSQL 8.3.0。编译时,通过configure指定--with-perl和--with-python以支持PL/Perl和PL/Python。因为绝大多数Linux发行版都已自带Perl和Python,不必额外安装。 2- 如果是Windows环境,又需要Perl和Python,则必须额外安装,Python的话,可以方便的找到2.5 for Windows的安装包,Perl的话,推荐ActivePerl,相对麻烦一点,为了后面用到的一些便利的功能顺利加载,Perl版本尽量选5.8.8。 3- 创建数据库和用户。通过initdb初始化数据目录,配置postgresql.conf指定主机IP、端口等等信息,配置pg_hba.conf指定访问权限,通过pg_ctl -D <数据目录> -l <日志文件> start启动postmaster,然后createdb、createuser创建数据库和用户。数据库建好之后,就可以createlang -d <数据库名> [plperl|plperlu|plpython|plpythonu]开启PL/Perl和PL/Python。具体命令行参数可通过各命令加--help查看。 4- 安装PostgreSQL客户端pgAdminIII,最新版是1.8.2,有条件的话,也可以下载源码自己编译。 5- 安装Oracle客户端,需要在PostgreSQL同一台机器,以便Perl用于连接数据库的DBI和Oracle驱动DBD::Oracle模块顺利安装。如果是Windows上的ActivePerl,则可以通过ppm install DBD-Oracle,如果是Linux/BSD,则可以通过CPAN来安装,如perl -MCPAN -e shell进入CPAN Shell,通过install <模块名>或force install <模块名>安装DBI和DBD::Oracle。 6- 数据库的移植,可以选择ora2pg来帮忙,目前的版本是4.7。ora2pg是一个用于读取Oracle数据库schema、数据,并生成PostgreSQL脚本或直接导入PostgreSQL数据库的Perl工具。用法很简单,就是通过.conf文件指定数据库连接信息包括NLS_LANG、需要导出导入的schema、table、view、data等等,然后执行一个pl脚本。这是目前相对比较成熟的一个方案,但是遇到schema复杂、约束较强的数据库,需要手工处理的地方还是不少。建议不要直接写入PostgreSQL,而是生成SQL脚本,验证无误后再执行。ora2pg默认会把Oracle中名称的大写转换成小写,因为PostgreSQL在解析SQL时,除非""括起来,默认都是转成小写。schema、table、view、sequence、data等等,基本用ora2pg,加上一些手工调整即可搞定。至于function、stored procedure等,还是手工移吧,偷不得懒。除了ora2pg,其实也可以配置DBI-Link,将Oracle数据库挂到PostgreSQL数据库作为一组独立的"schema",然后用create table xxx as select ... from ...这样的语法来倒表和数据。PostgreSQL的contrib包也附带有一个dblink,不过是连接其他PostgreSQL数据库的,如果需要连接非PostgreSQL,还是考虑DBI-Link,任何可以通过Perl的DBI接口访问的数据库,都能link进PostgreSQL。 7- 接下来就是Java应用本身了,我这次移的这个应用是Spring+iBatis架构的,很多SQL语句都是明文,好在DAO层的基础部分(CRUD)的SQLMap是工具自动生成,且都是符合ANSI SQL92标准的,不需要修改即可使用。其余的高级查询SQL,需要调整的地方不少,一些常见的修改列举如下: i. SELECT出来的column(包括子查询),如果有别名,必须加AS,比如 select null as some_column from some_table; ii. PostgreSQL没有dual表,类似select 0 from dual的语句,写成select 0即可; iii. DECODE函数需要重构成(case when some_column = 'some_value' then 'some_other_value' when ... then ... else 'some_default_value' end ) as some_column; iv. NVL()函数,PostgreSQL中相对应的是coalesce(),其实几乎所有主流DBMS都支持coalesce,包括Oracle,这才是标准写法; v. 比较日期,在PostgreSQL中,建议使用date_trunc('day', SOME_DATE) = date_trunc('day', #enteredDate#)这样的写法,其中'day'位置可选字段包括有year、month、week、hour、minute、second等等; vi. SYSDATE,对应到PostgreSQL是current_timestamp,可以根据需要使用current_date; vii. ROWNUM,通常我们用ROWNUM都是为了限制查询出来的记录数,PostgreSQL没有这个关键字,需要改成在SELECT语句最后添加 LIMIT语句,如LIMIT 100; viii. (+)这样的外连接写法需要调整为SQL标准的 table1 [LEFT|RIGHT|FULL] OUTER JOIN table2 ON (...); ix. CONNECT BY ... START WITH ... 递归查询可以参考 http: ///docs/8.3/static/tablefunc.html 的connectby()函数. 最后再多提一点,PostgreSQL自带的过程语言是PL/pgSQL,在PostgreSQL上写function,除了用plpqsql,还支持sql、plperl(u)、plpython(u)等等。如果你对SQL天生过敏,看类似PL/pgSQL的代码都很吃力,别说是写了,你完全可以用你喜欢的语言来表达函数和存储过程的逻辑。有了PL/Python,你还怕什么呢?你几乎能做任何事。 [更新 20080313] 把JDBC驱动的部分漏掉了,移植Java应用时,除了改SQL,还需要拿PostgreSQL的JDBC驱动放到classpath下面,如WEB-INF/lib,然后修改数据库连接URL,改成jdbc:postgresql://<ip>:<port>/<dbname>即可。 [更新 20080323] 移植schema和数据时,比ora2pg更方便的一种方式是利用EnterpriseDB的Migration Tool,将Oracle的JDBC驱动ojdbc14.jar拷贝到EnterpriseDB安装路径下的jre/lib/ext下后,启动Developer Studio即可建立Oracle连接,选中schema后,可以通过右键Online Migration将schema、数据、函数包等等一次性通通导入EnterpriseDB。如果要继续往"纯"PostgreSQL移,从EDB做backup,然后到PostgreSQL下做restore,这样会丢掉函数包,因为毕竟EDB在PostgreSQL基础上做了相当改造以和Oracle兼容,不过函数包之类还是手工移比较稳妥。

PART1_ORACLE数据库移植到MYSQL迁移注意事项

PART1_ORACLE数据库移植到MYSQL迁移注意事项

ORACLE数据库移植到MYSQL迁移注意事项一、前言作为一个开源数据库,MySQL用无数案例证明了她的可用性,因此让我们把重点放在如何将Oracle移植到MySQL上。

有相当多的工具可以辅助这种移植过程。

但是,由于数据库实现的差异,完美的移植工具是不存在的,移植过程中不断碰到的问题证明了这一点,特别是您使用了Oracle的一些高级特性时。

从Oracle 移植到MySQL主要有六个方面的内容需要移植,一是表Table,包括表结构和数据,二是触发器Trigger,三是存储过程Procedure,函数 function和包Package,四是任务Job,五是用户等其他方面的移植,六是具体应用程序通过SQL语句访问时的细节差异克服。

二、表的移植这个部分的移植是最容易用工具实现的部分,因为很多MySQL的图形管理工具都自带这样的移植工具,比如SQLYog,MySQL Administrator等。

但是,这些工具的移植能力各有不同,对字段类型转换﹑字符集等问题都有自己的处理方式,使用时请注意。

我们使用“SQLYog Migration Toolkit”工具按提示步骤移植后,表的主要结构和数据将成功移植,主要包括表的字段类型(经过映射转换,比如number会转换为 double,date 转换为timestamp等,请小心处理日期字段的默认值等),表的主键,表的索引(Oracle的位图索引会被转成BTree索引,另外表和字段的注释会丢失)等信息。

需要特别注意的是,Oracle的自增字段的处理。

大家知道,Oracle 通常使用序列sequence配合触发器实现自增字段,但是MySQL和SQL Server等一样,不提供序列,而直接提供字段自增属性。

所以,请把Oracle里面的自增字段实现直接改为MySQL的字段属性,而且,这个字段必须是主键(key)并且不能有默认值。

还有一个问题,如果您的应用要直接使用Oracle的某个序列,那么您只能在MySQL里面模拟实现一个,具体方法就是利用MySQL的自增字段实现的。

oracle数据库数据迁移解决方案

oracle数据库数据迁移解决方案

oracle数据库数据迁移解决⽅案⼤部分系统由于平台和版本的原因,做的是逻辑迁移,少部分做的是物理迁移,接下来把⼼得与⼤家分享⼀下 去年年底做了不少系统的数据迁移,⼤部分系统由于平台和版本的原因,做的是逻辑迁移,少部分做的是物理迁移,有⼀些⼼得体会,与⼤家分享。

⾸先说说迁移流程,在迁移之前,写好⽅案,特别是实施的⽅案步骤⼀定要写清楚,然后进⾏完整的测试。

我们在迁移时,有的系统测试了四五次,通过测试来完善⽅案和流程。

针对物理迁移,也即通过RMAN备份来进⾏还原并应⽤归档的⽅式(这⾥不讨论通过dd⽅式进⾏的冷迁移),虽然注意的是要将数据库设为force logging的⽅式,在⽤RMAN做全备之前,⼀定要执⾏: 否则可能会产⽣坏块。

对于逻辑迁移,在job_processes设置为>0的数值之前,注意job的下次执⾏时间和job所属⽤户。

⽐如job的定义在之前已经导⼊,但是在迁移之时,job已经运⾏过,那么迁移完成之后,job的下次时间还是原来的时间,这样可能会重复运⾏。

另外,job通过IMP导⼊后,job 所属⽤户会变成导⼊⽤户的名称,显然job原来的⽤户就不能对JOB进⾏管理了,可以通过下⾯的sql进⾏修改: 在迁移之前,应该禁⽌对系统进⾏结构上的修改和发布,⽐如表结构,索引,存储过程包等。

如果是⽤exp/imp导⼊的对象,包括存储过程等,应该检查对象是否与原⽣产库⼀致,⽐如由于dblink的原因,imp之后,存储过程不能创建,导致有部分存储过程丢失,尽管这些存储过程可能没有被使⽤。

下⾯是⼀些加快迁移速度的技巧: 通过dblink,使⽤append insert的⽅式,同时利⽤并⾏,这种⽅式⽐exp/imp更快 对于有LONG类型的列,insert..select的⽅式显然是不⾏的,可以通过exp/imp的⽅式,但是这种⽅式速度⾮常慢,其原因在于imp时⼀⾏⼀⾏地插⼊表。

有另外⼀种⽅式,即sqlplus的copy命令,下⾯是⼀个⽰例: 不过,sqlpus的copy命令不⽀持有timestamp和lob列类型的表。

oracle数据库迁移方案

oracle数据库迁移方案

oracle数据库迁移方案在进行Oracle数据库迁移时,需要考虑到诸多因素,包括数据的完整性、稳定性和安全性。

本文将介绍一种可行的Oracle数据库迁移方案,希望能够对大家有所帮助。

首先,进行数据库迁移前,需要对现有的数据库进行全面的备份。

这一步非常关键,可以保证在迁移过程中出现问题时,能够及时恢复数据,避免造成不必要的损失。

可以选择使用Oracle提供的备份工具,也可以使用第三方备份软件进行备份操作。

其次,确定目标数据库的环境和配置。

在进行数据库迁移时,目标数据库的环境和配置需要与原数据库保持一致,包括操作系统、数据库版本、存储设备等。

如果目标数据库与原数据库的环境有所不同,需要提前进行环境的调整和配置的优化。

接下来,选择合适的迁移工具。

Oracle提供了多种数据库迁移工具,包括Data Pump、Transportable Tablespaces等。

根据实际情况选择合适的迁移工具,并对迁移工具进行详细的配置和参数设置。

然后,进行数据迁移操作。

在进行数据迁移时,需要确保数据的完整性和一致性。

可以选择全量迁移或增量迁移的方式,根据实际情况选择合适的迁移策略。

在迁移过程中,需要对迁移的数据进行验证和测试,确保数据的准确性和完整性。

最后,进行数据库的验证和性能调优。

在完成数据迁移后,需要对目标数据库进行全面的验证和性能调优。

可以使用Oracle提供的性能调优工具,对数据库的性能进行优化和调整,确保数据库的稳定性和高效性。

综上所述,Oracle数据库迁移是一个复杂的过程,需要对各个环节进行详细的规划和操作。

通过本文介绍的迁移方案,希望能够帮助大家顺利完成数据库迁移操作,确保数据的安全和稳定。

祝大家在数据库迁移的过程中顺利完成,谢谢!。

Oracle技巧实录

Oracle技巧实录

Oracle数据库移植时字符集问题的解决作者:slackerqxl对于Oracle数据库之间的移植采用Oracle的导入导出工具(Import/Export)是一个比较好的策略。

虽也可以利用第三方软件如Sybase 的Power designer中的Reverse Engineering 进行数据库结构重建,然后在进行较复杂的数据导入过程,但对于作业队列、快照等则不得不用手工来创建。

而Export能将整个数据库、指定用户、指定表和相关的数据字典进行输出,Export输出的输出转存二进制文件包括了完全重建所有被选对象所需的命令。

本人在为某电厂MIS(Oracle数据库)数据采用Oracle的导入导出工具从Windows NT平台移植到Digital Unix平台时遇到的关于字符集的问题和总结出的经验与大家来分享。

1. 移植环境原操作系统平台:Windows NT数据库:Oracle 8.0.5 for Windows NT服务器:HP NetServer LH3目标操作系统平台:Digital Unix alpha V4.0数据库:Oracle 8.0.4 for Digital Unix服务器:ALPHASERVER ES40 小型机2. 数据导出在NT服务器上用Oracle导出工具进行数据导出,Oracle导出工具有命令行和图形界面两种本人直接用命令行方式进行数据导出:c:> exp80 gxmisdba/manager file=c:expdat.dmp log=c:export.log即将导出指定的用户.... 正在导出用户GXMISDBA的外部函数程序库名称. 正在导出用户GXMISDBA的对象类型定义即将导出GXMISDBA的对象.... 正在导出数据库链接. 正在导出序号. 正在导出群集定义. 即将导出GXMISDBA的表通过常规路径.... . 正在导出表AAAAA 0 行被导出. . 正在导出表EVT_CARRIER_CONFIGURA TION 0 行被导出. . 正在导出表TBL_AJ_AGKS 331 行被导出. 正在导出同义词. 正在导出视图. 正在导出存储的过程. 正在导出参考资料一致性约束条件. 正在导出触发器. 正在导出后期表活动. 正在导出快照. 正在导出快照日志. 正在导出作业队列. 正在导出刷新组和子组在没有警告的情况下成功终止导出。

oralce迁移方法与适用场景

oralce迁移方法与适用场景

oralce迁移方法与适用场景标题:Oracle 迁移方法与适用场景嗨,亲爱的朋友!今天我要和你唠唠 Oracle 迁移这档子事儿,这可是我的独家秘籍,一般人我不告诉他!首先,咱们来聊聊为啥要搞这个 Oracle 迁移。

就好比你住的房子,时间长了又破又旧,功能也跟不上你的需求啦,你就得换个新的或者翻新一下,Oracle 系统也是这个道理。

那 Oracle 迁移都有啥方法呢?第一种方法,“直接搬家法”。

这就好比你把所有的家当一股脑儿地从一个房子搬到另一个房子,简单粗暴。

操作起来就是把整个 Oracle 数据库的数据、结构啥的,原封不动地搬到新的数据库环境中。

比如说从 Oracle 迁移到 MySQL 或者 PostgreSQL 。

但是这个方法有个要注意的地方,就像你搬家的时候,有些大件家具可能在新家里放不下,得提前量好尺寸。

在数据库迁移里,就是要注意新数据库和 Oracle 的语法、数据类型等差异,不然可能会出乱子。

我跟你说个我的奇葩经历,有一次我没搞清楚新数据库不支持Oracle 里的某个函数,结果迁移完一运行,系统直接崩溃,那场面,简直惨不忍睹!第二种方法,“逐步迁移法”。

这个就像是蚂蚁搬家,一点一点来。

先把不太重要的或者不常使用的数据迁移过去,测试没问题了,再迁移重要的核心数据。

这个方法的好处是风险比较低,就算中间出了点小岔子,也不会影响全局。

但是呢,耗时比较长,需要有耐心。

第三种方法,“数据转换法”。

这就好比把苹果变成橙子,得经过一系列的加工处理。

就是把 Oracle 里的数据格式、结构进行转换,以适应新的数据库。

比如说把 Oracle 里的存储过程改写成新数据库支持的语法。

这个方法需要对两种数据库都非常熟悉,不然很容易搞错。

那这些方法都适用于哪些场景呢?如果你的业务紧急,要求尽快完成迁移,而且新老数据库差异不大,那“直接搬家法”可能比较适合你。

但要是你的系统很复杂,对稳定性要求极高,那就得选“逐步迁移法”,稳扎稳打。

Oracle(甲骨文)数据库迁移的基本方法与设计总结

Oracle(甲骨文)数据库迁移的基本方法与设计总结

Oracle(甲骨文)数据库迁移的基本方法与设计总结其他软件开发项目一样,数据库的迁移需要谨慎的规划以及良法的方法以确保其成功。

这其中,数据库的设计至关重要,特别是关系型数据库的schema设计。

可以通过数据库复制技术来保持多个数据库的同步,替代之前使用的旧方式,比如数据库表分区以及Oracle RAC等。

所以,在进行Oracle数据库迁移的时候,一定的更改是必需的,而这样做的结果就是要进行一系列的数据库schema整合。

数据库设计调整的关键,就是要对整个迁移项目生命周期有一个完成清晰的认识理解,并知道每一步中的重点工作是什么。

这其中设计到多个因素,比如相关的IT技术人员、需要的工具、对源数据库和目标数据库平台技术的掌握以及实际的项目规划等。

所以,我们在进行迁移项目之前,一定要对上述因素有一个完整的把握,这样可以到达事半功倍的效果,同时可以在一定程度上避免不必要的麻烦。

甲骨文培训:数据库迁移选项在所有C/S应用迁移项目之中,数据库迁移是最为常见的,它允许用户在迁移到新的平台上之后而不影响应用的完整性,不改变现有的功能以及业务角色,包括应用开发中所用到的编程语言。

这是最简单的迁移方式,能够确保新环境下的业务连续性。

另外一种情况,就涉及应用的更改,其中应用程序在新环境中很难维护或升级,它们或者需要用新的语言来编写,或者用到了最新的技术和标准。

这样的迁移项目就不仅仅是平台迁移那么简单了。

而对于那些关键业务应用,你需要确保它能够通过多种方式访问,如浏览器、移动设备等,这种情况下往往要对应用进行较大的调整以适应新的数据库环境,在进行迁移之前还要做一系列的仿真测试。

IBM大型机以及其他平台上的遗留应用程序,往往需要进行重组才能够运行在分布式平台之上。

你可以使用一些软件来模拟IBM大型机环境,测试能否提供相同的功能,如Oracle Tuxedo 就是这样的软件工具。

选择什么样的迁移选项将取决于你的业务需求以及限制(如时间、成本、可行性等)。

详细讲解Oracle数据库的数据迁移方法

详细讲解Oracle数据库的数据迁移方法

详细讲解Oracle数据库的数据迁移方法Oracle数据库的数据迁移可以使用多种方法,包括传统的物理备份和恢复,逻辑备份和恢复,以及逻辑复制。

下面将详细介绍这些方法。

1. 物理备份和恢复(Physical Backup and Recovery):物理备份和恢复是最常用的数据迁移方法之一、它基于数据库的物理结构,通过将数据文件、控制文件和日志文件等直接复制到目标数据库来完成数据迁移。

具体步骤如下:(1)在源数据库上执行全量备份,包括数据文件、控制文件和日志文件。

(2)将备份文件传输到目标数据库主机。

(3)在目标数据库上恢复备份文件。

物理备份和恢复的优点是速度快,适用于大规模数据迁移,但缺点是需要额外的存储空间以及停机时间。

2. 逻辑备份和恢复(Logical Backup and Recovery):逻辑备份和恢复是另一种常用的数据迁移方法,它基于逻辑结构,通过导出和导入数据来完成数据迁移。

具体步骤如下:(1) 在源数据库上执行逻辑备份,例如使用expdp命令将数据导出为数据泵文件。

(2)将数据泵文件传输到目标数据库主机。

(3) 在目标数据库上执行逻辑恢复,例如使用impdp命令将数据导入。

逻辑备份和恢复的优点是可以选择性地备份和恢复数据,不需要额外的存储空间,但缺点是速度较慢,适用于小规模数据迁移。

3. 逻辑复制(Logical Replication):逻辑复制是一种将源数据库的数据变更应用到目标数据库的方法,它可以实时地将数据更新传输到目标数据库。

具体步骤如下:(1) 在源数据库上启用逻辑复制功能,例如使用Oracle GoldenGate或Oracle Streams。

(2)配置源数据库和目标数据库之间的连接。

(3)在目标数据库上创建复制进程,用于接收源数据库发送的数据变更。

(4)启动复制进程,开始数据复制。

逻辑复制的优点是实时性好,可以减少停机时间,但缺点是配置和管理复杂,需要考虑数据一致性和传输性能等问题。

oracle数据库迁移方案

oracle数据库迁移方案

oracle数据库迁移方案Oracle数据库迁移方案概述在企业中,由于各种原因,可能需要将Oracle数据库迁移到其他环境中,比如在服务器硬件升级、数据中心迁移或者云环境迁移等情况下。

数据库迁移是一个复杂的过程,需要仔细计划和准备,以确保数据的完整性和可用性。

本文将介绍Oracle数据库迁移的一般步骤和常见的迁移方法。

迁移步骤下面是Oracle数据库迁移的一般步骤:1. **规划和准备阶段**:- 定义迁移目标:确定将Oracle数据库迁移到哪个环境。

例如,迁移到新的物理服务器、虚拟化平台或云环境等。

- 收集信息:收集相关的数据库信息,包括数据库版本、大小、运行时间窗口、性能指标和依赖关系等。

- 制定迁移计划:根据收集到的信息,制定详细的迁移计划,包括时间表、资源需求、风险评估等。

2. **备份和恢复阶段**:- 备份数据库:在进行任何迁移操作之前,务必进行数据库的完整备份。

这是防止数据丢失的关键步骤。

- 恢复测试:针对备份的数据库进行恢复测试,以确保备份文件的可用性和正确性。

3. **迁移和验证阶段**:- 安装目标环境:根据迁移计划,在目标环境中安装和配置Oracle数据库软件。

- 迁移数据:将备份的数据库导入到目标环境中。

可以使用Oracle Data Pump工具或物理备份恢复来完成数据导入。

- 数据验证:在迁移完成后,进行数据验证,比较源数据库和目标数据库中的数据是否一致。

- 重新配置:在目标环境中重新配置和优化数据库,以适应新的硬件或环境。

4. **测试和优化阶段**:- 性能测试:在目标环境中进行性能测试,以确保迁移后的数据库可以满足业务需求。

- 优化和调整:根据性能测试的结果,对数据库进行优化和调整,以提高数据库的性能和可靠性。

5. **切换和验证阶段**:- 切换数据库:将应用程序切换到新的目标数据库。

这包括配置应用程序连接信息、测试应用程序的可用性等。

- 验证和测试:在切换完成后,进行验证和测试,确保应用程序能够正常访问和使用新的数据库。

oracle 数据库迁移 实例

oracle 数据库迁移 实例

一、介绍Oracle数据库是全球领先的企业级数据库管理系统,在各种企业级应用程序中得到广泛的应用。

随着企业业务的发展和需求的变化,有时候需要将Oracle数据库迁移到其他服务器或者云评台上,以满足新的业务需求。

本文将介绍Oracle数据库迁移的一般步骤和实际操作过程。

二、准备工作1. 确定迁移目标在进行数据库迁移之前,首先需要明确数据库迁移的目标。

是迁移到另一台物理服务器上,还是迁移到云评台上?迁移到哪个云评台?这些都需要在迁移之前明确。

2. 确认迁移环境在进行数据库迁移之前,确认迁移目标环境是否满足Oracle数据库的硬件和软件要求。

确保目标环境中有足够的存储空间、内存和CPU资源,并且安装了适当版本的Oracle数据库软件。

3. 数据库备份在进行数据库迁移之前,务必对当前的Oracle数据库进行备份。

备份数据可以作为迁移失败时的恢复手段,确保数据不会丢失。

4. 迁移计划制定数据库迁移的详细计划,包括迁移的时间、步骤、责任人等,以确保迁移过程顺利进行。

三、迁移过程1. 安装目标环境在确定好迁移目标环境之后,需要在目标环境中安装相应的操作系统和Oracle数据库软件。

确保安装的版本和配置与源环境一致。

2. 导出数据在进行数据库迁移之前,需要将源数据库中的数据导出。

可以使用Oracle提供的expdp命令进行数据导出,将数据导出到一个文件中。

3. 拷贝文件将数据导出的文件拷贝到目标环境中,确保文件的完整性和正确性。

4. 导入数据在目标环境中,使用Oracle提供的impdp命令将导出的数据文件导入到目标数据库中。

5. 更新配置在数据库迁移完成后,需要对目标数据库进行相应的配置更新,包括网络配置、监听配置、参数配置等,以确保数据库能够正常运行。

四、迁移后处理1. 测试在数据库迁移完成后,需要进行相应的测试,包括功能测试、性能测试、容灾测试等,以确保数据库迁移的成功。

2. 切换在测试通过之后,可以进行数据库切换,将迁移后的数据库投入使用,停用源数据库。

Oracle数据库迁移方法

Oracle数据库迁移方法

Oracle 数据库迁徙1.背景:据项目实行人员反应,部署系统的过程中,有一个最大的问题,那就是平台数据库的迁徙。

常常会碰到表空间导出导入失败,或是导入过程中数据表丢掉或是数据表固然能导入,但表字段丢掉等现象。

针对这类状况,我仔细剖析了一下:主要原由出在当前的exp/imp这类数据导入导出工具存在比较大的缺点,这类缺点将在后边提到。

对比当前这类方式,我这里供给一种比较方便稳固的数据库迁徙方案。

以下提到的方案,我也多次试试考证了,而且还很实在。

2.数据库迁徙方案:适用环境: Oracle10g或是以上版本。

原理:利用 Oracle10g 供给的数据泵,迅速加载以及卸载数据。

长处:导入导出数据库迅速比较快,且完好,性能稳固。

弊端:这类方式只好在装有Oracle 服务器端的软件的机器上应用。

完好方案:这里模拟二个场景:场景 1:实现不一样库下不一样用户之间表空间的迁徙。

假定经过 Oracle 数据泵, A 用户 UserA 将表空间 TA 提取到,尔后 B 用户 UserB 将装载到表空间 TB。

第一步:第一在源库 (A) 上建一个目录,这个目录取于转储导入导出过程中的数据文件及日记文件。

create directory dumpdir as 'E:\dump';注: dumpdir 为目录名,它是数据库中的目录对象名,“c: dump”:为对应的磁盘物理路径。

第二步:给用户授与目录的读写权限。

( 由于要写日记,这一步是一定的 ) grant read, write on directory dumpdir to UserA;1第三步:导出用户UserA 下的全部对象:expdp UserA/Password@orcl schemas=UserA dumpfile= DIRECTORY= dumpdir 注:1、 orcl为配置的用于从客户端连结Oracle的连结名。

2、 dumpfile中不可以再包括路径以上三步为数据导出过程,下边几步为数据导入过程。

Oracle 11g数据库移植

Oracle 11g数据库移植
ቤተ መጻሕፍቲ ባይዱ
第二,如果你想对表和索引对象进行清洗或重排操作,那么在导入时通过这一设置,对索引文件进行编辑,并对表空间映射和存储参数进行更新时机恰到好处。
第三,如果你想让逻辑布局维持原样,可以分隔索引和表,也就是分离SQL CREATE命令(一部分脚本专门用于创建表,另一部分专门用于索引)。在进行实际的移植之前,要尽可能先设置好目标数据库。其中一部分工作就是创建新的同样的表空间,并运行创建表的脚本。提前运行创建表的标本有两个理由,一是使逻辑布局生效,二是提高移植导入的速度。
对于数据库模式和应用软件的处理则要由你自己来决定。除非你已经对模式和应用软件的转换进行了彻底测试并使其正常运作了,否则整体移植过程的这一部分是否成功仍是个未知之数。如果让新应用软件和数据库上线,然后才发现新软件和数据库代码会导致连锁触发(cascading triggers)反应(将会导致实例瘫痪),这样的情况会让你沮丧不已。实际产品环境中常包含成千上万条记录,而开发人员和测试人员在测试环境下的测试规模只有一百条记录,很难进行一次彻底的测试。
第一,这样可以把表和索引等对象信息(全部或部分,取决于导出dump文件中包含了什么内容)存储在指定的输出文件中。想知道创建模式的源代码在哪里吗?如果你没有源代码,那这个参数(连同一个返回所有其他信息的简单查询)对于这些信息的提供会有很大帮助。查询部分会将全部的或user_source数据字典的内容输出到文件中。包、包体、存储过程、函数和触发器等代码信息都包括在输出的结果文件里。再稍微加工一下,例如执行CREATE OR REPLACE命令,清除SQL*Plus工具存储区域里无用的结果(如标题行、换页等),剩下的就是一个模式最重要那部分的当前代码。
在数据库声明周期中最常发生的一件事就是不断地把数据库从老版本移植到新版本。不同版本之间的数据库移植有时候可能就像把数据从老版本里导出再导入到新版本中一样简单,不过其中涉及到的问题往往比你想象中复杂得多。而且移植过程还会涉及到其他一些显著的改变,例如操作系统改变、模式修改、以及相关应用软件的变化等等。每一项变化都存在着固有的风险性,不过人们常常认为还是应该把这些变化全部结合起来一起清除,来个一劳永逸,而且这样在移植过程中从头到尾都不去进行检测。这种情况出现了如此频繁,实在让人非常惊讶。

oracle常用的数据库迁移方法

oracle常用的数据库迁移方法

oracle常用的数据库迁移方法Oracle是一种常用的关系型数据库管理系统,为了满足不同需求,很多时候需要将数据库迁移到其他环境或系统中。

本文将介绍几种常用的Oracle数据库迁移方法。

一、数据泵导入导出数据泵是Oracle提供的一种高效的数据迁移工具,可以将表、视图、存储过程等数据库对象以及数据导出为二进制文件,再通过数据泵导入工具将数据导入到目标数据库中。

数据泵导出可以使用expdp命令,导出的文件可以包含完整的数据库对象和数据,也可以只导出指定的对象。

数据泵导入可以使用impdp命令,将导出的文件恢复到目标数据库中。

二、物理备份恢复物理备份恢复是一种将源数据库的物理文件备份并复制到目标数据库的方法。

这种方法适用于需要将整个数据库迁移到其他环境的情况。

在源数据库上执行备份命令,将数据库的物理文件备份到指定位置。

将备份文件复制到目标数据库服务器上。

在目标数据库上执行恢复命令,将备份文件恢复到目标数据库中。

三、逻辑备份恢复逻辑备份恢复是一种将源数据库中的逻辑数据导出为可读的文本文件,再通过导入工具将数据导入到目标数据库中的方法。

在源数据库上执行逻辑备份命令,将数据导出为文本文件。

将备份文件复制到目标数据库服务器上。

在目标数据库上执行导入命令,将备份文件导入到目标数据库中。

四、数据库链接数据库链接是一种在不同数据库之间进行数据传输和共享的方法。

可以在目标数据库中创建一个链接,链接到源数据库,然后通过SQL语句将数据从源数据库传输到目标数据库。

在目标数据库中创建一个数据库链接,链接到源数据库。

通过SQL语句查询源数据库中的数据,并将数据插入到目标数据库中。

五、GoldenGate数据复制GoldenGate是Oracle提供的一种高性能数据复制工具,可以将源数据库的数据实时复制到目标数据库中。

这种方法适用于需要实时同步数据的场景。

在源数据库和目标数据库上分别安装和配置GoldenGate软件。

在源数据库上配置数据抽取进程,将数据抽取到中间文件。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

9
二. 数据库表的移植——表结构

在表结构移植之后,需要对表名和列名进行检查,以便及早发现并 解决数据库对表名、字段名约束不同带来的更名问题。我们采取的 方式为:
1.
2.
3.
在Informix中执行如下查询脚本: select upper( b.tabname),upper(c.colname) from systables b, syscolumns c where b.tabid=c.tabid and b.owner in('bmis','amis') order by 1,2 在Oracle中执行如下查询脚本: select b.table_name,c.COLUMN_NAME from user_tables b, user_tab_columns c where b.table_name= c.TABLE_NAME order by 1,2 分别导出查询的结果,进行比较。如果发现有表名或者列名不一致的情况, 则需要记录下来,在后续应用程序等移植的时候,着重注意。
20
二. 数据库表的移植——数据

由于在数据移植过程中,数据量不是一个很小的数目,因此,难以 做到逐一检查。为了保证移植过程中数据的正确性,我们提出了如 下几种检查方式:
1.
2.
3. 4.
5.
检查导入日志。通过查看日志来检查数据导入过程中是否有错误,并及 时解决。 统计各表行数。这主要是检查表移植过程中是否有被忽略的数据或者误 插入数据的情况。 统计主要数值字段的总和。这主要是检查数值的精度是否在移植过程中 有所缺失。 抽样检查表中数据。 编写SQL语句,将各字段以精度足够的相同格式查询出来,并导出成文 本文件,利用比对工具进行比较。




这 一 问 题 的 原 因 是 Oracle 数 据 库 的 编 码 类 型 设 置 成 为 了 ISO8859_1(WE8ISO8859P1)。 一种解决的方案是在Java等应用中增加转码的逻辑,并当数 据库不是西方字符集时关闭这一功能 另一种方案是将数据库编码修改为GBK(ZHS16GBK)后重新 导入。 在GMIS中,我们采取的是后一种方案。修改的脚本参见 《数据库转码.txt》
7
二. 数据库表的移植——表结构

经过探索,我们选取了Power Designer作为迁移表结构的工具,具 体操作步骤如下:
1. 2.
3.
4.
5.
利用Informix的dbschema工具把系统的表结构整体导出成一个SQL文件。 导出的SQL文件由于编码集的原因,有可能无法被Power Designer识别。 这就需要用ultra edit等工具把SQL文件打开,复制其中的内容,然后另存为 UTF-8的文件。 然后,利用PowerDesigner反向工程(菜单"Database-> Reverse Engineer Database")功能生成PDM模型。在生成PDM模型的过程中,会自动解析 表与表之间的依赖关系。 打开PDM模型,将DBMS设置从Informix改为Oracle(菜单“Database-> Change Current DBMS”)。Power Designer会自动对数据类型等进行转换。 生成SQL脚本(菜单"Database-> Generate Database"),得到在Oracle上 执行的建表SQL。对于存在依赖关系的表,Power Designer会保证其创建 的先后顺序。
3
一. 整体介绍
在移植过程中,结合项目的实际情况,我
们把整个移植工作分为了数据库移植、存 储过程移植、Java应用移植、C程序移植四 个部分,下面分别加以说明。
其中,Oracle官方提供一个工具Migration
WorkBench,可以用于将表结构、存储过程和 C程序从其他数据库移植到Oracle,但在技术 验证的过程中,我们发现对表结构、存储过程 的移植支持的不太好,因此,只将其用于辅助 C程序的移植。
17
二. 数据库表的移植——数据
2.
中文数据超出字段长度限制。


对于中文字符,在有些字符集编码中,占用两个字节的空间, 在另一些字符集中则占用三个字节的空间,而char和varchar 这两种数据类型的长度是以字节为单位的。这样,在 Informix中不超长的字段,到了Oracle中就有可能会超长。 处理的建议是,对于出现超长问题的字段,在Oracle中分别 改为Nchar和Nvarchar。这两种数据类型是以字符数为单位 的,因此在导入时不会发生超长的问题。
北京研发中心应用技术经验交流之n
移植到Oracle数据库
经验交流
版本: 1.0
一.整体介绍
二.数据库表的移植
三.存储过程的移植
四.Java应用的移植 五.C程序的移植
一. 整体介绍
不同于AMIS和BMIS等系统,GMIS选用了
Oracle作为数据库平台而不是Informix,为 此,在项目进入开发之前,我们选用了 BMIS的部分典型功能进行了技术验证,在 正式的开发过程中,又发现并解决了其他 一些问题,现在把这些经验一并总结出来, 供大家参考。
12
二. 数据库表的移植——数据

SQL*Loader使用比较方便,但编写控制文件比 较麻烦,每个表都要编写一个控制文件。


经过对SQL*Loader的分析,我们开发了Java程序, 专门根据Informix的数据库导出文件批量生成 SQL*Loader的控制文件和导入脚本,并支持字符集、 日期格式、数据库用户、数据文件等多个参数。这样, 可以比较快速的把Informix的数据移植到Oracle上。 其使用说明参见《数据移植说明.txt》

一般来说,对于数据量较大的系统,推荐采用1、2、3、4结合来对 数据进行验证。对于数据量较小但对数据准确性要求较高的系统, 可以考虑第5种方式。
21
二. 数据库表的移植——索引



在我们的移植过程中,Informix库中的索引都是以标准SQL语法创 建的,因此,可以直接把创建索引的SQL脚本在Oracle的环境下执 行。 但假如使用从数据库中导出的索引脚本,其中往往包含了一些 Informix特有的语法结构,例如下面的一条语句: create index "amis".t29_psnqualcard_index1 on "amis".t29_psnqualcard (t01personid,t29cardtype) using btree in datadbs ; 在Oracle中,using btree in datadbs无法被识别,可以直接去掉该 子句,不会影响索引的创建。 此外,数据对象前面的所属用户也要去掉。
8
二. 数据库表的移植——表结构

根据在验证阶段的经验,如果直接利用PowerDesigner 生成的SQL在Oracle上建表,会出现一些数据迁移上的 问题,因此,需要对生成的建表SQL做一些调整,主要 有以下两点:


对于CHAR和VARCHAR2类型的字段,如果字段的数据包含有 中文或者全角字符等,建议将其转换为NCHAR和NVARCHAR2 类型,以免由于Informix和Oracle的字符集编码方式不一致等导 致字段超长等问题。 对于Informix中类型为LVARCHAR的字段,PowerDesigner会将 其转换为Oracle的CLOB类型,这样在以后的应用中可能会出一 些问题。因此,如果字段长度小于4000,建议根据这些字段中 是否含有中文将其改为VARCHAR2或者NVARCHAR2类型。
6
二. 数据库表的移植——表结构

对于表结构的移植,我们主要考虑了以下几点:


源表结构的获取。这是表结构移植的基础。 表与表之间的依赖关系。对于存在主外键依赖关系的表,要注 意创建的先后顺序。 不同数据库间数据类型的映射。由于不同数据库对于数据类型 的实现有所不同,数据类型的名称也有所差异,因此,这一点 要着重注意。 数据库对表名、字段名约束不同带来的更名问题。由于不同数 据库的关键字集合有所有差异,对于表名、字段名的长度限制 等也有不同,因此,有可能需要对表和字段的名称进行修改。
19
二. 数据库表的移植——数据
4.
中文乱码导致缺少字段。


当插入数据超出字段的最大程度时,Informix会把这些数据 的超长部分截掉之后插入库表中。这样对于有些中文数据, 在Informix数据库中最后一个字符就变成了乱码。在导出成 unl之后,乱码吞掉了一个‘|‟分割符,从而SQL loader认为 数据缺少了一个字段。 对于这一问题的处理建议是,手动修改数据,把乱码改为正 确数据并添加分割符。
4
一.整体介绍
二.数据库表的移植
三.存储过程的移植
四.Java应用的移植 五.C程序的移植
5
二. 数据库表的移植
对于数据库表的移植,主要包括表结构的
移植和数据的移植两大步骤。
此外,对于索引,一般来说是在数据移植完
成之后创建,但由于索引的主要目的是为了 提高数据处理的性能,在后续的调优阶段可 能会对索引有较大的调整,因此需要具体问 题具体分析。
13
二. 数据库表的移植——数据

在数据导入过程中,要注意存在依赖关系的表的 导入先后顺序,也可以把外键给禁用,数据导入 完成之后再重新启用。对于数据量大的表,当其 存在主键或者唯一约束时,也可以把约束先禁用 后再重新启用
14
二. 数据库表的移植——数据

在数据移植的过程中,由于Informix和Oracle在 数据存储方式等方面存在着许多不同点,往往会 报数据移植错误。对于这种情况,我们的做法是, 记录错误数据,具体分析问题原因。
相关文档
最新文档