OracleDecimal má větší přesnost než desítkové. Z tohoto důvodu musíte nejprve snížit přesnost. Zapomeňte na veškerou analýzu, použijte implicitní konverzi. Zkuste něco ve smyslu (netestováno):
decimal d = (decimal)(OracleDecimal.SetPrecision(oraReader.GetOracleDecimal(0), 28));