OracleDecimal ha una precisione maggiore di decimal. Per questo motivo, devi prima ridurre la precisione. Dimentica tutta l'analisi, usa la conversione implicita. Prova qualcosa sulla falsariga di (non testato):
decimal d = (decimal)(OracleDecimal.SetPrecision(oraReader.GetOracleDecimal(0), 28));