I've been going crazy over UniDac mixing up Oracle columns types returned in a datasets FieldDefs!
During debugging I noticed, that the internal TOCICommand "IntegerPrecision" was always reset to "9" (hardcoded somewhere), although Oracle reports 38 for the INTEGER columns.
So OraClassesUni.pas -> GetFieldDesc8 always jumps in the wrong branch and sets the DataType wrongly to ftFloat.
The internal function GetIntegerPrecision has code to use "FConnection.IntegerPrecision", but the documentation does not mention on how to change that setting, if at all possible (TUniConnection does not have any public or protected property for that at least).
Anyways, I had to make some changes to OraClassesUni to make it work (had no problem with MS SQL) and also add "OraClassesUni.IntegerPrecision := 38;" line before creating a TUniConnection instance; in the many attempts I also tried using the SpecificOptions, but no difference.
Is this a known bug investigated currently? This issue is in both v1 and the current v2 of UniDac. What am I missing? This issue took me quite a while to workaround.

One more side-effect: setting TUniQuery's CachedUpdates to True clears all it's "Params" if any are set manually. Not sure if this is supposed to be documented somewhere.
Edit:
Oracle returns Integer fields with precision = 38, scale = 0 and Number fields with precision = 0 and scale = -127.
Regards,
Tobias