Informix移植Oracle方法论

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

王敏桥PTSOracleChinaminqiao.wang@oracle.com基于Informix应用系统的移植1主题基于Informix应用系统分析Oracle与Informix的异同移植工具MigrationWorkbench应用移植专题:ESQL/C的移植具体问题解答2例子:Informix银行应用系统分析分支ScoUnix+informix(NOWindowsNT)PB+SP/4GL/ESQL应用。Customized通讯平台二级...一级...WebServer信息发布NetscapeServer/IIS+WebDatabladeAIX/HPUX...+informixPB+SP/4GL/ESQL应用。Customized通讯平台3Informix的缺陷逐步降低的市场份额分布式事物处理不完善缺乏Internet/Intranet的解决方案2001年4月被IBM收购用户面临新的选择?4移植到Oracle的理由更大的市场成熟的技术更好的性能全面解决方案Internet计算环境下的新的计算结构强有力的支持移植方法论•采用传统的自顶向下法,而不是需要反复的快速原型法•需求的采集、分析和设计通常需要2到10周时间•移植最简单的部分是安装脚本、方案和数据•方案、结构和应用的修改不要包含在移植项目中•不要同时做其它的移植工作(操作系统,语言)移植方法论•移植方法论的生命周期移植调查表–在客户现场完成调查表。小的项目也可以远程完成。项目评估/计划-项目评估/计划可以在现场或远程完成。方案、应用和数据移植的设计–完成分析和设计阶段。实施–开始移植工作。单元测试–通常包含在实施过程中。系统测试客户验收测试性能测试正式发布7SechemaObject比较DatabaseTablespaseUserTableGlobalTempTablePL/SQLProcedurePL/SQLFunctionPackageOracleInformixDatabaseDatabaseUserTableTemporaryTableStoreProcedureStoreProcedure-----8SechemaObject比较AfterTriggersBeforeTriggersSynonymsSequencesViewMaterializedViewOracleInformixTriggersTriggersSynonymsSerialDatatypeView------9不同数据类型的比较SerialCharDatatime/DateByte/Text10不同数据类型的比较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_serialinsertintotbl1(serial_colume,ename)values(tbl1_serial.nextval,scott)11不同数据类型的比较Informix支持最大到32767个字符CharOraclechar最大到2000varchar2最大到4000long2GCLOB4G12不同数据类型的比较Informix1/100000秒Datetime/DateOracle年月日时分秒Date+IntegerOracle9i后支持timestamp类型13不同数据类型的比较InformixByteTextByte/TextOracleLongRowBLOBLongCLOBOracle:连接到schema其它数据库:连接到databaseALTERSESSIONSETCURRENT_SCHEMA=schema_nameCREATEUSERschema_name…DEFAULTTABLESPACEts_nameOracle与其它数据库连接方式不同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中调用WebServicesInformixSPL转为OraclePL/SQLOracle与其它数据库存储过程不同–错误处理Oracle遵循PL/1和Java标准informix出错后可以继续执行…错误可能被忽略Oracle错误可以“thrown”,你可以抓住“catch”它们(EXCEPTIONWHEN)…可以选择忽略或继续处理Oracle与其它数据库存储过程不同–Packages和FunctionsPackages类似JavaPackagesHaveJavaInterfacedefinitionswhereonlythestoredproceduresignatureisdefinedAllowsstoredprocedurethatperformsimilarfunctionalitytobepackagedtogetherFunctionscanreturnavaluestoredprocedurescannot…storedprocedureareforreturnresultssets…functionscanbeexecutedaspartofaSQLstatementOracle与其它数据库存储过程不同–触发器informix在一个trigger中定义before和aftertrigger有限制只能执行插入、删除、修改和存储过程语句Oracle可执行任何PL/SQL代码Haverowandstatement,beforeandaftertriggers数据库一级的触发器SQLDifferencesfromclauseisnotmandatoryOracleequivalent:fromdualSQLDifferencesSELECTzipcode[1,3],customer_numFROMcustomerORDERBYzipcodeSubstring,index1to3Oracleequivalent:selectsubstr(zipcode,1,3)….SQLDifferencesSELECTUNIQUEcity,state,zipcodeFROMcustomerUNIQUE=DISTINCTOracleequivalent:SELECTDISTINCTcity,state,zipcodeFROMcustomerSQLDifferencesselectFIRST10a,bfromtablFirstxnumberofrowsoftheresultset.Oracleequivalent:selecta,bfromtablwhereROWNUM=10Selectfirst10a,bfromtablAunionselecta,cfromtableCNote:Thisselectfirst10rowsoftheunionresults.SQLDifferencesselect...wherefieldaMATCHES‘something’SimilartoLIKE,usedifferentwildcardcharacters*=%(zeroormorecharacters)?=_(singlecharacter)\,defaultescapecharacter,youcanspecifybyESCAPE‘x'[],Evaluatestoasinglecharacterorrangeofcharacters'[A-H]‘specifiesanysingleletterfromAthroughH,inclusive.SQLDifferences–somefunctionsDAY(col):thenumberofthedayofthemonthEXTRACT(DAYFROMcol)MONTH(col):numberofthemonthEXTRACT(MONTHFROMcol)CURRENT:datetimetypevalueofcurrentsysdateTODAY:datetypeCURRENT_DATEDBSERVERNAME,SITENAME:thedatabaseservernameSQLDifferencesselect…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/2000Sybase11/12Access2.0/95/97/2000MySQL3/4/5DB2UDB6/7.1/7.2Infomix7.3/9.1/9.2/9.3/9.4SQLDeveloperMigration最新版本2.1支持:SQLServer7.0/2000/2005Sybase12/15Access97/2000/2002/2003MyS

1 / 53
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功