論基于Informix應(yīng)用系統(tǒng)的移植_第1頁
論基于Informix應(yīng)用系統(tǒng)的移植_第2頁
論基于Informix應(yīng)用系統(tǒng)的移植_第3頁
論基于Informix應(yīng)用系統(tǒng)的移植_第4頁
論基于Informix應(yīng)用系統(tǒng)的移植_第5頁
已閱讀5頁,還剩49頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

王敏橋PTSOracleChina基于Informix應(yīng)用系統(tǒng)的移植主題基于Informix應(yīng)用系統(tǒng)分析Oracle與Informix的異同移植工具M(jìn)igrationWorkbench應(yīng)用移植專題:ESQL/C的移植具體問題解答2例子:Informix銀行應(yīng)用系統(tǒng)分析分支ScoUnix+informix(NOWindowsNT)PB+SP/4GL/ESQL應(yīng)用。Customized通訊平臺二級...一級...WebServer信息發(fā)布NetscapeServer/IIS+WebDatabladeAIX/HPUX...+informixPB+SP/4GL/ESQL應(yīng)用。Customized通訊平臺3Informix的缺陷逐步降低的市場份額分布式事物處理不完善缺乏Internet/Intranet的解決方案2001年4月被IBM收購用戶面臨新的選擇?4移植到Oracle的理由更大的市場成熟的技術(shù)更好的性能全面解決方案Internet計算環(huán)境下的新的計算結(jié)構(gòu)強(qiáng)有力的支持 5移植方法論采用傳統(tǒng)的自頂向下法,而不是需要反復(fù)的快速原型法需求的采集、分析和設(shè)計通常需要2到10周時間移植最簡單的部分是安裝腳本、方案和數(shù)據(jù)方案、結(jié)構(gòu)和應(yīng)用的修改不要包含在移植項目中不要同時做其它的移植工作(操作系統(tǒng),語言)移植方法論移植方法論的生命周期移植調(diào)查表

在客戶現(xiàn)場完成調(diào)查表。小的項目也可以遠(yuǎn)程完成。項目評估/計劃-項目評估/計劃可以在現(xiàn)場或遠(yuǎn)程完成。方案、應(yīng)用和數(shù)據(jù)移植的設(shè)計

完成分析和設(shè)計階段。實施–開始移植工作。單元測試

通常包含在實施過程中。系統(tǒng)測試客戶驗收測試性能測試正式發(fā)布SechemaObject比較Database Tablespase User Table GlobalTempTablePL/SQLProcedurePL/SQLFunctionPackage OracleInformixDatabase Database User Table TemporaryTableStoreProcedureStoreProcedure----- 8SechemaObject比較AfterTriggersBeforeTriggersSynonymsSequencesViewMaterializedViewOracleInformixTriggersTriggersSynonymsSerialDatatypeView------9不同數(shù)據(jù)類型的比較SerialCharDatatime/DateByte/Text10不同數(shù)據(jù)類類型的比較較Informix中serial類型支持最最大到214748367的的整數(shù),并并且始終加加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)11不同數(shù)據(jù)類類型的比較較Informix支持最大到到32767個字符符CharOraclechar最大到2000varchar2最大到4000long2GCLOB4G12不同數(shù)據(jù)類類型的比較較Informix1/100000秒Datetime/DateOracle年月日時分分秒Date+IntegerOracle9i后支持timestamp類型13不同數(shù)據(jù)類類型的比較較InformixByteTextByte/TextOracleLongRowBLOBLongCLOB14Oracle:連接到<schema>其它數(shù)據(jù)庫庫:連連接到<database>ALTERSESSIONSETCURRENT_SCHEMA=<schema_name>CREATEUSER<schema_name>…DEFAULTTABLESPACE<ts_name>Oracle與其它數(shù)據(jù)據(jù)庫連接方式不不同Oracle采用多版本本并存控制制來支持讀讀一致性,,不需要讀讀記錄鎖。。讀操作和寫寫操作不會會相互阻礙礙。真正的行級級鎖較少的INSERT,UPDATE寫沖突鎖不會升級級Oracle與其它數(shù)據(jù)據(jù)庫事務(wù)處理方方式不同Oracle與其它數(shù)據(jù)據(jù)庫事務(wù)處理方方式不同其它數(shù)據(jù)庫庫允許應(yīng)用程程序開發(fā)員員選擇不同同的隔離級級別“ReadCommitted”和“Serializable”采用讀記錄鎖來提供讀一一致性。但但這會導(dǎo)致致阻礙寫操操作?!癛eaduncommitted”允許臟讀來減少這種種問題。當(dāng)記錄數(shù)增增加時鎖會會升級鎖是在內(nèi)存存中管理的的一些數(shù)據(jù)庫庫至今仍用用頁級鎖Oracle與其它數(shù)據(jù)據(jù)庫事務(wù)處理方方式不同informix(缺省為自動動提交)必須指定“BeginTransaction”O(jiān)racle(缺省為隱含含的事務(wù))每個DML都有隱含的的“BeginTransaction”必須輸入“commit”或“rollback”O(jiān)racle與其它數(shù)據(jù)據(jù)庫臨時表不同同Oracle大部分情況況下不需要要臨時表Oracle優(yōu)化器可以以處理非常常復(fù)雜的查查詢,因此此可以重寫寫SQL語句來避免免使用臨時時表Oracle9i以上版本支支持ANSIGlobalTemporaryTables其它數(shù)據(jù)庫庫使用臨時時表:簡化查詢結(jié)果累積其它原因…沒有游標(biāo)…4個表join的限制Oracle與其它數(shù)據(jù)庫庫應(yīng)用編程不同同SQL語法不同Oracle9i后支持ANSISQL(outerjoins,case,…)其它不同處系統(tǒng)表、系統(tǒng)統(tǒng)存儲過程(sp_),@@variable全局變量的使使用Workbench可以解決一些些服務(wù)器端的的不同客戶端如果有有問題的話需需要重寫代碼碼Oracle與其它數(shù)據(jù)庫庫存儲過程不同同不同的數(shù)據(jù)庫庫使用不同的的語言一些數(shù)據(jù)庫大大量使用存儲儲過程可以預(yù)編譯來來提高性能Oracle采用PL/SQL和Java,可以執(zhí)行外部部C程序,也可從從PL/SQL中調(diào)用WebServicesInformixSPL轉(zhuǎn)為OraclePL/SQLOracle與其它數(shù)據(jù)庫庫存儲過程不同同–錯誤處理Oracle遵循PL/1和Java標(biāo)準(zhǔn)informix出錯后可以繼繼續(xù)執(zhí)行…錯誤可能被忽忽略O(shè)racle錯誤可以“thrown”,你可以抓住“catch”它們(EXCEPTIONWHEN)…可以選擇忽略略或繼續(xù)處理理Oracle與其它數(shù)據(jù)庫庫存儲過程不同同–Packages和FunctionsPackages類似JavaPackagesHaveJavaInterfacedefinitionswhereonlythestoredproceduresignatureisdefinedAllowsstoredprocedurethatperformsimilarfunctionalitytobepackagedtogetherFunctionscanreturnavaluestoredprocedurescannot…storedprocedureareforreturnresultssets…functionscanbeexecutedaspartofaSQLstatementOracle與其它數(shù)據(jù)庫庫存儲過程不同同–觸發(fā)器informix在一個trigger中定義before和aftertrigger有限制只能執(zhí)執(zhí)行插入、刪刪除、修改和和存儲過程語語句Oracle可執(zhí)行任何PL/SQL代碼Haverowandstatement,beforeandaftertriggers數(shù)據(jù)庫一級的的觸發(fā)器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––somefunctionsDAY(col):thenumberofthedayofthemonthEXTRACT(DAYFROMcol)MONTH(col):numberofthemonthEXTRACT(MONTHFROMcol)CURRENT:datetimetypevalueofcurrentsysdateTODAY:datetypeCURRENT_DATEDBSERVERNAME,SITENAME:thedatabaseservernameSQLDifferencesselect…intoTEMPtablexfrom...Thiswillcreateatemporarytable(tablex)andinsertthequeryresultintoit.OracleEquivalent:Createaglobaltemporarytablefirst,andthestatementchangeto:insertintotablexselectfrom……Or,ifinstoredprocedure,useanestedtable.移植工具M(jìn)igrationWorkbench1998年10月第一一版產(chǎn)品發(fā)布布100%用Java開發(fā)免費(fèi)與Oracle數(shù)據(jù)庫一起發(fā)發(fā)布,可在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.4SQLDeveloperMigration最新版本2.1支持:SQLServer7.0/2000/2005Sybase12/15Access97/2000/2002/2003MySQL3/4/5.0DB2LUW7/8/9Teradata12移植工具M(jìn)igrationWorkbench可移植的Informix對象TablesandDataConstraintsIndexesViewsGroups/RolesUsersPrivilegesStoredProceduresTriggersESQLDatabase移植工具M(jìn)igrationWorkbench–先決條件支持以上版本先安裝MigrationWorkbench的核心軟件再安裝所需的的plug-in配置OracleThickJDBC驅(qū)動配置其他數(shù)據(jù)據(jù)庫ODBC驅(qū)動(對于Informix,需Informix帶的JDBC驅(qū)動)移植工具M(jìn)igrationWorkbench–連接OracleMigrationWorkBenchOtherServerOracleJDBC/ODBCBridgeODBCJDBCOCINET*8移植工具M(jìn)igrationWorkbench-DatabasesInformix中多個Databases被整合為一個個DatabaseInformix中原有的多個個users被保留Informix中的命名與Oracle保留字沖突的的Workbench會自動解決在Oracle中對原有的Database分別建一個Tablespace移植工具M(jìn)igrationWorkbench–步驟1選擇資料庫所所在的服務(wù)器器2選擇源數(shù)據(jù)庫庫3導(dǎo)入并映射數(shù)數(shù)據(jù)源模型4手工修改映射射選項5選擇目標(biāo)數(shù)據(jù)據(jù)庫6選擇要移植的的對象類型7創(chuàng)建用戶、表表,裝載表數(shù)數(shù)據(jù),創(chuàng)建其其它數(shù)據(jù)庫對對象CaptureWizardMigrationWizardMigrationWorkbench–日志日志信息將被被保留下來可隨時查看轉(zhuǎn)轉(zhuǎn)換中遇到的的問題應(yīng)用移植概述述對于以下幾種種應(yīng)用,Oracle有相應(yīng)的移植植工具:InformixESQL/CInformixSPLInformix4GL應(yīng)用移植-ESQL/CMigrationWorkbench支持ESQL/C到PRO*C的轉(zhuǎn)換支持所有的基基本SQL語句自動完成大部部分移植工作作能自動將語法法進(jìn)行轉(zhuǎn)換問題標(biāo)注及生生成總結(jié)報告告應(yīng)用移植-ESQL/CInformix所有程序中原原來以”$”表示為為嵌入式SQL部分改為“EXECSQL”Informix的SQL引用變量以””$”標(biāo)志,,Oracle為“:“標(biāo)志志。Informixstatement:$SELECTlogin_nointo$login_no;Oraclestatement:EXECSQLSELECTlogin_nointo:login_no;Informix的Update語法與oracle不同,須做修修改。Updatetab1setcol1=val1,col2=val2……coln=valn;Updatetab1setrow=(val1,val2……);應(yīng)用移植-ESQL/CInformix的Where語句句采采用用”==”為相相等等,,而而Oracle采用用”=”。Informix的UNIQUE語句句改改為為ORACLE的DISTINCT。。Informix的outjoin語法法與與oracle不同同,,需需做做修修改改。。應(yīng)用用移移植植-ESQL/CInformix不能能鎖鎖單單獨(dú)獨(dú)一一條條記記錄錄,必必須須定定義義一一個個cursorwithFORUPDATE。。Oracle不用用定定義義cursorInformix:EXECSQLDECLARECURSORcur1FORSELECTlogin_noINTO:login_noFROMusersWHEREuser_name='PAM'FORUPDATE;EXECSQLOPENcur1;EXECSQLFETCHcur1;EXECSQLCLOSEcur1;Oracle:EXECSQLSELECTlogin_noINTO:login_noFROMusersWHEREuser_name='PAM'FORUPDATE;應(yīng)用用移移植植-ESQL/CInformix的DECLARECURSOR須加加上上INTO子句句,,在在Fetch時不不加加INTO子句句,,而而Oracle的語語法法恰恰好好相相反反。。Informix:EXECSQLDECLARECURSORcur1FORSELECTlogin_noINTO:login_noFROMusersWHEREuser_name='PAM';EXECSQLFETCHcur1;Oracle:EXECSQLDECLARECURSORcur1FORSELECTlogin_noFROMusersWHEREuser_name='PAM';EXECSQLFETCHcur1INTO:login_no;函數(shù)比比較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返回當(dāng)當(dāng)前日日期和和時間間date(“12/13/1999””)to_date(‘12/13/1999’’,’’mm/dd/yyyy’’)返回指指定格格式

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論