目录
1说明
1:本文部分内容来自:https://www.cnblogs.com/jpfss/p/11164896.html
2:本文中未特别说明环境都为linux,如是Windows类似。因只是记录工作过程中亲测的语句,方便以后回忆,自己电脑上并未有环境来附带截图来对语句进行详细说明。。。。抱歉
3: 在linux环境中创建了一个用户名为oracle的用户,该oracle服务端和客户端都安装在该用户下。
4:oracle数据编码格式分为oracle客户端编码格式与oracle服务端编码格式 ,客户端可单独安装在另外一台不相关的linux或者Windows系统上;安装oracle服务端时会自动安装oracle客户端。
5:默认当前oracle客户端编码格式都为ZHS16GBK。而java web项目中的代码都是需要utf-8格式。现将oracle数据编码格式改为
AL32UTF8。
6:修改编码格式对业务和原有数据有影响请慎重啊,小老弟
2oracle客户端编码格式
2.1查询客户端编码格式
使用root用户切换到oracle用户
su - oracle
查看当前客户端编码格式
env|grep NLS
有些博客使用该方法查看oracle编码格式:暂不理解该做法。但上面语句时亲自测试过的
2.2修改客户端编码格式
vi .profile 即修改文件中的变量名中带有NLS关键字的变量值,为AL32UTF8。
source .profile 是修改配置生效。
退出oracle用户再查询一次客户端编码格式是否有变化。
已亲测。
3oracle服务端编码格式
3.1查看编码格式
使用root用户切到oracle用户。使用syadba用户登录oracle
sqlplus / as sysdba
查询编码格式
select * from nls_database_parameters where parameter ='NLS_CHARACTERSET';
3.2修改编码格式
-
使用root用户切到oracle用户。使用syadba用户登录oracle
sqlplus / as sysdba
- 关闭数据库
shutdown immediate;
- 以mount打来数据库,
startup mount
-
设置session(主要是关闭当前seesion回话,即在变更数据库编码格式时不允许其他用户操作数据库)
- SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;
- SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
- SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;
-
启动数据库
- alter database open;
-
修改字符集
- ALTER DATABASE character set INTERNAL_USE AL32UTF8;
-
关闭,重新启动
- SQL>shutdown immediate;
- SQL> startup
4补充