zoukankan      html  css  js  c++  java
  • 修改Oracle字符集(character set)

    本方法适用于Oracle9i, 10g以及XE. 在10.2.0.1.0下测试无错. 需要注意的是, 使用此方法会破坏数据库中的原有双字节字符. 一种办法是先将数据库导出, 修改完字符集后再导入; 另一种办法就是不管他, 就那样使用. 一般如果是一个测试环境, 像方法二那样就可以了, 但是可能某些表无法读取, 需要注意.
     
    sql> shutdown immediate
    sql> startup mount
    sql> alter system enable restricted session;
    sql> alter system set job_queue_processes=0;
    sql> alter system set aq_tm_processes=0;
    sql> alter database open;
    sql> alter database character set <internal_use> AL32UTF8;
    sql> shutdown immediate
    sql> startup
     
    这里的INTERNAL_USE可选,譬如用于不能从父集转到子集的场合,但是这样做会产生乱码,或者表中的数据不能读取。
     
    如果数据库中存在CLOB字段,那么就不允许对字符集进行转换,此时可以查看alert<sid>.log文件,把含有CLOB的表trancate.
     
    sql> trancate table [table_name];
     
    转换后的数据库字符集可以通过以下命令察看.
     
    sql> select name, value$ from props$ where name like '%NLS%';
     
    导入导出是我们常用的一个数据迁移及转化工具,因其导出文件具有平台无关性,所以在跨平台迁移中,最为常用。

    在导出操作时,非常重要的是客户端的字符集设置,也就是客户端的NLS_LANG设置。
     
    NLS_LANG参数由以下部分组成:
     
    NLS_LANG=<Language>_<Territory>.<Clients Characterset>
     
    NLS_LANG各部分含义如下:
        Language
            -Oracle消息使用的语言 
            -日期中月份和日显示
        Territory 
            -货币和数字格式 
            -地区和计算星期及日期的习惯
        Clients Characterset 
            -控制客户端应用程序使用的字符集
     
    例如
     
    E:\>set NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
    E:\>sqlplus "/ as sysdba"
     
    或者
     
    E:\>set NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
    E:\>sqlplus "/ as sysdba"
     
    Windows客户端设置,可以在注册表中更改NLS_LANG,具体键值位于:
     
    HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMExx\
     
    xx指存在多个ORACLE_HOME时系统编号。
  • 相关阅读:
    Requests 库
    Mac下终端配置(item2 + oh-my-zsh + solarized配色方案)
    中文名文件上传到linux服务器上以后文件名会乱码(openoffice)
    scp
    请求https前缀的网站验证SSL证书的解决方案之一
    jupyter notebook更换主题 步骤详解。
    jupyter nbextensions的 安装
    装饰器的学习 高级版-- 语法糖参数
    装饰器的学习 初级版-- 高阶函数,嵌套函数,闭包
    Python数据可视化的完整版操作指南(建议收藏)
  • 原文地址:https://www.cnblogs.com/weaver1/p/2348726.html
Copyright © 2011-2022 走看看