Ukázalo se, že problém neměl nic společného s datovými typy. Použil jsem Int64 v parametru Oracle a fungovalo to, ale pouze po nastavení vlastnosti BindByName na mém objektu Command na hodnotu true.
Zřejmě výchozí hodnota pro poskytovatele .NET System.Data.OracleClient 'BINDING BY NAME', zatímco výchozí hodnota pro Oracle.DataAccess je 'BIND BY POSITION'.
Bylo by hezké, kdyby zachycená výjimka Oracle obsahovala více informací, například který parametr vyvolal výjimku. To mi možná pomohlo problém odhalit dříve.