博客
关于我
oracle查看字符集后修改oracle服务端和客户端字符集的步骤
阅读量:509 次
发布时间: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/

    你可能感兴趣的文章
    PLC探针有什么用
    查看>>
    PLC接线详解
    查看>>
    PLC数组的使用(西门子)
    查看>>
    Quarzt定时调度任务
    查看>>
    PLC结构体(西门子)
    查看>>
    PLC编程语言ST文本语法的常用数据类型及变量
    查看>>
    PLC通讯方式
    查看>>
    Please install 'webpack-cli' in addition to webpack itself to use the CLI
    查看>>
    Ploly Dash,更新一个Dash应用程序JJJA上的实时人物
    查看>>
    Ploly烛台的定制颜色
    查看>>
    Ploly:如何在Excel中嵌入完全交互的Ploly图形?
    查看>>
    plotloss记录
    查看>>
    Plotly (Python) 子图:填充构面和共享图例
    查看>>
    Plotly 中的行悬停文本
    查看>>
    Plotly 停用 x 轴排序
    查看>>
    Plotly 域变量解释(多图)
    查看>>
    Plotly 绘制表面 3D 未显示
    查看>>
    Plotly-Dash 存在未知问题并创建“加载依赖项时出错“;通过使用 Python-pandas.date_range
    查看>>
    Plotly-Dash:如何过滤具有多个数据框列的仪表板?
    查看>>
    Plotly:如何为 x 轴上的时间序列设置主要刻度线/网格线的值?
    查看>>