博客
关于我
oracle查看字符集后修改oracle服务端和客户端字符集的步骤
阅读量:508 次
发布时间:2019-03-07

本文共 1768 字,大约阅读时间需要 5 分钟。

Oracle 数据库字符集修改指南


Oracle 服务器端字符集查询

要查询Oracle数据库当前使用的字符集,可以通过以下方法进行:

  • 简单方法

    运行以下SQL语句:

    SELECT USERENV('language') FROM dual;

    这将返回客户端的语言环境设置。

  • 详细参数查询

    如果需要查看字符集参数,可以执行:

    SQL> SELECT * FROM nls_database_parameters;

    这将显示数据库支持的所有字符集参数及其对应值。

    注意:默认情况下,Oracle数据库字符集为AL32UTF8


  • Oracle 服务器字符集修改

    将数据库字符集更改为新的字符集(例如UTF-8)需要遵循以下步骤:

  • 启动数据库并进入stricted模式

    conn /as sysdba
    • 首先,执行以下命令切换为restricted模式:
    ALTER SYSTEM ENABLE RESTRICTED SESSION;
  • 禁用相关过程-禁用可定制队列和并行执行:

    ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;ALTER SYSTEM SET AQ_TM_PROCESSES=0;
  • 暂停数据库

    shutdown immediate;
  • 启动数据库

    startup mount;
  • 配置字符集

    • 如果字符集不支持重命名或从旧字符集切换,使用INTERNAL_USE参数:
    ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;  -- 或其他目标字符集
  • 恢复数据库

    • 重新启动数据库:
    alter database open;shutdown immediate;startup;
    • 确认字符集更改:
    SELECT * FROM v$nls_parameters;
    • 如果发出错误ORA-12712,请确保新字符集是旧字符集的超集。例如,可以选择AL32UTF8作为中间替代。
  • 执行开关操作

    alter database open;ALTER DATABASE CHARACTER SET 
    <目标字符集>
    ;

  • Oracle 客户端字符集修改

    要在客户端更改字符集,从命令行执行以下步骤:

  • 确认当前语言环境(可以通过运行$echo $NLS_LANG查看)。
  • 编辑用户配置文件
    • /home/oracle/root目录下的.bash_profile文件中添加以下内容:
    export NLS_LANG="AMERICAN_AMERICA.UTF8";
  • 重启终端或SSH会话

  • 修改数据库字符集为UTF-8

    以下是将数据库字符集更改为UTF-8的完整步骤:

  • 以DBA用户登录数据库

  • 执行转换语句

    SHUTDOWN IMMEDIATE;STARTUP MOUNT EXCLUSIVE;ALTER SYSTEM ENABLE RESTRICTED SESSION;
  • 禁用相关过程

    ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;ALTER SYSTEM SET AQ_TM_PROCESSES=0;
  • 打开数据库

    ALTER DATABASE OPEN;
  • 切换字符集

    ALTER DATABASE NATIONAL CHARACTER SET UTF8;  -- 注意:使用`INTERNAL_USE`关键字可能更安全
  • 关闭数据库

    SHUTDOWN IMMEDIATE;
  • 重新启动数据库

    STARTUP;
  • 验证字符集更改

    SELECT * FROM v$nls_parameters;

  • 常见问题与解决方案

  • 错误ORA-12717: CANNOT ALTER DATABASE NATIONAL CHARACTER SET WHEN NCLOBDATAEXISTS

    • 解决方法:使用INTERNAL_USE关键字绕过检查:
      ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE UTF8;
  • 字符集切换失败

    • 确保目标字符集是源字符集的超集,避免冲突。

  • 通过以上步骤,可以安全地更改Oracle数据库和客户端字符集为UTF-8或其他支持字符集。请在正式应用前务必验证字符集兼容性和相关业务流程。

    转载地址:http://tzmjz.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现base64加密和base64解密算法(附完整源码)
    查看>>
    Objective-C实现base85 编码算法(附完整源码)
    查看>>
    Objective-C实现basic graphs基本图算法(附完整源码)
    查看>>
    Objective-C实现BCC校验计算(附完整源码)
    查看>>
    Objective-C实现bead sort珠排序算法(附完整源码)
    查看>>
    Objective-C实现BeadSort珠排序算法(附完整源码)
    查看>>
    Objective-C实现bellman ford贝尔曼福特算法(附完整源码)
    查看>>
    Objective-C实现bellman-ford贝尔曼-福特算法(附完整源码)
    查看>>
    Objective-C实现bellman-ford贝尔曼-福特算法(附完整源码)
    查看>>
    Objective-C实现BellmanFord贝尔曼-福特算法(附完整源码)
    查看>>
    Objective-C实现BF算法 (附完整源码)
    查看>>
    Objective-C实现binary exponentiation二进制幂运算算法(附完整源码)
    查看>>
    Objective-C实现binomial coefficient二项式系数算法(附完整源码)
    查看>>
    Objective-C实现BitMap算法(附完整源码)
    查看>>
    Objective-C实现bogo sort排序算法(附完整源码)
    查看>>
    Objective-C实现CaesarsCiphe凯撒密码算法(附完整源码)
    查看>>
    Objective-C实现cartesianProduct笛卡尔乘积算法(附完整源码)
    查看>>
    Objective-C实现check strong password检查密码强度算法(附完整源码)
    查看>>
    Objective-C实现circle sort圆形排序算法(附完整源码)
    查看>>
    Objective-C实现coulombs law库仑定律算法(附完整源码)
    查看>>