前几天在centos7云服务器上装了个oracle,也是第一次安装,虽有些坎坷最终也算搞定了
之前遇到过navicate或者plsql远程登录oracle数据库查询会乱码的问题,所以这次提前做好了准备:
看下数据库的字符编码:
windows环境变量相应设置一下
但是数据导进去之后远程登录查询的时候还是傻眼了:
不管是navicate还是plsql都是这样的结果!
查询单个字段妥妥的
查出整个表就乱码了
谁懂我内心的崩溃吗?
后来找了个查询没问题的数据,两个库对比了一下:
SELECT * FROM NLS_DATABASE_PARAMETERS;
左边是正常库的结果,右边是我的乱码库的结果,只发现了一处不同
好吧只能死马当活马医了,改吧:
sqlplus / as sysdbastartupalter session set sql_trace=true;alter system enable restricted session;alter system set job_queue_processes=0;alter system set aq_tm_processes=0;alter database character set INTERNAL_USE AL32UTF8;update props$ set VALUE$='AL16UTF16' where NAME='NLS_NCHAR_CHARACTERSET';commit;ALTER SYSTEM DISABLE RESTRICTED SESSION;
修改字符集之后重启了数据库(不知道有没有必要但是以防万一我这么做了):
shutdown immediate;startup;
数据库删了重新导数据
oracle账号问题解决了。激动
不过还是不清楚根本原因,查资料说一个是数据库字符集,一个是国家字符集,搞不懂,难道查全表和查字段是两套字符集嘛
如果有大神看到还请指导下