博客
关于我
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/

    你可能感兴趣的文章
    SpringBoot中集成阿里开源缓存访问框架JetCache实现声明式实例和方法缓存
    查看>>
    pom.xml中提示web.xml is missing and <failonmissingw>...
    查看>>
    Pomelo开发中Web客户端开发API简介
    查看>>
    QT教程2:QT5的体系构架
    查看>>
    PON架构(全光网络)
    查看>>
    PoolingHttpClientConnectionManager原理剖析
    查看>>
    QT教程1:ubuntu18.04安装QT5
    查看>>
    POP-一个点击带有放大还原的动画效果
    查看>>
    POP3 协议在计算机网络中的优缺点
    查看>>
    qt批量操作同类型控件
    查看>>
    Portaudio笔记-WASAPI
    查看>>
    position:fixed失效情况
    查看>>
    Qt开发笔记:QGLWidget、QOpenGLWidget详解及区别
    查看>>
    Position属性四个值:static、fixed、absolute和relative的区别和用法
    查看>>
    POSIX thread编程中关于临界区内条件变量的分析
    查看>>
    POSIX与程序可移植性
    查看>>
    posix多线程有感--自旋锁
    查看>>
    SpringBoot中集成海康威视SDK实现布防报警数据上传/交通违章图片上传并在linux上部署(附示例代码资源)
    查看>>
    POSIX标准和XSI扩展
    查看>>
    post install error,please remove node_moules before retry
    查看>>