OracleDecimal heeft een grotere precisie dan decimaal. Om die reden moet je eerst de precisie verminderen. Vergeet al het parseren, gebruik impliciete conversie. Probeer iets in de trant van (niet getest):
decimal d = (decimal)(OracleDecimal.SetPrecision(oraReader.GetOracleDecimal(0), 28));