設為首頁收藏本站

艾歐踢論壇

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

搜索
熱搜: 活動 交友 discuz
查看: 805|回復: 0
打印 上一主題 下一主題

Informix to Oracle Migration

[複製鏈接]
跳轉到指定樓層
樓主
發表於 2017-10-1 20:21:42 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
Download Oracle Migration Workbench 10.1.0.4.0
  • Supported Source Platforms: Informix Dynamic Server: 7.3, 9.1, 9.2, 9.3, 9.4
  • Oracle Databases: Oracle Database 9i and 10g


Informix to Oracle Migration Reference
Technical information on migration from Informix to Oracle.

Database Objects and ConceptsMigrating database objects and specific constructs from Informix to Oracle:
InformixOracle
1SERIAL DatatypeAutoincrement columnSequence and Trigger
2Session-based Temporary TablesGlobal Temporary Tables

IdentifiersConverting identifiers from Informix to Oracle:
InformixOracle
1First characterLetter or underscore (_)Letter
2Subsequent charactersLetter, digit, _ and $Letter, digit, _, # and $
3Quote character” (double quotes)” (double quotes)
4Maximum length12830
5Reserved wordsDifferent reserved words

SQL Language ElementsConverting SQL language elements:
InformixOracle
1{ comment }/* comment */
2string[start, end]Substring operator []SUBSTR(string, start, end - start + 1)
string[start]SUBSTR(string, start, 1)
3exp::datatypeCast exp to datatypeCAST(exp AS datatype)
4DATETIME(datetime) YEAR TO FRACTIONDATETIME literalTIMESTAMP 'datetime'
DATETIME(date) YEAR TO DAYDATE 'date'
5DBINFO('sqlca.sqlerrd1')Get the last SERIAL valuetable_seq.CURRVAL
6DBINFO('sqlca.sqlerrd2')Get the number of affected rowsSQL%ROWCOUNT
7string MATCHES 'pattern'Regular expression matchingREGEXP_LIKE(string, pattern)
8ORDER BYNULLs in ORDER BYORDER BY NULLS FIRST | LAST
Different default order
9num UNITS DAYInterval in daysINTERVAL 'num' DAY

Data TypesConverting data types:
InformixOracle
1BIGINT64-bit integerNUMBER(19)
2BIGSERIAL(s)Auto-increment 64-bit integerSequence and trigger
3BLOBBinary large object, ⇐ 4T BLOB
4BOOLEANTrue, false or NULLCHAR(1)
5BYTEBinary data, ⇐ 2GBLOB
6CHAR(n), CHARACTER(n)Fixed-length string, 1 ⇐ n ⇐ 32767 CHAR(n), CHARACTER(n)
7CHARACTER VARYING(n,r)Variable-length string, 1 ⇐ n ⇐ 255VARCHAR2(n)
8CLOBCharacter large object, ⇐ 4T CLOB
9DATEDate (year, month and day)DATEIncludes time part
10DATETIME unit TO unit2Date and time with fractionTIMESTAMP
11DECIMAL(p,s), DEC(p,s)Fixed-point numberNUMBER(p,s)
12DOUBLE PRECISIONDouble-precision floating-point numberBINARY_DOUBLE
13FLOAT(p)Double-precision floating-point numberBINARY_DOUBLE
14INTEGER, INT32-bit integerNUMBER(10)
15INT864-bit integerNUMBER(19)
16INTERVAL unit TO unitDate and time intervalNUMBER(5)
17INTERVAL YEAR TO MONTHDate intervalINTERVAL YEAR TO MONTH
18INTERVAL DAY TO HOURDay and time intervalINTERVAL DAY(5) TO SECOND
19INTERVAL DAY TO MINUTEDay and time intervalINTERVAL DAY(5) TO SECOND
20INTERVAL DAY TO SECONDDay and time intervalINTERVAL DAY(5) TO SECOND
21INTERVAL DAY TO FRACTIONDay and time intervalINTERVAL DAY(5) TO SECOND
22INTERVAL HOUR TO MINUTETime intervalINTERVAL DAY(5) TO SECOND
23INTERVAL HOUR TO SECONDTime intervalINTERVAL DAY(5) TO SECOND
24INTERVAL HOUR TO FRACTIONTime intervalINTERVAL DAY(5) TO SECOND
25INTERVAL MINUTE TO SECONDTime intervalINTERVAL DAY(5) TO SECOND
26INTERVAL MINUTE TO FRACTIONTime intervalINTERVAL DAY(5) TO SECOND
27INTERVAL SECOND TO FRACTIONTime intervalINTERVAL DAY(5) TO SECOND
28LVARCHAR(n)Variable-length string, 1 ⇐ n ⇐ 32739 VARCHAR2(n)
29MONEY(p,s)Currency amountNUMBER(p,s)
30NCHAR(n)Fixed-length string, 1 ⇐ n ⇐ 32767 NCHAR(n)
31NUMERIC(p,s)Fixed-point numberNUMBER(p,s)
32NVARCHAR(n,r)Variable-length string, 1 ⇐ n ⇐ 255NVARCHAR2(n)
33REALSingle-precision floating-point numberBINARY_FLOAT
34SMALLFLOATSingle-precision floating-point numberBINARY_FLOAT
35SMALLINT16-bit integerNUMBER(5)
36SERIAL(s)Auto-increment 32-bit integerSequence and trigger
37SERIAL8(s)Auto-increment 64-bit integerSequence and trigger
38TEXTCharacter data, ⇐ 2GCLOB
39VARCHAR(n,r)Variable-length string, 1 ⇐ n ⇐ 255VARCHAR2(n)
Data type attributes and options
InformixOracle
1column BYTE IN TABLEcolumn BLOB
2column BYTE IN lob_spacecolumn BLOB
3column TEXT IN TABLEcolumn CLOB
4column TEXT IN lob_spacecolumn CLOB

Built-in SQL FunctionsConverting built-in SQL functions:
InformixOracle
1CURRENTGet the current date and timeSYSTIMESTAMP
CURRENT YEAR TO SECONDSYSDATE
2DBINFO('sqlca.sqlerrd1')Get the last SERIAL valuetable_seq.CURRVAL
DBINFO('sqlca.sqlerrd2')Get the number of affected rowsSQL%ROWCOUNT
3DECODE(exp, when, then, …, else)Evaluate conditionDECODE(exp, when, then, …, else)
4MDY(month, day, year)Build DATE from 3 integersTO_DATE(TO_CHAR(month, 'FM09') ||
TO_CHAR(day, 'FM09') ||
TO_CHAR(year, 'FM0009'), 'MMDDYYYY')
5SUBSTRING(str FROM start)Get substringSUBSTR(str, start)
SUBSTRING(str FROM start FOR len)SUBSTR(str, start, len)
6MOD(dividend, divisor)Get the remainderMOD(dividend, divisor)
7TO_CHAR(datetime, format)Convert datetime to stringTO_CHAR(datetime, format)
8TODAYGet the current dateTRUNC(SYSDATE)

SELECT StatementConverting SQL queries from Informix to Oracle:
InformixOracle
1SELECT FIRST nReturn n rows after sorting ROWNUM <= n and subquery
2SELECT UNIQUE | DISTINCT … FROMRetrieve unique valuesSELECT DISTINCT … FROM
3select_stmt INTO RAW table;Create a non-logged table
and insert rows
CREATE table AS select_stmt;
4select_stmt INTO
TEMP | SCRATCH table;
Create temporary table
and insert rows
INSERT INTO table select_stmt;
CREATE GLOBAL TEMPORARY TABLE table
ON COMMIT PRESERVE ROWS
AS select_stmt;

CREATE TABLE StatementConverting table DDL from Informix to Oracle:
InformixOracle
1IN dbspaceDbspace nameTABLESPACE tablespace
2EXTENT SIZE numFirst extent size in KBRemoved
3NEXT SIZE numSubsequent extent size in KBRemoved
4LOCK MODE PAGE | ROW | TABLELocking granularityRemoved
Table types:
InformixOracle
1CREATE EXTERNAL TABLETable outside the databaseCREATE TABLE … ORGANIZATION EXTERNAL
2CREATE RAW TABLENon-logged tableCREATE TABLE
3CREATE SCRATCH TABLENon-logged temporary table (XPS only)CREATE GLOBAL TEMPORARY TABLE

CREATE PROCEDURE StatementConverting stored procedures from Informix to Oracle:
InformixOracle
1CREATE PROCEDURE nameCREATE OR REPLACE PROCEDURE name
2name()When without parametersname
3OUT | INOUT param datatype(len) DEFAULT defaultparam IN | OUT | IN OUT datatype DEFAULT default
4RETURNING | RETURNS d1Scalar return valueConverted to CREATE FUNCTION
RETURNING | RETURNS d1, d2, …Multiple return valuesList of OUT parameters is added
RETURN WITH RESUMEMultiple rows returnedConverted to PIPELINED function
5No AS keyword before the statements blockAS is added
6No BEGIN keyword to start the statements blockBEGIN is added after DECLARE section
7END PROCEDURE;End of procedure blockEND; /
For more information, see Conversion of Procedural SQL Statements from Informix to Oracle.

Procedural SQL StatementsConverting procedural SQL statements (SPL) used in stored procedures, functions and triggers from Informix to Oracle:
InformixOracle
1BEGIN [WORK];Start a transactionCommented
2DECLARE cur CURSOR FOR stmt_id;Declare a cursorLinked with OPEN cur FOR select;
3DEFINE var datatype(len);Variable declarationvar datatype(len);
DEFINE var, var2, … datatype(len);var datatype(len); var2 datatype(len); …
4EXIT FOR | FOREACH | LOOP | WHILE
[WHEN condition];
Exit a loopEXIT [WHEN condition];
5FOREACH cur FOR select INTO vars
stmt END FOREACH
Query loopcur FOR select;
FOR rec IN cur LOOP stmt END LOOP;
FOREACH select INTO vars
stmt END FOREACH
FOR rec IN (select) LOOP stmt END LOOP;
6FREE stmt_id | cursorFree statement/cursorNot required, removed
7LET var = value;Assignment statementvar := value;
LET var, var2, … = value, value2, …;var := value; var2 := value2; …
LET var, var2 = (SELECT c1, c2 FROM …)SELECT c1, c2 INTO var, var2 FROM …
8ON EXCEPTION stmt END EXCEPTION;Exception handlerEXCEPTION WHEN OTHERS THEN stmt
ON EXCEPTION SET varSet error codevar := SQLCODE;
9PREPARE stmt_id FROM select;Prepare SELECT statementLinked with OPEN cur FOR select;
10RAISE EXCEPTION code, isam, text;Raise an exceptionRAISE_APPLICATION_ERROR(code, text);
11RETURN val1;Return scalar valueRETURN val1;
RETURN val1, val2, …Return multiple valuesAssign values to OUT parameters
RETURN val1, val2, ... WITH RESUME;Return multiple rowsPIPE ROW in Pipelined function
12SYSTEM cmdExecute OS commandDBMS_SCHEDULER.CREATE_JOB(job_action => cmd)
13WHILE condition stmts END WHILEA loop statementWHILE condition LOOP stmts END LOOP;

SQL StatementsConverting other SQL statements from Informix to Oracle:
InformixOracle
1DROP TABLE temp_table;Drop temporary tableTRUNCATE TABLE temp_table;
2SET EXPLAIN FILE TO 'filename'SQL trace fileCommented
3SET ISOLATION TO DIRTY READ;Set transaction isolation levelCommented
4UPDATE STATISTICS FOR TABLE nameCollect statisticsCommented


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 轉播轉播 分享分享 分享淘帖
回復

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

小黑屋|Archiver|手機版|艾歐踢創新工坊    

GMT+8, 2024-6-13 06:53 , Processed in 0.282388 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表