OracleDecimal tem uma precisão maior que decimal. Por esse motivo, você deve reduzir a precisão primeiro. Esqueça toda a análise, use a conversão implícita. Tente algo ao longo das linhas de (não testado):
decimal d = (decimal)(OracleDecimal.SetPrecision(oraReader.GetOracleDecimal(0), 28));