Integers, BIT, DECIMAL, MONEY |
NUMBER at the matching width: INT as NUMBER(10,0), BIGINT as NUMBER(19,0), BIT as NUMBER(1,0), DECIMAL(p,s) as NUMBER(p,s), MONEY as NUMBER(19,4). |
Exact values stay exact, to the last digit. |
VARCHAR, NVARCHAR, (MAX), TEXT |
VARCHAR2(n CHAR) and NVARCHAR2(n CHAR); VARCHAR over 4,000, VARCHAR(MAX), and TEXT become CLOB; NVARCHAR over 2,000, NVARCHAR(MAX), and NTEXT become NCLOB. |
Oracle treats an empty string as NULL. An empty value bound for a NOT NULL column is written as a single NUL character so the row still loads. |
DATETIME, DATETIME2, SMALLDATETIME, DATE |
DATETIME and DATETIME2 become TIMESTAMP(6); SMALLDATETIME and DATE become DATE. |
Oracle keeps 6 fractional digits, so a DATETIME2(7) loses the last one. |
TIME |
DATE on 1 January of year 1. |
Oracle has no time-only type. Fractions of a second are dropped; read the time part in queries. |
DATETIMEOFFSET |
TIMESTAMP(6) WITH TIME ZONE, stored as the UTC instant. |
The moment is exact, but the original offset is not kept. |
UNIQUEIDENTIFIER, XML, ROWVERSION |
VARCHAR2(36 CHAR) without braces, CLOB, and the 0x... text of the version. |
The application reads these as text; Oracle does not regenerate a ROWVERSION. |
BINARY, VARBINARY, IMAGE, FLOAT, REAL |
RAW(n) up to a fixed width, BLOB for (MAX) and IMAGE; BINARY_DOUBLE and BINARY_FLOAT. |
No action needed; bytes and floating-point values are copied as they are. |
IDENTITY and column defaults |
On Oracle 12c and later, an identity column (GENERATED BY DEFAULT) that continues after the copied keys. GETDATE() becomes SYSTIMESTAMP; numeric and text defaults are kept. |
On Oracle 11g the key stays a plain NUMBER. A function default such as NEWID() is dropped, not stored as text. |