Tienes que distinguir dos configuraciones nls diferentes
-
el externo, definido por la variable de entorno NLS_LANG en su aplicación. Esto determina su representación de cadena interna cuando envía datos a la biblioteca cliente de OCI.
-
el interno. Es el conjunto de caracteres utilizado por Oracle para almacenar sus datos en el disco.
Intenta ejecutar
select r.module, t.*
from v$sesssion_connection_info t
join v$session r on (r.sid = t.sid and t.serial# = r.serial#)
where r.sid = <your ruby connection SID>;
select * from nls_database_parameters;
select * from nls_instance_parameters;
Si muestra que está utilizando algo como US7ASCII o ISO8859P1, entonces Oracle acepta su carácter y lo convierte en el conjunto de caracteres de destino (ya sea eliminando un acento o reemplazándolo con '?').