Ciertos caracteres en el juego de caracteres WE8ISO8859P1 tienen una representación binaria diferente que el mismo carácter en UTF8.
Lo que sugiero son 2 formas posibles
1) Intente usar proveedores de datos nativos de Oracle para .NET (ODP.NET). Puede haber un error/característica en la biblioteca System.Data.OracleClient de Microsoft que indica que este adaptador no admite automáticamente la conversión de WE8ISO8859P1 a Unicode. Aquí hay un enlace a ODP.NET
Espero que haya soporte para esta codificación en ODP (pero para decir verdad, nunca verifiqué esto, es solo una sugerencia)
2) Solución alternativa:en el conjunto de datos, debe crear un campo binario (asignado al campo de la tabla original) y un campo de cadena (no asignado a la base de datos). Cuando cargue datos en el conjunto de datos, itere para cada fila y realice la conversión de matriz binaria a cadena.
El código debería ser algo como esto
Encoding e = Encoding.GetEncoding("iso-8859-1");
foreach(DataRow row in dataset.Tables["MyTable"])
{
if (!row.IsNull("MyByteArrayField"))
row["MyStringField"] = e.GetString((row["MyByteArrayField"] as byte[]));
}