oracle数据库总结(十八)--修改oracle数据库编码格式

 

目录

1说明

2oracle客户端编码格式

   2.1查询客户端编码格式

   2.2修改客户端编码格式

 3oracle服务端编码格式

     3.1查看编码格式

      3.2修改编码格式

4补充


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编码格式:暂不理解该做法。但上面语句时亲自测试过的

oracle数据库总结(十八)--修改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补充

见附件。