SQLServer2005移植到Oracle10g经验总结

SQLServer2005移植到Oracle10g经验总结,第1张

 此次需要完成的目标是将库从SQLServer 完整的移植到Oracle g中 包括表结构 数据 视图 函数以及存储过程的移植 移植主要基于Oracle的OMWB(Oracle Migration Workbench)来完成 尽管OMWB能帮助完成大部分具备难度的工作 但还是有很多工作量的事情需要在OMWB完成后来手工进行 所以整个移植过程工作量看起来会非常大 但是不是仅仅只有工作量的问题呢?我觉得不是 写下这篇blog以便需要进行此项 *** 作的同学以及给自己做个备忘

 由于目前OMWB仅支持SQLServer 根据官方网站的消息 OMWB的下一版会推出对SQLServer 的支持 所以在目前的情况下只能先把库从SQLServer 移植到SQLServer 这就是我们移植过程的第一步了

 一 SQLServer >SQLServer

 一直以来 版本要降级都是很困难的 因为在新版本中必然会有些新的特性 而如果刚好凑巧你使用到了这些特性的话 在降级到低版本时就会碰到一些问题 在经过几次的尝试后 总结而言 这个过程还是比较容易做的 毕竟是同样的数据库 再怎么样也不会出太大的问题 不过也没有像将库从SQLServer 升级为SQLServer 那么简单 整个移植过程这么进行

  基于SQLServer 的数据导出将表结构和数据导入到SQLServer

 这步中需要注意的是默认情况下SQLServer会将表和视图一起导入 在这里不要选择视图 否则导入到SQLServer 后有些视图会变成表 选择需要导入的表后基本上这步不会出现什么问题 可以完成表结构和数据的移植

  基于SQLServer 的生成脚本将视图/函数/存储过程移植到SQLServer

 这步需要慢慢来 因为在视图/函数/存储过程中你可能使用到了一些SQLServer 的新特性 如果碰到这样的情况 只能是手工进行修改 以使它完全符合SQLServer 的要求 尽管在生成脚本时你可以选择生成的目标版本为SQLServer 但还是会有部分脚本执行是会出错的

 在完成了SQLServer 到SQLServer 的移植后 就可以基于OMWB来把库从SQLServer 移植到Oracle了 这步尽管有工具 还是会比较的麻烦 总结如下

 二 SQLServer >Oracle g

 关于如何基于OMWB将库从SQLServer 移植到Oracle g的 *** 作步骤可参见此篇文档

 op/omwb/

 大家现在从oracle官方站下的话可能会找不到sqlserver 的插件包 如果找不到的话可以从这里下载

 我在这里要总结的是基于OMWB将库从SQLServer 移植到Oracle g后还需要手工做的一些事情 不要指望OMWB能无缝的帮你把库从SQLServer移植到Oracle中 银d是不存在的 因此我们需要做些手工的工作完成库的移植

  移植表结构和数据可能会出现的问题

 表中字段的默认值/主键/外键/索引移植不过去 这些需要手工的进行补充

  移植视图可能会出现的问题

 移植过去的视图可能会出现各种语法错误的问题 这需要手工的修正 一般来说都是较为简单的错误

 另外一种问题就是有些视图可能会无法移植过去 这些视图就只能在对比OMWB的移植报告后找出来手工的进行移植了

  移植函数/存储过程可能会出现的问题

 移植过去的函数/存储过程中可能仍然会有不少的语法问题 例如像SCOPE_IDENTITY() REPLICATE newid()这些OMWB不知道该怎么处理的函数 还有像返回Table类型的这种函数 这些都只能在移植后手工的来进行纠正 关于函数不同造成的语法错误的现象大家可以参看这篇文档来做SQLServer和Oracle函数的对照

 logID=

 移植过去的函数/存储过程可能编译是没有问题 也就是Oracle认为没有语法问题 但执行起来却会报错 像字符串相加 经过OMWB移植后有些字符串相加会替换成|| 但是有些会遗漏 这个时候也只能手工来纠正这些错误了

 移植过去的函数/存储过程在执行过程中可能会出现某些表的主键值不能为空的现象 造成这种现象的原因多数为在SQLServer中该字段的默认值定义的为IDENTITY 但在Oracle中没法赋予这样的默认值 只能在插入的sql语句中加上对于主键字段的赋值 可采用sequence的方式来生成顺序号

 移植过去的函数/存储过程中如果其中的查询语句是采用字符串的方式 然后动态执行的话 这个时候的查询语句就得手工修改为符合oracle的语法了 因为OMWB在移植时是不会对字符串形式的查询语句来做处理的

 部分函数/存储过程会由于OMWB确实无法处理 造成移植不到oracle 这个时候也必须参照OMWB的移植报告找出这些函数/存储过程来手工移植了

 整个移植过程可能会碰到比上面所列出的更多的别的问题 可以看出整个移植过程确实需要耗费不小的工作量 但总体而言 完成的难度并不高

 其实真的是这样吗?当然不是 就算你完成了上面的移植工作 那也只能说表面看上去移植是完成了 很有可能会出现这个存储过程语法等等都没有问题了 但执行的效果和SQLServer就是不一样 这是为什么呢?可能会是因为Oracle和SQLServer在并发控制 事务机制上是不同的 而这会影响到程序调用时的sql的编写 存储过程的编写等等 也就是说 在上面的移植过程的工作完成后 还得仔细检查现在的sql语句/函数/存储过程是否根据Oracle的机制达到了原来在SQLServer中期望的效果 只有做到这步的效果是一样的 才可以说移植过程完成了

 最后顺带说的就是应该根据Oracle的机制来采用符合oracle优化原则的方法来优化表/视图/函数/存储过程 如果不做这步的话 从sqlserver移植到oracle估计意义也不大了 当然 这可以不列为移植过程的工作

lishixinzhi/Article/program/Oracle/201311/16982

  作为一个Oracle数据库的用户 对于Export和Import两个命令绝对不会感到陌生 因为这二者正是我们经常用于数据备份和恢复的工具 但在使用这两个命令过程中所发生的Oracle字符集问题 常给一些Oracle使用者带来不必要的麻烦和不必要的数据损失 本文将就Export和Import过程中Oracle字符集的转换规律及使用这两个命令的注意事项做一总结 字符集转换的原因   Export Import过程如上图所示 从这个示意图中可以看到有四处关系到字符集 而这四处字符集的不一致恰恰是导致Oracle进行字符集转换的原因  源数据库字符集  Export过程中用户会话字符集  Import过程中用户会话字符集  目标数据库字符集 在Export和Import过程中 如果存在影响字符集转换的四因素不一致 则可能发生Oracle字符集转换 即 在Export过程中 如果源数据库字符集与Export用户会话字符集不一致 会发生字符集转换 并在导出的二进制格式Dmp文件的头部几个字节中存储Export用户会话字符集的ID号 在这个转换过程中可能发生数据的丢失 例 : 如果源数据库使用ZHS GBK 而Export用户会话字符集使用US ASCII 由于ZHS GBK是 位字符集 而US ASCII是 位字符集 这个转换过程中 中文字符在US ASCII中不能够找到对等的字符 所以所有中文字符都会丢失而变成 形式 即这种转换后生成的Dmp文件已经发生了数据丢失 例 : 如果源数据库使用ZHS GBK 而Export用户会话字符集使用ZHS CGB 但由于ZHS GBK字符集是ZHS CGB 字符集的超集 这个过程中绝大部分字符都能够正确转换 只有一些超出ZHS CGB 字符集的字符变为 形式 如果源数据库使用ZHS CGB 字符集 而Export用户会话使用ZHS GBK字符集 则转换过程能够完全转换成功 在Import向目标数据库转换过程中 其字符集发生转换的情况正好与Export过程相反 这里不再详述 在Export导出的Dmp文件中 含有Export用户会话字符集 在Import过程中 首先发生的是Dmp文件字符集(即Export用户会话字符集)向Import用户会话字符集的转换 如果这个转换过程不能正确完成 Import向目标数据库的导入过程也就不能完成 进行字符集的正确转换  通常情况下 我们在使用Oracle的Export和Import过程中 并不希望发生字符的转换 但有时这种转换却是必要的 如我们在安装Oracle数据库时 选择ZHS CGB 字符集 由于这种字符集是一种中文小字符集 对于一些汉字不能够正确表示 这需要通过使用ZHS GBK字符集得到解决 此时就要进行字符集的转换 为了确保Export Import过程中 Oracle字符集不发生转换或正确转换 建议最好在进行这个过程前 检查一下源数据库字符集与Export用户会话字符集是否一致 源数据库字符集与目标数据库字符集是否一致 目标数据库字符与Import用户会话字符集是否一致 如果能够保证这四个字符集是一致的 则在Export Import过程中 Oracle字符集就不用发生转换 可用以下办法检查数据库字符集: 通过InitXXXX ora文件进行查看 借助SQL语句查看 SELECT NAME VALUE$ FROM SYS PROPS$ WHERE NAME= NLS_CHARACTERSET 对于Export Import用户会话字符集 在Windows系统中也可以通过注册表中的NLS_LANG进行查看或修改 对于Unix系统则可通过设置用户的环境变量NLS_LANG来查看或修改 特别要注意的是 Oracle数据库字符集通常是在创建时确定 一旦存储用户数据后就不要再修改了 因为其数据都是使用该字符集进行存储的 改换其他字符集之后 原有数据就不能够正确表示了 但如果确实想进行字符集改变 则可通过以下几步来实现 备份数据库后删除原数据(可物理备份 如使用Export 请注意确保字符集不发生转换或数据无损失) 使用Internal用户更新sys props$表中的字符集:  Update sys props$ set name= Dest CharSet Where name= NLS_CHARACTERSET ; MIT; 重启数据库 恢复数据 下面字符集之间的转换是可行的 字符集子集向字符集父集转换是可行的 如ZHS CGB 向ZHS GBK转换 而字符集父类向字符集子集进行转换时 会损失部分数据 只包含英文字符数据的双字节字符集也可向单字节字符集转换 如ZHS GBK(English Only)可以向US ASCII正确转换 编码范围相同的单字节字符集之间通常可以进行相互转换 请注意 这里所说的没有数据损失 是指一种字符集A转换成另一种字符集B之后 可以再从字符集B正确转换成字符集A或字符集B能够正确表示字符集A中转换过来的数据 字符集对程序的影响  根据一个字符需要多少位字节来表示 可以把字符集分为单字节字符集和多字节字符集 其中 单字节字符集又分为 位字符集和 位字符集 单字节 位编码字符集有US ASCⅡ 单字节 位编码字符集有符合ISO 标准规定的WE ISO P 等 多字节编码又分为固定长度(长度大于或等于 )编码模式和不固定长度编码模式 多字节编码字符集中的ZHS GBK ZHS CGB JA SJIS等是采用两个字节表示一个字符的字符集 又叫双字节字符集 一个英文字母是一个字符 一个中文汉字是几个字符呢?我们知道 一个中文汉字是双字节字符 但它有几个字符与其数据库字符集有关 如果数据库字符集使用单字节US ASCII 则一个中文汉字是二个字符 如果数据库字符集使用双字节字符集ZHS GBK 则一个中文汉字是一个字符 有关这一点可以使用Oracle的函数Substr得到证明 使用US ASCⅡ字符集时: Select substr( 东北大学 ) from dual; 语句执行结果返回 东 使用ZHS GBK字符集时: Select substr( 东北大学 ) from dual; 语句执行结果返回 东北 选择合适的数据库字符集  选择数据库字符集时应考虑以下事项  .数据库需要支持什么语言 在为数据库选择字符集时 常会发现几种字符集都适合你当前语言需求 如简体中文就有ZHS GBK和ZHSCGB 等字符集可供选择 应选择哪种?在选择字符集时 应考虑到数据库将来的系统需求 如果知道将来数据库要扩展支持不同的语言 选择一个范围较广的字符集会是一个更好的主意  .系统资源与应用之间的互作用性  选择的数据库字符集应保证 *** 作系统与应用之间的无缝连接 如果选择的字符集不是 *** 作系统有效的字符集 则系统就需要在这两者之间做字符转换 在这种字符转换过程中 就有可能发生一些字符丢失现象 从一种字符集A向另一种字符集B转换过程中 A中的字符必须在B中可以找到等价的字符 否则就会以 ? 来代替 从这个意义上说 如果两种字符集编码范围是相同的 则可以相互转换 字符集转换过程中会影响系统性能 因此 应保证客户端和服务器端有相同的字符集以避免字符集转换 也可以提高一定的系统性能  .系统的性能要求  不同的数据库字符集对于数据库的性能是有一定影响的 为了得到最好的数据库性能 选择的数据库字符集应避免字符转换 并且要选择对于期望的语言有最高效的编码效率 通常 单字节字符集比多字节字符集有更优的性能表现 在空间需求方面也更小些  .其他一些限制  在为数据库选择一个合适的字符集时 应参考Oracle对应版本的相关文档 检查Oracle对于一些字符集的限制 如Oracle 版本中 以下字符集是不能使用的: JA EUCFIXED ZHS GBKFIXED JA DBCSFIXED KO DBCSFIXED ZHS DBCSFIXED JA SJISFIXED ZHT TRISFIXED 综上所述 正确理解Oracle字符集的转换过程 可以使我们避免不必要的麻烦和数据损失 合理利用Oracle字符集的转换过程 也可以帮助我们正确地从一种字符集转换到另一种字符集 以满足我们各种不同的应用需求 lishixinzhi/Article/program/Oracle/201311/17956

GBase 8s是一款国产的高性能关系型数据库管理系统,其SQL语法与Oracle数据库非常相似,包括数据定义语言(DDL)、数据 *** 作语言(DML)以及数据控制语言(DCL)等方面都基本兼容Oracle。因此,在使用GBase 8s时,可以使用大部分Oracle语法。

不过,由于GBase 8s和Oracle是两个不同的数据库产品,它们之间还存在一些细节上的差异或不兼容的地方。例如,在索引的创建和优化方面,GBase 8s采用了自己独有的算法和策略,可能与Oracle略有不同;在数据类型、函数库、存储引擎等方面也有所区别。因此,在使用GBase 8s时,需要对其具体的语法和特性有一定了解,才能更好地利用它的功能和性能优势。

总之,虽然GBase 8s支持大部分Oracle语法,但仍有一些细节上的差异需要注意。如果您需要使用GBase 8s进行开发或运维工作,建议您先阅读相关文档,深入了解其具体的语法规范和使用方法。

  Oracle数据库作为世界范围内性能最优异的数据库系统之一,它在国内数据库市场的占有率远远超过其对手,始终处于数据库领域的领先地位。本书以Oracle 11g for Windows XP为平台,由浅入深地介绍Oracle Database 11g系统的使用方法和基本管理。主要包括:关系数据库设计、Oracle数据库的基本体系结构、存储管理、管理控制文件和日志文件、SQL语言基础、使用SQLPlus、PL/SQL程序设计、存储过程、触发器和程序包、表、模式对象管理、安全管理以及基本的备份与恢复等,最后以4个应用实例分别结合Java Swing、JSP、ASPNET和PHP技术来讲述Oracle的实际应用。

  本书适合大专院校在校学生、网站开发人员、Java学习和开发人员以及编程爱好者学习和参考。

  数据库在如今的各大行业中都有着举足轻重的地位,而Oracle数据库则是数据库系统中的佼佼者,Oracle公司是世界领先的信息管理软件开发商之一,因其复杂的关系数据库产品而闻名,它占有最大的市场份额,其产品被广泛用于各个行业,满足一系列的存储需求。

  2007年7月12日,Oracle公司宣布推出Oracle最新版本:Oracle Database 11g,它在Oracle Database 10g的基础上新增加了400多项特性,使Oracle数据库变得更可靠、性能更好、更容易使用和更安全。

  1.本书内容

  本书针对Oracle Database 11g编写,全面地介绍Oracle数据库的管理与开发,向读者全面展示Oracle数据库的使用,还以大量的实例来介绍Oracle数据库在实际应用程序中的使用,帮助读者从实际应用的角度学习Oracle数据库,以免初学者在学完理论知识后感到迷茫,不知道怎么去应用学到的知识。本书共分为5篇,分别是Oracle基础篇、 *** 作Oracle篇、Oracle进阶篇、备份与恢复篇和综合应用篇。各篇的主要内容如下。

  第1篇:Oracle基础篇(第1~6章)。本篇从数据库的关系理论开始介绍,讲解Oracle Database 11g在Windows环境下的安装,Oracle数据库的体系结构、如何使用SQLPlus工具,以及如何管理表、表空间、控制文件与日志文件等。

  第2篇: *** 作Oracle篇(第7~12章)。本篇着重介绍Oracle中的数据处理,主要包括:DML语句、事务、子查询、高级查询和PL/SQL编程。PL/SQL编程是本书的重点之一,主要内容有存储过程、函数、触发器和程序包。

  第3篇:Oracle进阶篇(第13~18章)。本篇对Oracle中的数据库安全管理进行详细介绍,并且介绍Oracle中的其他常用模式对象,例如索引、序列和临时表等。为了满足读者更深入地学习的需求,本篇也将对数据库对象类型、大对象和SQL语句优化等进行比较具体的介绍。

  第4篇:备份与恢复篇(第19~22章)。本篇主要介绍Oracle中的数据备份与恢复。主要包括:用户管理的备份与恢复、使用RMAN工具实现数据库的备份与恢复、加载与传输数据和Oracle中的闪回技术。

  第5篇:综合应用篇(第23~26章)。本篇介绍了4个应用实例,包括酒店管理系统、BBS论坛、日志管理模块和留言本。其中,酒店管理系统结合了Java Swing技术,BBS论坛结合了JSP技术,日志管理模块结合了ASPNET技术,留言本结合了PHP技术。这4个实例分别使用了不同的技术,目的是为了满足读者的各种编程需求。

  2.本书特色

  本书中采用大量的实例进行讲解,力求通过实际 *** 作使读者更容易地掌握Oracle Database 11g的管理 *** 作。本书难度适中,内容由浅入深,实用性强,覆盖面广,条理清晰。

   知识点全 本书紧紧围绕Oracle Database 11g的实际应用、管理与开发展开讲解,具有很强的逻辑性和系统性。

   基于理论,注重实践 在讲述过程中,不仅仅只介绍理论知识,而且在合适位置安排具有代表性、 *** 作性强的综合应用,将理论应用到实践当中,加强读者的实际应用能力,巩固Oracle的理论知识。

   快速掌握 注重技术原理和实际应用的高度融合,通过循序渐进的内容组织和大量来自工作现场的应用案例,帮助读者快速掌握和应用Oracle Database 11g数据库技术。

   案例实用 在本书最后,分别结合Java Swing、JSP、PHP和ASPNET这4门技术开发了相应的综合实例,而且有些案例能够直接在项目中使用,避免读者进行二次开发。

   随书光盘 本书为实例配备了视频教学文件,读者可以通过视频文件更加直观地学习Oracle Database 11g的使用知识。

   网站技术支持 读者在学习或者工作的过程中,如果遇到实际问题,可以直接登录wwwitzcncom与我们取得联系,作者会在第一时间内给予帮助。

  3.读者对象

  本书具有知识全面、实例精彩、指导性强的特点,力求以全面的知识及丰富的实例来指导读者透彻地学习Oracle Database 11g各方面的知识。本书可以作为Oracle Database 11g的入门书籍,也可以帮助中级读者提高技能,对高级读者也有一定的启发意义。

  本书适合以下人员阅读学习。

   数据库管理人员。

   数据库开发人员。

   系统维护人员。

   数据库初学者。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/12162935.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-21
下一篇2023-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存