Si scopre che il problema non ha nulla a che fare con i tipi di dati. Ho usato Int64 nel parametro Oracle e ha funzionato, ma solo dopo aver impostato la proprietà BindByName sul mio oggetto Command su true.
Apparentemente l'impostazione predefinita per il provider .NET System.Data.OracleClient "BINDING BY NAME", mentre l'impostazione predefinita per Oracle.DataAccess è "BIND BY POSITION".
Sarebbe stato bello se l'eccezione Oracle rilevata avesse contenuto più informazioni, ad esempio quale parametro stava generando l'eccezione. Questo potrebbe avermi aiutato a scoprire il problema prima.