




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
王敏桥PTSOracleChinaminqiao.wang@基于Informix应用系统的移植王敏桥基于Informix应用系统的移植<1>主题基于Informix应用系统分析Oracle与Informix的异同移植工具MigrationWorkbench应用移植专题:ESQL/C的移植具体问题解答<1>主题基于Informix应用系统分析<2>例子:Informix银行应用系统分析分支ScoUnix+informix(NOWindowsNT)PB+SP/4GL/ESQL应用。Customized通讯平台二级...一级...WebServer信息发布NetscapeServer/IIS+WebDatabladeAIX/HPUX...+informixPB+SP/4GL/ESQL应用。Customized通讯平台<2>例子:Informix银行应用系统分析分支ScoUn<3>Informix的缺陷逐步降低的市场份额分布式事物处理不完善缺乏Internet/Intranet的解决方案2001年4月被IBM收购用户面临新的选择?<3>Informix的缺陷逐步降低的市场份额<4>移植到Oracle的理由更大的市场成熟的技术更好的性能全面解决方案Internet计算环境下的新的计算结构强有力的支持 <4>移植到Oracle的理由更大的市场移植方法论采用传统的自顶向下法,而不是需要反复的快速原型法需求的采集、分析和设计通常需要2到10周时间移植最简单的部分是安装脚本、方案和数据方案、结构和应用的修改不要包含在移植项目中不要同时做其它的移植工作(操作系统,语言)移植方法论移植方法论移植方法论的生命周期移植调查表
–
在客户现场完成调查表。小的项目也可以远程完成。项目评估/计划-项目评估/计划可以在现场或远程完成。方案、应用和数据移植的设计
–
完成分析和设计阶段。实施–开始移植工作。单元测试
–
通常包含在实施过程中。系统测试客户验收测试性能测试正式发布移植方法论移植方法论的生命周期<7>SechemaObject比较Database Tablespase User Table GlobalTempTablePL/SQLProcedurePL/SQLFunctionPackage OracleInformixDatabase Database User Table TemporaryTableStoreProcedureStoreProcedure----- <7>SechemaObject比较Database O<8>SechemaObject比较AfterTriggersBeforeTriggersSynonymsSequencesViewMaterializedViewOracleInformixTriggersTriggersSynonymsSerialDatatypeView------<8>SechemaObject比较AfterTrig<9>不同数据类型的比较SerialCharDatatime/DateByte/Text<9>不同数据类型的比较Serial<10>不同数据类型的比较Informix中serial类型支持最大到214748367的整数,并且始终加1。createtabletbl1(serial_columnserial,enamechar(15)insertintotbl1(serial_column,ename)value(0,scott)SerialOracle中可用一个number(10)类型和一个Sequence来模拟createtabletbl1(serial_columnnumber(10),enamechar(15))createsequencetbl1_serialinsertintotbl1(serial_colume,ename)values(tbl1_serial.nextval,scott)<10>不同数据类型的比较Informix中serial类型<11>不同数据类型的比较Informix支持最大到32767个字符CharOraclechar最大到2000varchar2最大到4000long2GCLOB4G<11>不同数据类型的比较InformixCharOrac<12>不同数据类型的比较Informix1/100000秒Datetime/DateOracle年月日时分秒Date+IntegerOracle9i后支持timestamp类型<12>不同数据类型的比较InformixDatetime/<13>不同数据类型的比较InformixByteTextByte/TextOracleLongRowBLOBLongCLOB<13>不同数据类型的比较InformixByte/TextOracle:连接到<schema>其它数据库: 连接到<database>ALTERSESSIONSETCURRENT_SCHEMA=<schema_name>CREATEUSER<schema_name>…DEFAULTTABLESPACE<ts_name>Oracle与其它数据库
连接方式不同Oracle:连接到<schemaOracle采用多版本并存控制来支持读一致性,不需要读记录锁。读操作和写操作不会相互阻碍。真正的行级锁较少的INSERT,UPDATE写冲突锁不会升级Oracle与其它数据库
事务处理方式不同OracleOracle与其它数据库
事务处理方式不同Oracle与其它数据库
事务处理方式不同其它数据库
允许应用程序开发员选择不同的隔离级别“ReadCommitted”
和“Serializable”
采用读记录锁来提供读一致性。但这会导致阻碍写操作。“Readuncommitted”
允许脏读来减少这种问题。当记录数增加时锁会升级锁是在内存中管理的一些数据库至今仍用页级锁Oracle与其它数据库
事务处理方式不同其它数据库Oracle与其它数据库
事务处理方式不同informix(缺省为自动提交)必须指定
“BeginTransaction”Oracle(缺省为隐含的事务)每个DML都有隐含的
“BeginTransaction”必须输入
“commit”
或“rollback”Oracle与其它数据库
事务处理方式不同informixOracle与其它数据库
临时表不同
Oracle大部分情况下不需要临时表Oracle优化器可以处理非常复杂的查询,因此可以重写SQL语句来避免使用临时表Oracle9i以上版本支持ANSIGlobalTemporaryTables
其它数据库使用临时表:简化查询结果累积其它原因…没有游标…4个表join的限制Oracle与其它数据库
临时表不同
Oracle大部分情况Oracle与其它数据库
应用编程不同SQL语法不同Oracle9i
后支持ANSISQL(outerjoins,case,…)其它不同处系统表、系统存储过程(sp_),@@variable全局变量的使用Workbench可以解决一些服务器端的不同客户端如果有问题的话需要重写代码Oracle与其它数据库
应用编程不同SQL语法不同Oracle与其它数据库
存储过程不同不同的数据库使用不同的语言一些数据库大量使用存储过程可以预编译来提高性能Oracle采用PL/SQL和Java,可以执行外部C程序,也可从PL/SQL中调用WebServicesInformixSPL转为OraclePL/SQLOracle与其它数据库
存储过程不同不同的数据库使用不同的Oracle与其它数据库
存储过程不同–
错误处理Oracle遵循PL/1和Java标准informix出错后可以继续执行
…错误可能被忽略Oracle错误可以
“thrown”,你可以抓住
“catch”
它们(EXCEPTIONWHEN)…
可以选择忽略或继续处理Oracle与其它数据库
存储过程不同–错误处理OraclOracle与其它数据库
存储过程不同–Packages和FunctionsPackages类似JavaPackagesHaveJavaInterfacedefinitionswhereonlythestoredproceduresignatureisdefinedAllowsstoredprocedurethatperformsimilarfunctionalitytobepackagedtogetherFunctionscanreturnavaluestoredprocedurescannot…storedprocedureareforreturnresultssets…functionscanbeexecutedaspartofaSQLstatementOracle与其它数据库
存储过程不同–PackagesOracle与其它数据库
存储过程不同–
触发器informix在一个trigger中定义before和aftertrigger有限制只能执行插入、删除、修改和存储过程语句Oracle可执行任何PL/SQL代码Haverowandstatement,beforeandaftertriggers数据库一级的触发器Oracle与其它数据库
存储过程不同–触发器informSQLDifferencesfromclauseisnotmandatoryOracleequivalent:fromdualSQLDifferencesfromclauseisSQLDifferencesSELECTzipcode[1,3],customer_num FROMcustomer ORDERBYzipcodeSubstring,index1to3Oracleequivalent:selectsubstr(zipcode,1,3)….SQLDifferencesSELECTzipcode[SQLDifferencesSELECTUNIQUEcity,state,zipcodeFROMcustomerUNIQUE=DISTINCTOracleequivalent:SELECTDISTINCTcity,state,zipcodeFROMcustomerSQLDifferencesSELECTUNIQUEcSQLDifferencesselectFIRST10a,bfromtablFirstxnumberofrowsoftheresultset.Oracleequivalent:selecta,bfromtablwhereROWNUM<=10Selectfirst10a,bfromtablAunionselecta,cfromtableCNote:Thisselectfirst10rowsoftheunionresults.SQLDifferencesselectFIRST10SQLDifferencesselect...wherefieldaMATCHES‘something’SimilartoLIKE,usedifferentwildcardcharacters*=%(zeroormorecharacters)?=_(singlecharacter)\,defaultescapecharacter,youcanspecifybyESCAPE‘x'[],Evaluatestoasinglecharacterorrangeofcharacters'[A-H]‘specifiesanysingleletterfromAthroughH,inclusive.SQLDifferencesselect...wherSQLDifferences–somefunctionsDAY(col):thenumberofthedayofthemonthEXTRACT(DAYFROMcol)MONTH(col):numberofthemonthEXTRACT(MONTHFROMcol)CURRENT:datetimetypevalueofcurrentsysdateTODAY:datetypeCURRENT_DATEDBSERVERNAME,SITENAME:thedatabaseservernameSQLDifferences–somefunctioSQLDifferencesselect…intoTEMPtablexfrom...Thiswillcreateatemporarytable(tablex)andinsertthequeryresultintoit.OracleEquivalent:Createaglobaltemporarytablefirst,andthestatementchangeto:insertintotablexselectfrom…Or,ifinstoredprocedure,useanestedtable.SQLDifferencesselect…intoT移植工具MigrationWorkbench1998年10月第一版产品发布100%用Java开发免费与Oracle数据库一起发布,可在OTN上下载最新版本支持: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移植工具MigrationWorkbench1998年1SQLDeveloperMigration最新版本2.1支持:SQLServer7.0/2000/2005Sybase12/15Access97/2000/2002/2003MySQL3/4/5.0DB2LUW7/8/9Teradata12SQLDeveloperMigration最新版本2.1移植工具MigrationWorkbench
可移植的Informix对象TablesandDataConstraintsIndexesViewsGroups/RolesUsersPrivilegesStoredProceduresTriggersESQLDatabase移植工具MigrationWorkbench
可移植的I移植工具MigrationWorkbench–
先决条件支持Oracle8.1.5以上版本先安装MigrationWorkbench的核心软件再安装所需的plug-in配置OracleThickJDBC驱动配置其他数据库ODBC驱动(对于Informix,需Informix带的JDBC驱动)移植工具MigrationWorkbench–先决条移植工具MigrationWorkbench–
连接OracleMigrationWorkBenchOtherServerOracleJDBC/ODBCBridgeODBCJDBCOCINET*8移植工具MigrationWorkbench–连接O移植工具MigrationWorkbench-DatabasesInformix中多个Databases被整合为一个DatabaseInformix中原有的多个users被保留Informix中的命名与Oracle保留字冲突的Workbench会自动解决在Oracle中对原有的Database分别建一个Tablespace移植工具MigrationWorkbench-Dat移植工具MigrationWorkbench–
步骤1 选择资料库所在的服务器2 选择源数据库3 导入并映射数据源模型4 手工修改映射选项5 选择目标数据库6 选择要移植的对象类型7 创建用户、表,装载表数据,创建其它数据库对象
CaptureWizardMigrationWizard移植工具MigrationWorkbench–步骤1Informix移植Oracle方法论课件MigrationWorkbench–
日志日志信息将被保留下来可随时查看转换中遇到的问题MigrationWorkbench–日志日志信息将被应用移植概述对于以下几种应用,Oracle有相应的移植工具:InformixESQL/CInformixSPLInformix4GL应用移植概述对于以下几种应用,Oracle有相应的移植工具:应用移植-ESQL/CMigrationWorkbench支持ESQL/C到PRO*C的转换支持所有的基本SQL语句自动完成大部分移植工作能自动将语法进行转换问题标注及生成总结报告应用移植-ESQL/CMigrationWorkben应用移植-ESQL/CInformix所有程序中原来以”$”表示为嵌入式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/CInformix所有程序中原来以应用移植-ESQL/CInformix的Where语句采用”==”为相等,而Oracle采用”=”。Informix的UNIQUE语句改为ORACLE的DISTINCT。Informix的outjoin语法与oracle不同,需做修改。应用移植-ESQL/CInformix的Where语句采应用移植-ESQL/CInformix不能锁单独一条记录,必须定义一个cursorwithFORUPDATE。Oracle不用定义cursorInformix:EXECSQLDECLARECURSORcur1FORSELECTlogin_noINTO:login_noFROMusersWHEREuser_name='PAM'FORUPDATE;EXECSQLOPENcur1;EXECSQLFETCHcur1;EXECSQLCLOSEcur1;Oracle:EXECSQLSELECTlogin_noINTO:login_noFROMusersWHEREuser_name='PAM'FORUPDATE;应用移植-ESQL/CInformix不能锁单独一条记录应用移植-ESQL/CInformix的DECLARECURSOR须加上INTO子句,在Fetch时不加INTO子句,而Oracle的语法恰好相反。Informix:EXECSQLDECLARECURSORcur1FORSELECTlogin_noINTO:login_noFROMusersWHEREuser_name='PAM';EXECSQLFETCHcur1;Oracle:EXECSQLDECLARECURSORcur1FORSELECTlogin_noFROMusersWHEREuser_name='PAM';EXECSQLFETCHcur1INTO:login_no;应用移植-ESQL/CInformix的DECLARE函数比较Informix Oracle 描述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) 返回字符串长度 current sysdate 返回当前日期和时间date(“12/13/1999”)to_date(‘12/13/1999’,’mm/dd/yyyy’)返回指定格式日期 day(dtime_expr) to_number(to_char(dtime_expr,’dd’))返回指定日期是某月的第 几天 extend(value[,firsttolast])to_date(to_char(value,’formate-mask’))调整日期时间精度
函数比较Informix 函数比较Informix Oracle 描述 To_char(Date,‘J’)to_date(number,’J’)month(date_expr) to_number(to_char(date_expr,’MM’)) 返回相应月份 time to_char(sysdate,’hh24:mi:ss’) 返回当前时间 today sysdate 返回当前系统时间 weekday(date_expr) to_number(to_char(date_expr,’D’)-1)返回指定日期是星期 几,0表示星期日 year(date_expr) to_number(to_char(date_expr,’YYYY’)) 返回指定日期对应年 函数比较Informix 具体问题解答WorkstillneedtodoscrollingcursorstemporarytablesaltertableMechanismtohandlereturncodes具体问题解答Workstillneedtodo<49>Oracle8i以上全局临时表需事先建立createglobaltemporarytable...Transaction独立oncommitdeleterowsSession独立oncommitpreserverows<49>Oracle8i以上全局临时表需事先建立移植到ORACLE9i以上–更简单Oracle9i支持scrollingcursorsCase语句ANSIjoinResultsetDate-timedatatypeTimestampdatatype移植到ORACLE9i以上–更简单Oracle9i支更多信息OracleTechnologyNetwork(OTN):/tech/migration更多信息Informix移植Oracle方法论课件王敏桥PTSOracleChinaminqiao.wang@基于Informix应用系统的移植王敏桥基于Informix应用系统的移植<54>主题基于Informix应用系统分析Oracle与Informix的异同移植工具MigrationWorkbench应用移植专题:ESQL/C的移植具体问题解答<1>主题基于Informix应用系统分析<55>例子:Informix银行应用系统分析分支ScoUnix+informix(NOWindowsNT)PB+SP/4GL/ESQL应用。Customized通讯平台二级...一级...WebServer信息发布NetscapeServer/IIS+WebDatabladeAIX/HPUX...+informixPB+SP/4GL/ESQL应用。Customized通讯平台<2>例子:Informix银行应用系统分析分支ScoUn<56>Informix的缺陷逐步降低的市场份额分布式事物处理不完善缺乏Internet/Intranet的解决方案2001年4月被IBM收购用户面临新的选择?<3>Informix的缺陷逐步降低的市场份额<57>移植到Oracle的理由更大的市场成熟的技术更好的性能全面解决方案Internet计算环境下的新的计算结构强有力的支持 <4>移植到Oracle的理由更大的市场移植方法论采用传统的自顶向下法,而不是需要反复的快速原型法需求的采集、分析和设计通常需要2到10周时间移植最简单的部分是安装脚本、方案和数据方案、结构和应用的修改不要包含在移植项目中不要同时做其它的移植工作(操作系统,语言)移植方法论移植方法论移植方法论的生命周期移植调查表
–
在客户现场完成调查表。小的项目也可以远程完成。项目评估/计划-项目评估/计划可以在现场或远程完成。方案、应用和数据移植的设计
–
完成分析和设计阶段。实施–开始移植工作。单元测试
–
通常包含在实施过程中。系统测试客户验收测试性能测试正式发布移植方法论移植方法论的生命周期<60>SechemaObject比较Database Tablespase User Table GlobalTempTablePL/SQLProcedurePL/SQLFunctionPackage OracleInformixDatabase Database User Table TemporaryTableStoreProcedureStoreProcedure----- <7>SechemaObject比较Database O<61>SechemaObject比较AfterTriggersBeforeTriggersSynonymsSequencesViewMaterializedViewOracleInformixTriggersTriggersSynonymsSerialDatatypeView------<8>SechemaObject比较AfterTrig<62>不同数据类型的比较SerialCharDatatime/DateByte/Text<9>不同数据类型的比较Serial<63>不同数据类型的比较Informix中serial类型支持最大到214748367的整数,并且始终加1。createtabletbl1(serial_columnserial,enamechar(15)insertintotbl1(serial_column,ename)value(0,scott)SerialOracle中可用一个number(10)类型和一个Sequence来模拟createtabletbl1(serial_columnnumber(10),enamechar(15))createsequencetbl1_serialinsertintotbl1(serial_colume,ename)values(tbl1_serial.nextval,scott)<10>不同数据类型的比较Informix中serial类型<64>不同数据类型的比较Informix支持最大到32767个字符CharOraclechar最大到2000varchar2最大到4000long2GCLOB4G<11>不同数据类型的比较InformixCharOrac<65>不同数据类型的比较Informix1/100000秒Datetime/DateOracle年月日时分秒Date+IntegerOracle9i后支持timestamp类型<12>不同数据类型的比较InformixDatetime/<66>不同数据类型的比较InformixByteTextByte/TextOracleLongRowBLOBLongCLOB<13>不同数据类型的比较InformixByte/TextOracle:连接到<schema>其它数据库: 连接到<database>ALTERSESSIONSETCURRENT_SCHEMA=<schema_name>CREATEUSER<schema_name>…DEFAULTTABLESPACE<ts_name>Oracle与其它数据库
连接方式不同Oracle:连接到<schemaOracle采用多版本并存控制来支持读一致性,不需要读记录锁。读操作和写操作不会相互阻碍。真正的行级锁较少的INSERT,UPDATE写冲突锁不会升级Oracle与其它数据库
事务处理方式不同OracleOracle与其它数据库
事务处理方式不同Oracle与其它数据库
事务处理方式不同其它数据库
允许应用程序开发员选择不同的隔离级别“ReadCommitted”
和“Serializable”
采用读记录锁来提供读一致性。但这会导致阻碍写操作。“Readuncommitted”
允许脏读来减少这种问题。当记录数增加时锁会升级锁是在内存中管理的一些数据库至今仍用页级锁Oracle与其它数据库
事务处理方式不同其它数据库Oracle与其它数据库
事务处理方式不同informix(缺省为自动提交)必须指定
“BeginTransaction”Oracle(缺省为隐含的事务)每个DML都有隐含的
“BeginTransaction”必须输入
“commit”
或“rollback”Oracle与其它数据库
事务处理方式不同informixOracle与其它数据库
临时表不同
Oracle大部分情况下不需要临时表Oracle优化器可以处理非常复杂的查询,因此可以重写SQL语句来避免使用临时表Oracle9i以上版本支持ANSIGlobalTemporaryTables
其它数据库使用临时表:简化查询结果累积其它原因…没有游标…4个表join的限制Oracle与其它数据库
临时表不同
Oracle大部分情况Oracle与其它数据库
应用编程不同SQL语法不同Oracle9i
后支持ANSISQL(outerjoins,case,…)其它不同处系统表、系统存储过程(sp_),@@variable全局变量的使用Workbench可以解决一些服务器端的不同客户端如果有问题的话需要重写代码Oracle与其它数据库
应用编程不同SQL语法不同Oracle与其它数据库
存储过程不同不同的数据库使用不同的语言一些数据库大量使用存储过程可以预编译来提高性能Oracle采用PL/SQL和Java,可以执行外部C程序,也可从PL/SQL中调用WebServicesInformixSPL转为OraclePL/SQLOracle与其它数据库
存储过程不同不同的数据库使用不同的Oracle与其它数据库
存储过程不同–
错误处理Oracle遵循PL/1和Java标准informix出错后可以继续执行
…错误可能被忽略Oracle错误可以
“thrown”,你可以抓住
“catch”
它们(EXCEPTIONWHEN)…
可以选择忽略或继续处理Oracle与其它数据库
存储过程不同–错误处理OraclOracle与其它数据库
存储过程不同–Packages和FunctionsPackages类似JavaPackagesHaveJavaInterfacedefinitionswhereonlythestoredproceduresignatureisdefinedAllowsstoredprocedurethatperformsimilarfunctionalitytobepackagedtogetherFunctionscanreturnavaluestoredprocedurescannot…storedprocedureareforreturnresultssets…functionscanbeexecutedaspartofaSQLstatementOracle与其它数据库
存储过程不同–PackagesOracle与其它数据库
存储过程不同–
触发器informix在一个trigger中定义before和aftertrigger有限制只能执行插入、删除、修改和存储过程语句Oracle可执行任何PL/SQL代码Haverowandstatement,beforeandaftertriggers数据库一级的触发器Oracle与其它数据库
存储过程不同–触发器informSQLDifferencesfromclauseisnotmandatoryOracleequivalent:fromdualSQLDifferencesfromclauseisSQLDifferencesSELECTzipcode[1,3],customer_num FROMcustomer ORDERBYzipcodeSubstring,index1to3Oracleequivalent:selectsubstr(zipcode,1,3)….SQLDifferencesSELECTzipcode[SQLDifferencesSELECTUNIQUEcity,state,zipcodeFROMcustomerUNIQUE=DISTINCTOracleequivalent:SELECTDISTINCTcity,state,zipcodeFROMcustomerSQLDifferencesSELECTUNIQUEcSQLDifferencesselectFIRST10a,bfromtablFirstxnumberofrowsoftheresultset.Oracleequivalent:selecta,bfromtablwhereROWNUM<=10Selectfirst10a,bfromtablAunionselecta,cfromtableCNote:Thisselectfirst10rowsoftheunionresults.SQLDifferencesselectFIRST10SQLDifferencesselect...wherefieldaMATCHES‘something’SimilartoLIKE,usedifferentwildcardcharacters*=%(zeroormorecharacters)?=_(singlecharacter)\,defaultescapecharacter,youcanspecifybyESCAPE‘x'[],Evaluatestoasinglecharacterorrangeofcharacters'[A-H]‘specifiesanysingleletterfromAthroughH,inclusive.SQLDifferencesselect...wherSQLDifferences–somefunctionsDAY(col):thenumberofthedayofthemonthEXTRACT(DAYFROMcol)MONTH(col):numberofthemonthEXTRACT(MONTHFROMcol)CURRENT:datetimetypevalueofcurrentsysdateTODAY:datetypeCURRENT_DATEDBSERVERNAME,SITENAME:thedatabaseservernameSQLDifferences–somefunctioSQLDifferencesselect…intoTEMPtablexfrom...Thiswillcreateatemporarytable(tablex)andinsertthequeryresultintoit.OracleEquivalent:Createaglobaltemporarytablefirst,andthestatementchangeto:insertintotablexselectfrom…Or,ifinstoredprocedure,useanestedtable.SQLDifferencesselect…intoT移植工具MigrationWorkbench1998年10月第一版产品发布100%用Java开发免费与Oracle数据库一起发布,可在OTN上下载最新版本支持: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移植工具MigrationWorkbench1998年1SQLDeveloperMigration最新版本2.1支持:SQLServer7.0/2000/2005Sybase12/15Access97/2000/2002/2003MySQL3/4/5.0DB2LUW7/8/9Teradata12SQLDeveloperMigration最新版本2.1移植工具MigrationWorkbench
可移植的Informix对象TablesandDataConstraintsIndexesViewsGroups/RolesUsersPrivilegesStoredProceduresTriggersESQLDatabase移植工具MigrationWorkbench
可移植的I移植工具MigrationWorkbench–
先决条件支持Oracle8.1.5以上版本先安装MigrationWorkbench的核心软件再安装所需的plug-in配置OracleThickJDBC驱动配置其他数据库ODBC驱动(对于Informix,需Informix带的JDBC驱动)移植工具MigrationWorkbench–先决条移植工具MigrationWorkbench–
连接OracleMigrationWorkBenchOtherServerOracleJDBC/ODBCBridgeODBCJDBCOCINET*8移植工具MigrationWorkbench–连接O移植工具MigrationWorkbench-DatabasesInformix中多个Databases被整合为一个DatabaseInformix中原有的多个users被保留Informix中的命名与Oracle保留字冲突的Workbench会自动解决在Oracle中对原有的Database分别建一个Tablespace移植工具MigrationWorkbench-Dat移植工具MigrationWorkbench–
步骤1 选择资料库所在的服务器2 选择源数据库3 导入并映射数据源模型4 手工修改映射选项5 选择目标数据库6 选择要移植的对象类型7 创建用户、表,装载表数据,创建其它数据库对象
CaptureWizardMigrationWizard移植工具MigrationWorkbench–步骤1Informix移植Oracle方法论课件MigrationWorkbench–
日志日志信息将被保留下来可随时查看转换中遇到的问题MigrationWorkbench–日志日志信息将被应用移植概述对于以下几种应用,Oracle有相应的移植工具:InformixESQL/CInformixSPLInformix4GL应用移植概述对于以下几种应用,Oracle有相应的移植工具:应用移植-ESQL/CMigrationWorkbench支持ESQL/C到PRO*C的转换支持所有的基本SQL语句自动完成大部分移植工作能自动将语法进行转换问题标注及生成总结报告应用移植-ESQL/CMigrationWorkben应用移植-ESQL/CInformix所有程序中原来以”$”表示为嵌入式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/CInformix所有程序中原来以应用移植-ESQL/CInformix的Where语句采用”==”为相等,而Oracle采用”=”。Informix的UNIQUE语句改为ORACLE的DISTINCT。Informix的outjoin语法与oracle不同,需做修改。应用移植-ESQL/CInformix的Where语句采应用移植-ESQL/CInformix不能锁单独一条记录,必须定义一个cursorwithFORUPDATE。Oracle不用定义cursorInformix:EXECSQLDECLARECURSORcur1FORSELECTlogin_noINTO:login_noFROMusersWHEREuser_name='PAM'FORUPDATE;EXECSQLOPENcur1;EXECSQLFETCHcur1;EXECSQLCLOSEcur1;Oracle:EXECSQLSELECTlogin_noINTO:login_noFROMusersWHEREuser_name='PAM'FORUPDATE;应用移植-ESQL/CInformix不能锁单独一条记录应用移植-ESQL/CInformix的DECLARECURSOR须加上INTO子句,在Fetch时不加INTO子句,而Oracle的语法恰好相反。Informix:EXECSQL
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030年中国心轴倾斜圆锯机行业投资前景及策略咨询报告
- 2025至2030年中国微机计轴道口信号设备数据监测研究报告
- 2025至2030年中国异型铝材市场分析及竞争策略研究报告
- 2025至2030年中国建筑挂钩行业投资前景及策略咨询报告
- 2025至2030年中国广告霓虹灯数据监测研究报告
- 2025至2030年中国工程用面料行业投资前景及策略咨询报告
- 2025至2030年中国工业用电风扇网罩行业投资前景及策略咨询报告001
- 高一试卷数学试题及答案
- 高一服装设计试卷及答案
- 胃溃疡治疗后护理查房
- 软件代码审计与测试作业指导书
- 上消化道出血护理疑难病例讨论记
- 城市轨道交通自动售票机
- 环境设计专业考察课程教学大纲
- 2024版互联网企业股东合作协议书范本3篇
- 企业环保知识培训课件
- 110kV立塔架线安全施工方案
- 完形填空-2025年安徽中考英语总复习专项训练(含解析)
- 《岁末年初重点行业领域安全生产提示》专题培训
- 商混站(商品混凝土公司)安全风险分级管控和隐患排查治理双体系方案全套资料汇编完整版
- GB/T 16288-2024塑料制品的标志
评论
0/150
提交评论