"Number" are actually NVARCHAR(768)
->SQLServer does that when there is no precision and scale specified in Oracle
VARCHAR2 columns are returned as NVARCHAR (at least the length is OK)
->Depends on the Oracle database characterset which can be unicode like AL32UTF8 (even for varchar)
DATEs are change to datetime2(7)
->Because SQL Server DATETIME starts at January 1, 1753
You could use TO_NUMBER, CONVERT ... in your OPENQUERY to get the dateformat closer to what SQL Server understands