Okazuje się, że problem nie miał nic wspólnego z typami danych. Użyłem Int64 w parametrze Oracle i zadziałało, ale dopiero po ustawieniu właściwości BindByName w moim obiekcie Command na true.
Najwyraźniej wartość domyślna dla dostawcy System.Data.OracleClient dla platformy .NET „BINDING BY NAME”, podczas gdy wartość domyślna dla Oracle.DataAccess to „BIND BY POSITION”.
Byłoby miło, gdyby przechwycony wyjątek Oracle zawierał więcej informacji, na przykład, który parametr zgłasza wyjątek. Być może pomogło mi to wcześniej wykryć problem.