soundofcolors
  • 一般来说 Oracle 数据库乱码有以下原因

    1. 服务端设置的字符集不支持中文
    2. 客户端设置的字符集不支持中文
    3. 服务端与客户端设置的字符集不一致
  • 解决方案

    1. 查找当前服务端的字符集

      -- 重点查看NLS_LANGUAGE/NLS_TERRITORY两项数据,修改为
      -- NLS_LANGUAGE=SIMPLIFIED CHINESE
      -- NLS_TERRITORY=CHINA
      SELECT * FROM NLS_DATABASE_PARAMETERS;
      
    2. 在 sysdba 的角色下执行以下指令

      SHUTDOWN IMMEDIATE;
      STARTUP MOUNT;
      ALTER SYSTEM ENABLE RESTRICTED SESSION;
      ALTER SYSTEM JOB_QUEUE_PROCESSES=0;
      ALTER SYSTEM SET AQ_TM_PROCESSES=0;
      ALTER DATABASE OPEN;
      ALTER DATABASE CHARACTER SET ZHS16GBK;
      -- 如果上面设置报错,使用下面这条指令
      ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;
      SHUTDOWN IMMEDIATE;
      STARTUP;
      
    3. 查找当前客户端的字符集设置

      -- 重点查看NLS_LANGUAGE/NLS_TERRITORY两项数据,修改为
      -- NLS_LANGUAGE=SIMPLIFIED CHINESE
      -- NLS_TERRITORY=CHINA
      SELECT * FROM NLS_INSTANCE_PARAMETERS;
      
    4. 打开注册表,输入regedit,找到HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb11g_home的NLS_LANG键,使用如下命令将查询出的值填入

      -- SIMPLIFIED CHINESE_CHINA.ZHS16GBK
      SELECT USERENV(\'LANGUAGE\') FROM DUAL;
      
    5. 设置环境变量,在系统变量中添加NLS_LANG变量,填写的值同上

分类:

技术点:

相关文章:

  • 2021-05-29
  • 2022-12-23
  • 2022-12-23
  • 2021-08-21
  • 2021-08-22
  • 2021-12-03
  • 2021-11-30
猜你喜欢
  • 2021-12-15
  • 2021-05-22
  • 2021-05-15
  • 2021-11-30
  • 2021-12-28
  • 2021-12-15
  • 2021-12-15
相关资源
相似解决方案