When I use DB1 I have to set NLS_LANG to WE8MSWIN1252... when I use DB2 I have to set NLS_LANG to AL32UTF8...
I think this is the point you have to clear... Why do you have to use different NLS_LANG settings for the different DBs? You should be using a unique NLS_LANG for both, depending on your operating system charset, and it should work fine.

What happens if you use the same NLS_LANG setting for both, that makes you change in for each DB?