Problemet visar sig inte ha något att göra med datatyperna. Jag använde Int64 i Oracle-parametern och det fungerade, men bara efter att ha ställt in BindByName-egenskapen på mitt Command-objekt till true.
Tydligen standard för .NET System.Data.OracleClient-leverantören 'BINDING BY NAME', medan standardinställningen för Oracle.DataAccess är 'BIND BY POSITION'.
Det skulle ha varit trevligt om det fångade Oracle-undantaget hade innehållit mer information, som vilken parameter som orsakade undantaget. Detta kan ha hjälpt mig att upptäcka problemet tidigare.