Una vieja pregunta que conozco, pero parece que sigue siendo relevante. Y dado que no pude encontrar una respuesta adecuada en los últimos 3 meses que he estado buscando, creo que ahora es un buen momento para publicar mis hallazgos.
He tenido el mismo comportamiento curioso y finalmente he podido resolverlo. Mi diseño se veía así:
- Base de datos Oracle 10g R2 en Windows 2003 Server (vamos a llamarlo ORA)
- Máquina de desarrollo con Windows 8, Visual Studio 2012 + SSDT, Sql Express 2012,ODT 12.1.0.21 (llamémosle DEV)
- Sql Server 2012 en Windows 2012 Server, Oracle Client 11.2 (llamémoslo PRUEBA)
Tanto DEV como TEST se conectaban a ORA. DEV informaba las columnas VARCHAR2 como DT_WSTR mientras que TEST insistía en que son DT_STR.
Luego instalé ODT 12.1.0.21 en TEST y el problema se resolvió. En particular, utilicé la opción "toda la máquina" durante la instalación. No estoy seguro del impacto que tuvo.
Parece haber una diferencia en los tipos de datos que devuelven los proveedores de Oracle OleDb en las diferentes versiones de los componentes del lado del cliente.