问题背景
银行生产环境没有plsql执行权限,导致生产上线的时候需要通过服务器sqlplus命令执行sql文件。
问题现状
通过命令执行sql文件
sqlplus /@test_bsift_portal @/home/frms/test.sql
执行完成后通过plsql查询发现存在中文乱码情况
解决方案
解决思路:sql文件指定了utf-8格式,说明数据库使用的格式和sql文件格式不一致
具体执行步骤
检查数据库编码格式
select userenv(‘language’) from dual;
USERENV('LANGUAGE')
结果为:AMERICAN_AMERICA.AL32UTF8
修改linux的NLS_LANG环境变量
进入用户目录下打开.bash_profile文件
添加配置
export NLS_LANG="SIMPLIFIED CHINESE_CHINA".AL32UTF8
source .bash_profile
检查环境变量是否设置生效
$echo $NLS_LANG
结果为:AMERICAN_AMERICA.AL32UTF8
再次执行sql文件,plsql检查,中文乱码已经解决!