我在自己的笔记本上装了个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.
分享到:
相关推荐
本方法适用于Oracle9i, 10g以及XE.... 一种办法是先将数据库导出, 修改完字符集后再导入; 另一种办法就是不管他, 就那样使用. 一般如果是一个测试环境, 像方法二那样就可以了, 但是可能某些表无法读取, 需要注意.
[[default] character set 字符集名] [[default] collate 校对规则名] 说明: 若数据库名省略,则表示修改当前数据库;drop database [if exists] 数据库名 说明: []是可选项,代表“如果存在”则删除,对应于创建中...
MySQL数据库常用语句,修改数据库字符集:alter database jsp character set utf-8; 建立数据库并制定数据库字符集:create database jsp character set utf-8; 查看系统的字符集和排序方式:show variables like '...
修改数据库 alter database db_name [character set xxx] [collate xxxx] 4.删除数据库 drop database [if exists] db_name; 5.使用数据库 切换数据库 use db_name; 查看当前使用的数据库 select database...
CREATE DATABASE itcast;创建数据库 SHOW DATABASES;查看数据库 SHOW CREATE DATABASE itcast;查看创建的数据库 ALTER DATABASE itcast DEFAULT CHARACTER SET utf8;修改 DROP DATABASE itcast;删除数据库
1、create schema [数据库名称] default character set utf8 collate utf8_general_ci;--创建数据库 采用create schema和create database创建数据库的效果一样。 2、create user '[用户名称]'@'%' identified by...
4.修改Oracle的编码和操作系统的一样。(参考别人的) 登陆用dba SQL> conn system/hundsun as sysdba; 停掉数据库 SQL>shutdown immediate; 启动数据库到mount状态下 SQL> STARTUP MOUNT; Java代码 ...
注意:更改字符集后要重新建立数据库。 1、在isql状态下查看原来数据库字符集使用情况,服务器和客户端的都要查看,方法是: 获得服务器端的字符集情况: 1>sp_helpsort 2>go 输出结果应为: Character Set =...
设置数据库编码:set names utf8; alter database XXX default character set utf8; Myeclipse部分: *建议创建工程后,在书写代码前先设置编码--》在工程上点右键 proference *在Servlet部分设置两条...
我们用Navacat连接Oracle数据库的时候,会提示ORA-12737:Instant Client Light:unsupported server character set ZHS16GBK
修改数据库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", ...
40100 DEFAULT CHARACTER SET utf8 */ (2)导入项目 sql 文件夹下的 cloud_note.sql 文件。 (3)编辑项目中 src/main/resources/db.properties 文件,修改数据库连接信息: jdbc.driver=com.mysql.jdbc.Driver ...
mysql数据库默认的编码是:Latin1,要想支持中文需要修改为gbk/utf8的编码格式。 1、以root管理员身份查看数据编码格式。 登陆命令:>mysql -u root –p 输入密码后如下命令查看数据编码格式: show variables ...
7.创建一个字符集为gbk的数据库:create database mydb2 character set gbk; 查看: show create database mydb2;1命令行登录mysql:mysql -u 用户名 -p(回车后输入密码) 2。退出;quit/exit. 3.远程登录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...
`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...
create database jiradb character set ‘gb2312′; 创建用户并赋与权限: create user jirauser identified by ‘jira’; grant all privileges on *.* to ‘jirauser’@'%’ identified by ‘jira’ with grant ...
Mysql的utf8编码最多3个字节,而Emoji表情或者某些特殊字符是4个字节。 因此会导致带有表情的昵称...ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin; 以上所述是小编给大家介绍的微信昵称带