我在自己的笔记本上装了个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.
分享到:
相关推荐
标题中的"character_set_client character_set_connection character_set_results"这三个术语是MySQL数据库中关于字符集设置的关键概念。在MySQL中,字符集是用来定义如何存储和显示字符的规则集合,对于跨语言和多...
### 修改Oracle字符集 #### 适用版本与注意事项 本文档主要介绍了如何在Oracle 9i、10g以及XE版本中修改字符集的方法,并且...通过上述步骤,你可以有效地修改Oracle数据库的字符集,同时确保数据的完整性和可用性。
最后,使用`ALTER DATABASE`命令更改数据库的本地字符集为ZHS16GBK(GBK的双字节实现)和国际字符集为AL16UTF16(支持Unicode的字符集)。 2. **处理错误信息**: - 当提示`ORA-12717`时,表示数据库中存在NCLOB、...
更改 MySql 数据库的默认编码格式 ...更改 MySQL 数据库的默认编码格式可以通过修改配置文件、客户端工具和 Web.config 文件中的设置来实现。这将保证我们的应用程序能够正确地读取和写入数据,避免乱码问题的出现。
### Oracle 10g XE 版本更改数据库字符集 在进行Oracle 10g XE数据库的字符集修改时,需要理解几个关键的概念和技术点。本文将详细介绍如何更改Oracle 10g XE数据库的字符集,并提供具体的操作步骤。 #### 一、...
` 或者 `CREATE DATABASE IF NOT EXISTS 数据库名称 CHARACTER SET utf8;` —— 在创建数据库时指定字符集为GBK或UTF-8。 **知识点2:创建表** 创建表是数据库操作中的另一个重要部分。以下是一些创建表的基本命令...
要更改数据库编码,可以使用如下SQL语句: ```sql ALTER DATABASE caitu99 CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; ``` 要更改表的编码,可以使用: ```sql ALTER TABLE TABLE_NAME CONVERT TO ...
1. 修改数据库字符集:alter database 数据库名 character set utf8mb4; 2. 修改表字符集:ALTER TABLE 表名 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 3. 生成所有表修改字符集语句:SELECT TABLE_NAME...
在IT领域,特别是数据库管理与维护方面,修改数据库字符集是一项重要的操作。本文将围绕“修改数据库字符集”这一主题,结合给定的信息——标题、描述、标签以及部分内容,进行详细的知识点阐述。 ### 一、修改...
在使用Oracle数据库的过程中,可能会遇到需要更改数据库字符集的情况。这通常发生在原有字符集不能满足新的业务需求时,例如需要支持更多的语言或特殊字符。Oracle数据库提供了命令行工具来完成这一任务。本文将详细...
针对"Instant Client Light: unsupported server character set CHS16GBK/ZHS16GBK"的解决步骤: 1. **升级Instant Client**:确保你的Oracle Instant Client版本是最新的,因为旧版本可能不支持某些字符集。在本例...
1. **修改服务器配置**:如果不希望服务器忽略客户端的字符集设置,可以取消`skip-character-set-client-handshake`选项。这样,服务器会尊重客户端的字符集设置,但需确保客户端和服务器的字符集配置协调一致,避免...
- 修改现有数据库的字符集:`ALTER DATABASE database_name CHARACTER SET utf8;` #### 3. **设置表的字符集** - 创建新表时指定字符集:`CREATE TABLE table_name (columns) CHARACTER SET utf8;` - 修改现有...
#### 一、修改数据库字符集 在MySQL中,修改数据库的字符集是一项常见的操作,特别是在需要支持多种语言环境时。例如: ```sql ALTER DATABASE jsp CHARACTER SET utf8; ``` 这条命令的作用是将名为“jsp”的数据库...
MySQL 数据库编码修改为 utf8mb4 在 MySQL 数据库中,默认的编码方式为 utf8,但是 utf8 编码只支持最多 3 字节的数据,而 emoji 表情字符是 4 字节的字符。如果直接往采用 utf-8 编码的数据库中插入表情数据,Java...