




已阅读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=,CREATEUSERDEFAULTTABLESPACE,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类似JavaPackagesHaveJavaInterfacedefinitionswhereonlythestoredproceduresignatureisdefinedAllowsstoredprocedurethatperformsimilarfunctionalitytobepackagedtogetherFunctionscanreturnavaluestoredprocedurescannotstoredprocedureareforreturnresultssetsfunctionscanbeexecutedaspartofaSQLstatement,Oracle与其它数据库存储过程不同触发器,informix在一个trigger中定义before和aftertrigger有限制只能执行插入、删除、修改和存储过程语句Oracle可执行任何PL/SQL代码Haverowandstatement,beforeandaftertriggers数据库一级的触发器,SQLDifferences,fromclauseisnotmandatory,Oracleequivalent:fromdual,SQLDifferences,SELECTzipcode1,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.wherefieldaMATCHESsomethingSimilartoLIKE,usedifferentwildcardcharacters*=%(zeroormorecharacters)?=_(singlecharacter),defaultescapecharacter,youcanspecifybyESCAPEx,EvaluatestoasinglecharacterorrangeofcharactersA-HspecifiesanysingleletterfromAthroughH,inclusive.,SQLDifferencessomefunctions,DAY(col):thenumberofthedayofthemonthEXTRACT(DAYFROMcol)MONTH(col):numberofthemonthEXTRACT(MONTHFROMcol)CURRENT:datetimetypevalueofcurrentsysdateTODAY:datetypeCURRENT_DATEDBSERVERNAME,SITENAME:thedatabaseservername,SQLDifferences,selectintoTEMPtablexfrom.Thiswillcreateatemporarytable(tablex)andinsertthequeryresultintoit.OracleEquivalent:Createaglobaltemporarytablefirst,andthestatementchangeto:insertintotablexselectfromOr,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=val2coln=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=PAMFORUPDATE;EXECSQLOPENcur1;EXECSQLFETCHcur1;EXECSQLCLOSEcur1;Oracle:EXECSQLSELECTlogin_noINTO:login_noFROMusersWHEREuser_name=PAMFORUPDATE;,应用移植-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描述strindex1,index2substr(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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 肌腱损伤早期康复策略-洞察与解读
- 2025年辅导员招聘考试心理健康教育案例解析试题型试卷及答案
- 互联网医疗在社区医养中的应用-洞察及研究
- 矿物生物矿化过程解析-洞察及研究
- 股二头肌肌纤维类型转换的激素调控机制-洞察及研究
- 体育赛事数字化管理-洞察及研究
- 混合现实技术在工业设计中的应用-洞察及研究
- 代理服务业国际竞争力提升路径-洞察及研究
- 医美行业生态补偿机制-洞察及研究
- 毛皮服装智能化生产模式-洞察及研究
- 2025届春季厦门银行校园招聘考前自测高频考点模拟试题附答案详解(考试直接用)
- 江苏省宿迁市沭阳县第一次城乡联考2026届九年级上学期9月月考语文试卷(含答案)
- 无人机培训课件范本图片
- 2025年安全员考试题库(附参考答案)
- 颅脑外伤创伤课件
- 车间落地品管理办法
- 生活委员课件
- 国家开放大学《人文英语4 》期末机考题库
- 民事赔偿赔协议书
- 成人术中非计划低体温预防与护理-中华护理学会团体标准
- 格尔木瑞诚气体有限责任公司搬迁升级改造项目报告书
评论
0/150
提交评论