Inix移植Oracle方法论.ppt_第1页
Inix移植Oracle方法论.ppt_第2页
Inix移植Oracle方法论.ppt_第3页
Inix移植Oracle方法论.ppt_第4页
Inix移植Oracle方法论.ppt_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PTSOracleChinaminqiao wang 基于Informix应用系统的移植 主题 基于Informix应用系统分析Oracle与Informix的异同移植工具MigrationWorkbench应用移植专题 ESQL C的移植具体问题解答 例子 Informix银行应用系统分析 分支 ScoUnix informix NOWindowsNT PB SP 4GL ESQL应用 Customized通讯平台 二级 一级 WebServer信息发布NetscapeServer IIS WebDatablade AIX HPUX informixPB SP 4GL ESQL应用 Customized通讯平台 Informix的缺陷 逐步降低的市场份额分布式事物处理不完善缺乏Internet Intranet的解决方案2001年4月被IBM收购用户面临新的选择 移植到Oracle的理由 更大的市场成熟的技术更好的性能全面解决方案Internet计算环境下的新的计算结构强有力的支持 移植方法论 采用传统的自顶向下法 而不是需要反复的快速原型法需求的采集 分析和设计通常需要2到10周时间移植最简单的部分是安装脚本 方案和数据方案 结构和应用的修改不要包含在移植项目中不要同时做其它的移植工作 操作系统 语言 移植方法论 移植方法论的生命周期移植调查表 在客户现场完成调查表 小的项目也可以远程完成 项目评估 计划 项目评估 计划可以在现场或远程完成 方案 应用和数据移植的设计 完成分析和设计阶段 实施 开始移植工作 单元测试 通常包含在实施过程中 系统测试客户验收测试性能测试正式发布 SechemaObject比较 DatabaseTablespaseUserTableGlobalTempTablePL SQLProcedurePL SQLFunctionPackage Oracle Informix DatabaseDatabaseUserTableTemporaryTableStoreProcedureStoreProcedure SechemaObject比较 AfterTriggersBeforeTriggersSynonymsSequencesViewMaterializedView Oracle Informix TriggersTriggersSynonymsSerialDatatypeView 不同数据类型的比较 SerialCharDatatime DateByte Text 不同数据类型的比较 Informix中serial类型支持最大到214748367的整数 并且始终加1 createtabletbl1 serial columnserial enamechar 15 insertintotbl1 serial column ename value 0 scott Serial Oracle中可用一个number 10 类型和一个Sequence来模拟createtabletbl1 serial columnnumber 10 enamechar 15 createsequencetbl1 serialinsertintotbl1 serial colume ename values tbl1 serial nextval scott 不同数据类型的比较 Informix支持最大到32767个字符 Char Oraclechar最大到2000varchar2最大到4000long2GCLOB4G 不同数据类型的比较 Informix1 100000秒 Datetime Date Oracle年月日时分秒Date IntegerOracle9i后支持timestamp类型 不同数据类型的比较 InformixByteText Byte Text OracleLongRowBLOBLongCLOB Oracle 连接到其它数据库 连接到 ALTERSESSIONSETCURRENT SCHEMA CREATEUSER DEFAULTTABLESPACE Oracle与其它数据库连接方式不同 Oracle采用多版本并存控制来支持读一致性 不需要读记录锁 读操作和写操作不会相互阻碍 真正的行级锁较少的INSERT UPDATE写冲突锁不会升级 Oracle与其它数据库事务处理方式不同 Oracle与其它数据库事务处理方式不同 其它数据库允许应用程序开发员选择不同的隔离级别 ReadCommitted 和 Serializable 采用读记录锁来提供读一致性 但这会导致阻碍写操作 Readuncommitted 允许脏读来减少这种问题 当记录数增加时锁会升级锁是在内存中管理的一些数据库至今仍用页级锁 Oracle与其它数据库事务处理方式不同 informix 缺省为自动提交 必须指定 BeginTransaction Oracle 缺省为隐含的事务 每个DML都有隐含的 BeginTransaction 必须输入 commit 或 rollback Oracle与其它数据库临时表不同 Oracle大部分情况下不需要临时表Oracle优化器可以处理非常复杂的查询 因此可以重写SQL语句来避免使用临时表Oracle9i以上版本支持ANSIGlobalTemporaryTables其它数据库使用临时表 简化查询结果累积其它原因 没有游标 4个表join的限制 Oracle与其它数据库应用编程不同 SQL语法不同Oracle9i后支持ANSISQL outerjoins case 其它不同处系统表 系统存储过程 sp variable全局变量的使用Workbench可以解决一些服务器端的不同客户端如果有问题的话需要重写代码 Oracle与其它数据库存储过程不同 不同的数据库使用不同的语言一些数据库大量使用存储过程可以预编译来提高性能Oracle采用PL SQL和Java 可以执行外部C程序 也可从PL SQL中调用WebServicesInformixSPL转为OraclePL SQL Oracle与其它数据库存储过程不同 错误处理 Oracle遵循PL 1和Java标准informix出错后可以继续执行 错误可能被忽略Oracle错误可以 thrown 你可以抓住 catch 它们 EXCEPTIONWHEN 可以选择忽略或继续处理 Oracle与其它数据库存储过程不同 Packages和Functions Packages类似JavaPackagesHaveJavaInterfacedefinitionswhereonlythestoredproceduresignatureisdefinedAllowsstoredprocedurethatperformsimilarfunctionalitytobepackagedtogetherFunctionscanreturnavaluestoredprocedurescannot storedprocedureareforreturnresultssets functionscanbeexecutedaspartofaSQLstatement Oracle与其它数据库存储过程不同 触发器 informix在一个trigger中定义before和aftertrigger有限制只能执行插入 删除 修改和存储过程语句Oracle可执行任何PL SQL代码Haverowandstatement beforeandaftertriggers数据库一级的触发器 SQLDifferences fromclauseisnotmandatory Oracleequivalent fromdual SQLDifferences SELECTzipcode 1 3 customer numFROMcustomerORDERBYzipcode Substring index1to3Oracleequivalent selectsubstr zipcode 1 3 SQLDifferences SELECTUNIQUEcity state zipcodeFROMcustomerUNIQUE DISTINCTOracleequivalent SELECTDISTINCTcity state zipcodeFROMcustomer SQLDifferences selectFIRST10a bfromtablFirstxnumberofrowsoftheresultset Oracleequivalent selecta bfromtablwhereROWNUM 10Selectfirst10a bfromtablAunionselecta cfromtableCNote Thisselectfirst10rowsoftheunionresults SQLDifferences select wherefieldaMATCHES something SimilartoLIKE usedifferentwildcardcharacters zeroormorecharacters singlecharacter defaultescapecharacter youcanspecifybyESCAPE x Evaluatestoasinglecharacterorrangeofcharacters A H specifiesanysingleletterfromAthroughH inclusive SQLDifferences somefunctions DAY col thenumberofthedayofthemonthEXTRACT DAYFROMcol MONTH col numberofthemonthEXTRACT MONTHFROMcol CURRENT datetimetypevalueofcurrentsysdateTODAY datetypeCURRENT DATEDBSERVERNAME SITENAME thedatabaseservername SQLDifferences select intoTEMPtablexfrom Thiswillcreateatemporarytable tablex andinsertthequeryresultintoit OracleEquivalent Createaglobaltemporarytablefirst andthestatementchangeto insertintotablexselectfrom Or ifinstoredprocedure useanestedtable 移植工具MigrationWorkbench 1998年10月第一版产品发布100 用Java开发免费与Oracle数据库一起发布 可在OTN上下载最新版本10 1 0 4支持 SQLServer6 5 7 0 2000Sybase11 12Access2 0 95 97 2000MySQL3 4 5DB2UDB6 7 1 7 2Infomix7 3 9 1 9 2 9 3 9 4 SQLDeveloperMigration 最新版本2 1支持 SQLServer7 0 2000 2005Sybase12 15Access97 2000 2002 2003MySQL3 4 5 0DB2LUW7 8 9Teradata12 移植工具MigrationWorkbench可移植的Informix对象 TablesandDataConstraintsIndexesViewsGroups RolesUsers PrivilegesStoredProceduresTriggersESQLDatabase 移植工具MigrationWorkbench 先决条件 支持Oracle8 1 5以上版本先安装MigrationWorkbench的核心软件再安装所需的plug in配置OracleThickJDBC驱动配置其他数据库ODBC驱动 对于Informix 需Informix带的JDBC驱动 移植工具MigrationWorkbench 连接 移植工具MigrationWorkbench Databases Informix中多个Databases被整合为一个DatabaseInformix中原有的多个users被保留Informix中的命名与Oracle保留字冲突的Workbench会自动解决在Oracle中对原有的Database分别建一个Tablespace 移植工具MigrationWorkbench 步骤 1选择资料库所在的服务器2选择源数据库3导入并映射数据源模型4手工修改映射选项5选择目标数据库6选择要移植的对象类型7创建用户 表 装载表数据 创建其它数据库对象 CaptureWizard MigrationWizard MigrationWorkbench 日志 日志信息将被保留下来可随时查看转换中遇到的问题 应用移植概述 对于以下几种应用 Oracle有相应的移植工具 InformixESQL CInformixSPLInformix4GL 应用移植 ESQL C MigrationWorkbench支持ESQL C到PRO C的转换支持所有的基本SQL语句自动完成大部分移植工作能自动将语法进行转换问题标注及生成总结报告 应用移植 ESQL C Informix所有程序中原来以 表示为嵌入式SQL部分改为 EXECSQL Informix的SQL引用变量以 标志 Oracle为 标志 Informixstatement SELECTlogin nointo login no Oraclestatement EXECSQLSELECTlogin nointo login no Informix的Update语法与oracle不同 须做修改 Updatetab1setcol1 val1 col2 val2 coln valn Updatetab1setrow val1 val2 应用移植 ESQL C Informix的Where语句采用 为相等 而Oracle采用 Informix的UNIQUE语句改为ORACLE的DISTINCT Informix的outjoin语法与oracle不同 需做修改 应用移植 ESQL C Informix不能锁单独一条记录 必须定义一个cursorwithFORUPDATE Oracle不用定义cursorInformix EXECSQLDECLARECURSORcur1FORSELECTlogin noINTO login noFROMusersWHEREuser name PAM FORUPDATE EXECSQLOPENcur1 EXECSQLFETCHcur1 EXECSQLCLOSEcur1 Oracle EXECSQLSELECTlogin noINTO login noFROMusersWHEREuser name PAM FORUPDATE 应用移植 ESQL C Informix的DECLARECURSOR须加上INTO子句 在Fetch时不加INTO子句 而Oracle的语法恰好相反 Informix EXECSQLDECLARECURSORcur1FORSELECTlogin noINTO login noFROMusersWHEREuser name PAM EXECSQLFETCHcur1 Oracle EXECSQLDECLARECURSORcur1FORSELECTlogin noFROMusersWHEREuser name PAM EXECSQLFETCHcur1INTO login no 函数比较 InformixOracle描述str index1 index2 substr str index1 len Index1和index2在Informix中必须是常量 而Oracle中index1 len可以是变量downshift str lower str 返回小写字符串upshit str upper str 返回大写字符串length str length str 返回字符串长度currentsysdate返回当前日期和时间date 12 13 1999 to date 12 13 1999 mm dd yyyy

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论