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

    你可能感兴趣的文章
    Nginx 我们必须知道的那些事
    查看>>
    Nginx 的 proxy_pass 使用简介
    查看>>
    Nginx 的配置文件中的 keepalive 介绍
    查看>>
    Nginx 负载均衡与权重配置解析
    查看>>
    Nginx 负载均衡详解
    查看>>
    nginx 配置 单页面应用的解决方案
    查看>>
    nginx 配置https(一)—— 自签名证书
    查看>>
    nginx 配置~~~本身就是一个静态资源的服务器
    查看>>
    Nginx 配置解析:从基础到高级应用指南
    查看>>
    Nginx下配置codeigniter框架方法
    查看>>
    nginx添加模块与https支持
    查看>>
    Nginx用户认证
    查看>>
    Nginx的Rewrite正则表达式,匹配非某单词
    查看>>
    Nginx的使用总结(一)
    查看>>
    Nginx的可视化神器nginx-gui的下载配置和使用
    查看>>
    Nginx的是什么?干什么用的?
    查看>>
    Nginx访问控制_登陆权限的控制(http_auth_basic_module)
    查看>>
    nginx负载均衡器处理session共享的几种方法(转)
    查看>>
    nginx负载均衡的5种策略(转载)
    查看>>
    nginx负载均衡的五种算法
    查看>>