`
xxwinnie
  • 浏览: 109864 次
  • 性别: Icon_minigender_1
  • 来自: 佛山
社区版块
存档分类
最新评论

修改数据库 Character Set

阅读更多
我在自己的笔记本上装了个Oracle XE (RedHat5),当时已经设置了环境变量 NLS_LANG=american_america.zhs16gbk
但不知为什么数据库启动后它的字符集还却是:american_america.we8mswin1252
我按照这篇文章
http://blog.csdn.net/tianlesoftware/archive/2009/12/01/4915223.aspx
里的 “修改Server端CharacterSet”,但是在执行
ALTER DATABASE CHARACTER SET ZHS16GBK;

时提示
ORA-12712: new character set must be a superset of old character set

后来查了很多资料,可以不理会这这个错误,可以路过超集的检查。
ALTER DATABASE character set INTERNAL_USE ZHS16GBK;


操作过程如下:
SQL> conn /as sysdba
Connected.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

Total System Global Area  236000356 bytes
Fixed Size                   451684 bytes
Variable Size             201326592 bytes
Database Buffers           33554432 bytes
Redo Buffers                 667648 bytes
Database mounted.
SQL> ALTER SESSION SET SQL_TRACE=TRUE;//语句跟踪
System altered.
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;

System altered.

SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;

System altered.

SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;

System altered.

SQL> alter database open;
 
Database altered.

SQL> ALTER DATABASE CHARACTER SET ZHS16GBK;
ALTER DATABASE CHARACTER SET ZHS16GBK
*
ERROR at line 1:
ORA-12712: new character set must be a superset of old character set


提示我们的字符集:新字符集必须为旧字符集的超集,这时我们可以跳过超集的检查做更改:

SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK;

Database altered.

SQL> select * from v$nls_parameters;

PARAMETER                                                        VALUE
---------------------------------------------------------------- ---------------
NLS_LANGUAGE                                                     AMERICAN
NLS_TERRITORY                                                    AMERICA
NLS_CURRENCY                                                     $
NLS_ISO_CURRENCY                                                 AMERICA
NLS_NUMERIC_CHARACTERS                                           .,
NLS_CALENDAR                                                     GREGORIAN
NLS_DATE_FORMAT                                                  DD-MON-RR
NLS_DATE_LANGUAGE                                                AMERICAN
NLS_CHARACTERSET                                                 ZHS16GBK
NLS_SORT                                                         BINARY
NLS_TIME_FORMAT                                                  HH.MI.SSXFF AM

PARAMETER                                                        VALUE
---------------------------------------------------------------- ---------------
NLS_TIMESTAMP_FORMAT                                             DD-MON-RR HH.MI
NLS_TIME_TZ_FORMAT                                               HH.MI.SSXFF AM
NLS_TIMESTAMP_TZ_FORMAT                                          DD-MON-RR HH.MI
NLS_DUAL_CURRENCY                                                $
NLS_NCHAR_CHARACTERSET                                           UTF8
NLS_COMP                                                         BINARY
NLS_LENGTH_SEMANTICS                                             BYTE
NLS_NCHAR_CONV_EXCP                                              FALSE

19 rows selected.


重启检查是否更改完成:

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area  236000356 bytes
Fixed Size                   451684 bytes
Variable Size             201326592 bytes
Database Buffers           33554432 bytes
Redo Buffers                 667648 bytes
Database mounted.
Database opened.
SQL> select * from v$nls_parameters;

PARAMETER                                                        VALUE
---------------------------------------------------------------- ---------------
NLS_LANGUAGE                                                     AMERICAN
NLS_TERRITORY                                                    AMERICA
NLS_CURRENCY                                                     $
NLS_ISO_CURRENCY                                                 AMERICA
NLS_NUMERIC_CHARACTERS                                           .,
NLS_CALENDAR                                                     GREGORIAN
NLS_DATE_FORMAT                                                  DD-MON-RR
NLS_DATE_LANGUAGE                                                AMERICAN
NLS_CHARACTERSET                                                 ZHS16GBK
NLS_SORT                                                         BINARY
NLS_TIME_FORMAT                                                  HH.MI.SSXFF AM

PARAMETER                                                        VALUE
---------------------------------------------------------------- ---------------
NLS_TIMESTAMP_FORMAT                                             DD-MON-RR HH.MI
NLS_TIME_TZ_FORMAT                                               HH.MI.SSXFF AM
NLS_TIMESTAMP_TZ_FORMAT                                          DD-MON-RR HH.MI
NLS_DUAL_CURRENCY                                                $
NLS_NCHAR_CHARACTERSET                                           UTF8
NLS_COMP                                                         BINARY
NLS_LENGTH_SEMANTICS                                             BYTE
NLS_NCHAR_CONV_EXCP                                              FALSE

19 rows selected.




另外,网上的很多文章都有个注意:
引用

在Oracle9i中,如果数据库存在CLOB类型字段,那么就不允许对字符集进行转换

对于不同情况,Oracle提供不同的解决方案,如果是用户数据表,一般我们可以把包含CLOB字段的表导出,然后drop掉相关对象,
转换后再导入数据库;对于系统表,可以按照以下方式处理:
SQL> truncate table Metastylesheet;

 Table truncated. 

分享到:
评论

相关推荐

    修改Oracle字符集(character set)

    本方法适用于Oracle9i, 10g以及XE.... 一种办法是先将数据库导出, 修改完字符集后再导入; 另一种办法就是不管他, 就那样使用. 一般如果是一个测试环境, 像方法二那样就可以了, 但是可能某些表无法读取, 需要注意.

    MySQL数据库:数据库的管理SQL语句.pptx

    [[default] character set 字符集名] [[default] collate 校对规则名] 说明: 若数据库名省略,则表示修改当前数据库;drop database [if exists] 数据库名 说明: []是可选项,代表“如果存在”则删除,对应于创建中...

    MySQL数据库常用语句

    MySQL数据库常用语句,修改数据库字符集:alter database jsp character set utf-8; 建立数据库并制定数据库字符集:create database jsp character set utf-8; 查看系统的字符集和排序方式:show variables like '...

    Mysql和SQL最常用简单详细的笔记(2015整理)

    修改数据库 alter database db_name [character set xxx] [collate xxxx] 4.删除数据库 drop database [if exists] db_name; 5.使用数据库 切换数据库 use db_name; 查看当前使用的数据库 select database...

    数据库.txt

    CREATE DATABASE itcast;创建数据库 SHOW DATABASES;查看数据库 SHOW CREATE DATABASE itcast;查看创建的数据库 ALTER DATABASE itcast DEFAULT CHARACTER SET utf8;修改 DROP DATABASE itcast;删除数据库

    MySQL创建数据库与创建用户以及授权

    1、create schema [数据库名称] default character set utf8 collate utf8_general_ci;--创建数据库  采用create schema和create database创建数据库的效果一样。 2、create user '[用户名称]'@'%' identified by...

    oracle修改字符集

    4.修改Oracle的编码和操作系统的一样。(参考别人的) 登陆用dba SQL> conn system/hundsun as sysdba; 停掉数据库 SQL>shutdown immediate; 启动数据库到mount状态下 SQL> STARTUP MOUNT; Java代码 ...

    更改SYBASE默认字符集为CP936

    注意:更改字符集后要重新建立数据库。 1、在isql状态下查看原来数据库字符集使用情况,服务器和客户端的都要查看,方法是: 获得服务器端的字符集情况: 1>sp_helpsort 2>go 输出结果应为: Character Set =...

    乱码问题解决方案

    设置数据库编码:set names utf8; alter database XXX default character set utf8; Myeclipse部分: *建议创建工程后,在书写代码前先设置编码--》在工程上点右键 proference *在Servlet部分设置两条...

    oci.dll,Navacat连接Oracle数据库的时候ORA-12737

    我们用Navacat连接Oracle数据库的时候,会提示ORA-12737:Instant Client Light:unsupported server character set ZHS16GBK

    mysql修改数据库编码(数据库字符集)和表的字符编码的方法

    修改数据库mysql字符编码为UTF8 步骤1:查看当前的字符编码方法 代码如下:mysql> show variables like’character%’; +————————–+—————————-+ |Variable_name |Value | +————————–+...

    数据库服务器字符集更改步骤

    SQL> alter database character set INTERNAL_USE ZHS16GBK; SQL> shutdown immediate SQL> startup 察看系统字符集 SQL> SELECT * FROM NLS_DATABASE_PARAMETERS; 看NLS_CHARACTERSET的值为多少,如果为ZHS16GBK则...

    校园综合服务平台微信小程序+后台+服务端+数据库,实现快递代取、打印服务、校园跑腿、上门维修、代替服务等多种校园服务

    CREATE SCHEMA `help` DEFAULT CHARACTER SET utf8mb4 ; 2.修改配置文件 路径 pub/config/config.js MYSQL: { host: "localhost", user: "root",//数据库用户名 password: "", //数据库密码 port: "3306", ...

    基于SSM+MySQL搭建的云笔记系统(仿有道云笔记)源码+数据库+项目说明.zip

    40100 DEFAULT CHARACTER SET utf8 */ (2)导入项目 sql 文件夹下的 cloud_note.sql 文件。 (3)编辑项目中 src/main/resources/db.properties 文件,修改数据库连接信息: jdbc.driver=com.mysql.jdbc.Driver ...

    mysql之修改数据库编码格式以支持中文

    mysql数据库默认的编码是:Latin1,要想支持中文需要修改为gbk/utf8的编码格式。 1、以root管理员身份查看数据编码格式。 登陆命令:>mysql -u root –p 输入密码后如下命令查看数据编码格式: show variables ...

    mysql笔记.docx

    7.创建一个字符集为gbk的数据库:create database mydb2 character set gbk; 查看: show create database mydb2;1命令行登录mysql:mysql -u 用户名 -p(回车后输入密码) 2。退出;quit/exit. 3.远程登录mysql:...

    自用mysql自带命令实现数据库备份还原的方法

    首先通过控制台进入mysql mysql -u root -p 12345 CREATE DATABASE `demo` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; use demo;切换数据库 source file.sql 导入数据,这其中file.sql在 mysql的bin...

    springboot-sample.7z

    `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL , `price` decimal(10,2) NULL DEFAULT NULL , `imgUrl` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode...

    JIRA+MYSQL配置

    create database jiradb character set ‘gb2312′; 创建用户并赋与权限: create user jirauser identified by ‘jira’; grant all privileges on *.* to ‘jirauser’@'%’ identified by ‘jira’ with grant ...

    微信昵称带符号导致插入MySQL数据库时出错的解决方案

    Mysql的utf8编码最多3个字节,而Emoji表情或者某些特殊字符是4个字节。 因此会导致带有表情的昵称...ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin; 以上所述是小编给大家介绍的微信昵称带

Global site tag (gtag.js) - Google Analytics