热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

Oracle10g更改数据库字符集

Oracle10g更改数据库字符集一、软件环境1)oracle10g二、问题描述Oracle数据库中文字符出现乱码,所以的中文字符显示’?’符号三、原因分析Oracle的字符集有互相的包容关系。如us7asc...SyntaxHighlig

Oracle10g更改数据库字符集
 
一、软件环境
     1)oracle 10g
二、问题描述
      Oracle数据库中文字符出现乱码,所以的中文字符显示’?’符号
三、原因分析
     Oracle的字符集有互相的包容关系。如us7ascii就是zhs16gbk的子集,从us7ascii到zhs16gbk不会有数据解释上的问题,不会有数据丢失。在所有的字符集中utf8应该是最大,因为它基于unicode,双字节保存字符(也因此在存储空间上占用更多)。
 
     一旦数据库创建后,数据库的字符集理论上讲是不能改变的。因此,在设计和安装之初考虑使用哪一种字符集十分重要。根据Oracle的官方说明,字符集的转换是从子集到超集受支持,反之不行。如果两种字符集之间根本没有子集和超集的关系,那么字符集的转换是不受oracle支持的。对数据库server而言,错误的修改字符集将会导致很多不可测的后果,可能会严重影响数据库的正常运行,所以在修改之前一定要确认两种字符集是否存在子集和超集的关系。一般来说,除非万不得已,我们不建议修改oracle数据库。
 
四、解决方案
    需要修改数据库字符集为'us7ascii'。
    查看数据库当前数据集有两种方式:
      a).select name,value$ from props$ where name like '%NLS%',其中NLS_CHARACTERSET所对应的为当前数据库的字符集;  www.2cto.com  
      b).select userenv('language') from dual;
 
    1.常规方案修改数据库字符集
      1).以管理员身份登录:conn  sys/xxx  as sysdba,或者conn  /  as sysdba;
      2).关闭数据库:shutdown immediate;
      3).以mount方式开启数据库:startup mount
      4).限制其它用户连接数据库使用资源: alter system enable restricted session;
 
      5).查看系统当前的进程(最大连接数):show parameter processes;
      6).设置job_queue_processes=0杀掉CJQ0及相应job进程: alter system set job_queue_processes=0;
      7).修改参数alter system set aq_tm_processes=0;
      8).更改数据库为open方式:alter database open;
      9).更改字符集:alter database character set us7ascii;
      a).*在这里,如果当前数据库的字符集是系统字符集us7asci的超集,更改不会出问题;如果不是,将会提示:
     ORA-12712: 新字符集必须为旧字符集的超集
 
     b).*如果数据库数据有CLOB类型,系统将会提示:
     ORA-12716: Cannot ALTER DATABASE CHARACTER SET when CLOB data exists
    2.使用INTERNAL_USE跳过超集检测
    针对以上的错误a)的解决方案:
      10).ALTER DATABASE character set INTERNAL_USE us7ascii;--跳过超集检查
    3.使用internal_convert转换含有CLOB字段的表
 
   针对以上的错误b)的解决方案:
  10).截断表truncate table Metastylesheet;
  11).alter database character set internal_convert zhs16gbk;-- ORACLE会自动转换含有CLOB  www.2cto.com  
  12).因为前面清空了SYS.METASTYLESHEET表,需要重新创建
       9.2通过@?/rdbms/admin/catmet.sql创建;
          10g中没有catmet.sql这个脚本,通过运行catmeta.sql脚本来重建
          @?/rdbms/admin/catmeta.sql
          (注意这个地方有待商榷,不确定,最好不要使用这种方法修改)
 
    4.完成方案a)和b)后再做如下步骤:
  1).查看当前字符集,确认是否正确修改;
  2).解除限制其它用户连接数据库使用资源: alter system disable restricted session;
  3).最好也也设置一下set NLS_LANG
  4).关闭数据库再打开;
 
*以上内容通过参考整理而来,已经通过实践验证!
 

推荐阅读
  • 本文介绍了如何在C#应用程序中有效隐藏SQLCMD命令行窗口,确保程序运行时不会弹出黑色命令提示符窗口。 ... [详细]
  • 本文介绍了一种适用于小型创业公司的小规模每日数据备份及健康检查的自动化解决方案。通过简单的Shell脚本实现本地数据库的每日全量备份,并将备份文件上传至中心备份服务器。同时,编写了自动检测脚本来确保备份的完整性和及时性,一旦发现异常,会通过邮件和短信通知相关人员。 ... [详细]
  • 本文介绍如何在SQL Server中创建动态SQL存储过程,并提供详细的代码实例和解释。通过这种方式,可以更灵活地处理查询条件和参数。 ... [详细]
  • 在成功安装和测试MySQL及Apache之后,接下来的步骤是安装PHP。为了确保安全性和配置的一致性,建议在安装PHP前先停止MySQL和Apache服务,并将MySQL集成到PHP中。 ... [详细]
  • 本文探讨了使用C#在SQL Server和Access数据库中批量插入多条数据的性能差异。通过具体代码示例,详细分析了两种数据库的执行效率,并提供了优化建议。 ... [详细]
  • 方法:1 配置数据库basediros.path.abspath(os.path.dirname(__file__))  #获取当前文件的绝对路径appFlask(__name__ ... [详细]
  • Netflix利用Druid实现高效实时数据分析
    本文探讨了全球领先的在线娱乐公司Netflix如何通过采用Apache Druid,实现了高效的数据采集、处理和实时分析,从而显著提升了用户体验和业务决策的准确性。文章详细介绍了Netflix在系统架构、数据摄取、管理和查询方面的实践,并展示了Druid在大规模数据处理中的卓越性能。 ... [详细]
  • 本文介绍了一个SQL Server自定义函数,用于从字符串中提取仅包含数字和小数点的子串。该函数通过循环删除非数字字符来实现,并附带创建测试表、存储过程以演示其应用。 ... [详细]
  • 本文介绍了如何利用 Spring Boot 和 Groovy 构建一个灵活且可扩展的动态计算引擎,以满足钱包应用中类似余额宝功能的推广需求。我们将探讨不同的设计方案,并最终选择最适合的技术栈来实现这一目标。 ... [详细]
  • 本文介绍如何从包含多个记录的会员表中,筛选出同时拥有BookID为10和14的会员。通过SQL查询语句,可以有效地获取符合条件的MemberID。 ... [详细]
  • 在进行QT交叉编译时,可能会遇到与目标架构不匹配的宏定义问题。例如,当为ARM或MIPS架构编译时,需要确保使用正确的宏(如QT_ARCH_ARM或QT_ARCH_MIPS),而不是默认的QT_ARCH_I386。本文将详细介绍如何正确配置编译环境以避免此类错误。 ... [详细]
  • 本文介绍了数据库体系的基础知识,涵盖关系型数据库(如MySQL)和非关系型数据库(如MongoDB)的基本操作及高级功能。通过三个阶段的学习路径——基础、优化和部署,帮助读者全面掌握数据库的使用和管理。 ... [详细]
  • 本文介绍 SQL Server 的基本概念和操作,涵盖系统数据库、常用数据类型、表的创建及增删改查等基础操作。通过实例帮助读者快速上手 SQL Server 数据库管理。 ... [详细]
  • 本文详细探讨了 org.apache.hadoop.ha.HAServiceTarget 类中的 checkFencingConfigured 方法,包括其功能、应用场景及代码示例。通过实际代码片段,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 福克斯新闻数据库配置失误导致1300万条敏感记录泄露
    由于数据库配置错误,福克斯新闻暴露了一个58GB的未受保护数据库,其中包含约1300万条网络内容管理记录。任何互联网用户都可以访问这些数据,引发了严重的安全风险。 ... [详细]
author-avatar
文love杨阳_848
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有