Integer types and AUTOINCREMENT |
INTEGER and BIGINT become NUMBER(19), INT NUMBER(10), SMALLINT NUMBER(5), BOOLEAN NUMBER(1). An AUTOINCREMENT key becomes an identity column, generated by default, on Oracle 12c and later; on 11g it stays a plain NUMBER. |
The full signed 64-bit range fits. Check the identity's next value before the application starts inserting. |
DECIMAL, NUMERIC, REAL |
DECIMAL(p,s) becomes NUMBER(p,s); a bare NUMERIC becomes NUMBER. REAL, FLOAT, and DOUBLE become BINARY_DOUBLE. |
SQLite floating point is always 8 bytes, so BINARY_DOUBLE keeps each value exactly. |
| Text types |
VARCHAR(n) and CHAR(n) become VARCHAR2(n CHAR); NVARCHAR(n) becomes NVARCHAR2(n CHAR). TEXT, CLOB, and a VARCHAR without a length become CLOB. |
Lengths past what VARCHAR2 holds also become CLOB, so no text is cut. SQLite never padded CHAR, so it becomes VARCHAR2 and stays unpadded. |
| Empty strings |
An empty string in a NOT NULL column is written as a single NUL character. |
Oracle stores '' as NULL, which a NOT NULL column refuses. Check application code that tests for empty text. |
| Dates and times |
DATE stays DATE. DATETIME and TIMESTAMP become TIMESTAMP(6), keeping fractional seconds. TIME becomes a DATE on 0001-01-01. |
Oracle has no time-of-day type. Queries on a former TIME column read the time part of the date. |
BLOB, GUIDs, and defaults |
BLOB stays BLOB; a GUID column becomes VARCHAR2(38). Literal defaults are kept, and CURRENT_TIMESTAMP becomes SYSTIMESTAMP. |
Other expression defaults, such as randomblob(), are dropped. Recreate them in Oracle if the application relies on them. |