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

    你可能感兴趣的文章
    python 利用pandas读取本地中CSV文件的指定列 列名重命名 并保存回本地
    查看>>
    python 利用pyspark读取HDFS中CSV文件的指定列 列名重命名 并保存回HDFS
    查看>>
    python 利用pyttsx3文字转语音
    查看>>
    python 利用已有Ner模型进行数据清洗合并
    查看>>
    python 到大数据开发工程师_如何成为一个大数据开发工程师?
    查看>>
    python 加密解密(base64, AES)
    查看>>
    Python 包管理器和 Node.js
    查看>>
    Python 单词字母顺序不变且所有倒排
    查看>>
    python 反射机制
    查看>>
    python 启动提示IDLE's subprocess didn't make conne...
    查看>>
    python 命令接口_实现“[命令][操作][参数]”样式的命令行接口?
    查看>>
    Python 和 OpenCV.如何检测图像中的所有(填充)圆形/圆形对象?
    查看>>
    Python 和 RabbitMQ - 聆听来自多个渠道的消费事件的最佳方式?
    查看>>
    python编辑器打不开_关于命令ride.py打不开RF,而是打开pycharm编辑器问题解决思路...
    查看>>
    python编译exe同时支持32位_第三周:同时管理64位和32位版本的Python,并用Pyinstaller打包成exe...
    查看>>
    Python 和Java 哪个更适合做自动化测试?
    查看>>
    Python编程:掌握高级语言程序设计。从零基础到精通,收藏这篇就够了!
    查看>>
    python 图片转ico
    查看>>
    python 图片转文字、语音转文字、文字转语音保存音频并朗读
    查看>>
    python 在包含类似字符\x16、\x12、\x某某的数组中将以\x开头的字符找出来的方法
    查看>>