oracle xe universal默认创建AL32UTF8字符集,这种字符集1个汉字占用3个字节,而
ZHS16GBK字符集1个汉字占用2个字节,为了节约空间,我尝试改变数据库的字符集,
但是失败了,因为新字符集不是旧字符集的超集。即使用restrict模式也不行。
考虑到oracle xe 安装时只是建一个空库,仅包含系统表空间等,设想通过手工执行
创建ZHS16GBK字符集数据库的办法实现。
从sybex的10g ocp教材中复制并修改得下面语句,其中E:\ORADATA\TEST是我们要存放
新数据库物理文件的目录,以和旧数据库区分。
2 要去掉EXTENT MANAGEMENT LOCAL语句否则执行出错。(没有找出原因) CREATE DATABASE XE 3 test.ora中的db_name不能改变,否则执行出错。(没有找出原因) 具体执行步骤(以Windows XP为例) 2 以sys用户登录 SQL*Plus: Release 10.2.0.1.0 - Production on 星期二 5月 30 22:07:45 2006 Copyright (c) 1982, 2005, Oracle. All rights reserved. SQL> conn / as sysdba PARAMETER NLS_TERRITORY NLS_CURRENCY NLS_ISO_CURRENCY NLS_NUMERIC_CHARACTERS NLS_CHARACTERSET NLS_CALENDAR NLS_DATE_FORMAT NLS_DATE_LANGUAGE NLS_SORT NLS_TIME_FORMAT NLS_TIMESTAMP_FORMAT NLS_TIME_TZ_FORMAT NLS_TIMESTAMP_TZ_FORMAT NLS_DUAL_CURRENCY NLS_COMP NLS_LENGTH_SEMANTICS NLS_NCHAR_CONV_EXCP NLS_NCHAR_CHARACTERSET NLS_RDBMS_VERSION SQL> select lengthb('择') from dual; LENGTHB('择') 已选择 1 行。 我们可以看到,当前AL32UTF8字符集1个汉字占用3个字节 Total System Global Area 285212672 bytes 数据库已创建。 Total System Global Area 285212672 bytes PARAMETER VALUE 已选择20行。 SQL> select lengthb('A') from dual; LENGTHB('A') 已选择 1 行。 SQL> select lengthb('择') from dual; LENGTHB('择') 已选择 1 行。 Total System Global Area 285212672 bytes ---- 如果以后要用spfile自动新建数据库 文件已创建。 SQL> shutdown immediate; Total System Global Area 285212672 bytes LENGTHB('择') 已选择 1 行。 远程登录,客户端也需要10g [url]http://www.itpub.net/558697.html[/url]
CREATE DATABASE XE
CONTROLFILE REUSE
LOGFILE
GROUP 1 'E:\ORADATA\TEST\REDO01.LOG' SIZE 10M,
GROUP 2 'E:\ORADATA\TEST\REDO02.LOG' SIZE 10M,
GROUP 3 'E:\ORADATA\TEST\REDO03.LOG' SIZE 10M
DATAFILE 'E:\ORADATA\TEST\SYSTEM01.DBF' SIZE 400M
AUTOEXTEND ON NEXT 50M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL
SYSAUX DATAFILE 'E:\ORADATA\TEST\SYSAUX01.DBF' SIZE 250M
AUTOEXTEND ON NEXT 50M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL
DEFAULT TEMPORARY TABLESPACE temp
TEMPFILE 'E:\ORADATA\TEST\TEMP01.DBF' SIZE 100M
AUTOEXTEND ON NEXT 100M MAXSIZE 8000M
UNDO TABLESPACE undo
DATAFILE 'E:\ORADATA\TEST\undo01.DBF' SIZE 200M
AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL
CHARACTER SET ZHS16GBK
NATIONAL CHARACTER SET AL16UTF16
USER SYS IDENTIFIED BY SYS
USER SYSTEM IDENTIFIED BY SYS
;
在执行这个脚本以前,有3点要注意:
1 要修改F:\oraclexe\app\oracle\product\10.2.0\server\config\scripts\init.ora'
到
F:\oraclexe\app\oracle\product\10.2.0\server\config\scripts\test.ora'
把所有路径改成E:\ORADATA\TEST及其子目录,为此我们需要在E:\ORADATA\TEST下建立
bdump等目录,这些目录可以从现有的XE数据库F:\oraclexe\app\oracle\admin\XE复制得到。
*
第 1 行出现错误:
ORA-25146: EXTENT MANAGEMENT ?????
ORA-02778: Name given for the log directory is invalid
1在cmd命令行窗口执行 net start oracleservicexe
C:\Documents and Settings\Administrator>net start oracleservicexe
OracleServiceXE 服务正在启动 .........
OracleServiceXE 服务已经启动成功。
C:\Documents and Settings\Administrator>sqlplus /nolog
已连接。
3 查看现有的字符集设置
SQL> set lines 140
SQL> select * from nls_database_parameters;
------------------------------------------------------------
VALUE
-------------------------------------------------------------------
------------------------------------------------------------
NLS_LANGUAGE
AMERICAN
AMERICA
$
AMERICA
.,
AL32UTF8
GREGORIAN
DD-MON-RR
AMERICAN
BINARY
HH.MI.SSXFF AM
DD-MON-RR HH.MI.SSXFF AM
HH.MI.SSXFF AM TZR
DD-MON-RR HH.MI.SSXFF AM TZR
$
BINARY
BYTE
FALSE
AL16UTF16
10.2.0.1.0
已选择20行。
-------------
3
4 关闭数据库,但不停止服务
QL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
5 用修改过的pfile test.ora启动数据库(nomount)
SQL> startup nomount pfile='F:\oraclexe\app\oracle\product\10.2.0\server\config\scripts\test.ora'
ORACLE 例程已经启动。
Fixed Size 1287016 bytes
Variable Size 92277912 bytes
Database Buffers 188743680 bytes
Redo Buffers 2904064 bytes
6 执行建立数据库脚本
SQL> CREATE DATABASE XE
2 CONTROLFILE REUSE
3 LOGFILE
4 GROUP 1 'E:\ORADATA\TEST\REDO01.LOG' SIZE 10M,
5 GROUP 2 'E:\ORADATA\TEST\REDO02.LOG' SIZE 10M,
6 GROUP 3 'E:\ORADATA\TEST\REDO03.LOG' SIZE 10M
7 DATAFILE 'E:\ORADATA\TEST\SYSTEM01.DBF' SIZE 400M
8 AUTOEXTEND ON NEXT 50M MAXSIZE UNLIMITED
9 SYSAUX DATAFILE 'E:\ORADATA\TEST\SYSAUX01.DBF' SIZE 250M
10 AUTOEXTEND ON NEXT 50M MAXSIZE UNLIMITED
11 DEFAULT TEMPORARY TABLESPACE temp
12 TEMPFILE 'E:\ORADATA\TEST\TEMP01.DBF' SIZE 100M
13 AUTOEXTEND ON NEXT 100M MAXSIZE 8000M
14 UNDO TABLESPACE undo
15 DATAFILE 'E:\ORADATA\TEST\undo01.DBF' SIZE 200M
16 AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED
17 CHARACTER SET ZHS16GBK
18 NATIONAL CHARACTER SET AL16UTF16
19 USER SYS IDENTIFIED BY SYS
20 USER SYSTEM IDENTIFIED BY SYS
21 ;
7 执行创建数据字典和程序包的系统SQL脚本
@F:\oraclexe\app\oracle\product\10.2.0\server\RDBMS\ADMIN\catalog.sql
@F:\oraclexe\app\oracle\product\10.2.0\server\RDBMS\ADMIN\catproc.sql
大约需要10几分钟
8 关闭数据库,但不停止服务
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
9 用修改过的pfile test.ora启动数据库
SQL> startup pfile='F:\oraclexe\app\oracle\product\10.2.0\server\config\scripts\test.ora'
ORACLE 例程已经启动。
Fixed Size 1287016 bytes
Variable Size 92277912 bytes
Database Buffers 188743680 bytes
Redo Buffers 2904064 bytes
数据库装载完毕。
数据库已经打开。
10 查看新建数据库的字符集设置
SQL> set lines 140
SQL> select * from nls_database_parameters;
------------------------------ -------------------------------------------------
-------------------------------
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_CHARACTERSET ZHS16GBK
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY $
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_RDBMS_VERSION 10.2.0.1.0
------------
1
-------------
2
可见我们新的数据库的确是ZHS16GBK字符集,1个汉字占用2个字节
11 要启动旧数据库(因为新旧数据库同名,而且oracle xe限制同时只能打开一个数据库)
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
Fixed Size 1287016 bytes
Variable Size 96472216 bytes
Database Buffers 184549376 bytes
Redo Buffers 2904064 bytes
数据库装载完毕。
数据库已经打开。
SQL> create spfile from pfile='D:\oraclexe\app\oracle\product\10.2.0\server\config\scripts\test.ora';
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
Fixed Size 1287016 bytes
Variable Size 92277912 bytes
Database Buffers 188743680 bytes
Redo Buffers 2904064 bytes
数据库装载完毕。
数据库已经打开。
SQL> select lengthb('择') from dual;
-------------
2
SQL> conn system/sys@//10.6.xx.xx:1521/XE
已连接。
SQL> conn sys/sys@//10.6.xx.xx:1521/XE as sysdba
已连接。
的问题也算得到了解决
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/l1t/archive/2006/05/31/765125.aspx
发表评论
-
Oracle PL/SQL入门之慨述
2007-09-26 19:18 538一、PL/SQL出现的目的 结构化查询语言(Struct ... -
[Oracle] Sequence简单介绍
2008-10-23 10:04 622Oracle中提供了sequence对象,由系统提供自增长的序 ... -
Oracle服务
2008-12-24 14:03 565Windows下常见Oracle服务介绍: (1)Orac ... -
oracle数据库配置
2008-12-25 11:05 516在文件 tnsnames.ora 下增加GFS = (D ... -
ORACLE 同义词(Synonyms和DBLinks)
2009-02-17 16:10 700数据库中 用户a 访问 用户b 中表t_depart ... -
oracle 匿名存储过程插入大量测试数据
2009-02-26 20:16 604declare i integer; begi ... -
小数点前的0的显示问题
2009-03-16 17:06 921在处理数据时发现一个问题,Oracle对于小于1的小数, ... -
有关oracle 9i中的内连接,左外连接,右外连接问题
2009-03-24 14:41 618有关oracle 9i中的内连接,左外连接,右外连接问题 ... -
Oracle中的外连接
2009-03-25 17:31 540关联的两张表,当数据少的那张要在数据多的那张表字段里,显 ... -
添加表注释和字段注释
2009-03-31 17:31 706create table test(name varchar2 ... -
oracle锁机制
2009-06-02 16:08 572设立封锁机制主要是为了对并发操作进行控制,对干扰进行封锁,保证 ... -
developing with oracle: oracle文件类型
2009-06-08 16:36 6431. 参数文件(parameter file, *.ora) ... -
Oracle的悲观锁和乐观锁
2009-08-18 09:31 610关键字: oracle的悲观锁 ... -
Oracle Hint
2009-09-15 16:11 660在SQL语句优化过程中,经常会用到hint, 以下是在SQ ... -
Oracle 系统表大全
2009-12-22 15:56 666数据字典dict总是属于Oracle用户sys ... -
Oracle 分析函数的使用
2012-03-04 16:53 669Oracle 分析函数使用介绍 分析函数是oracle81 ...
相关推荐
本文将详细介绍如何将使用US7ASCII字符集的dmp文件导入到采用ZHS16GBK字符集的Oracle数据库中,并介绍与之相关的几个关键知识点。 #### 2. 知识点详解 ##### 2.1 导入US7ASCII字符集的dmp文件至ZHS16GBK字符集的...
ZHS16GBK 中文字符,用于处理oracle中文乱码
在Oracle11g环境下,可能会遇到需要更改数据库字符集的情况,例如从AL32UTF8修改为ZHS16GBK。这种变更通常发生在需要支持特定语言环境的应用场景中,尤其是当应用主要面向中文用户时,采用ZHS16GBK字符集可以更好地...
个人工作总结,仅供参考。oracle库字符集ZHS16GBK到AL32UTF8的分析研究及方案,原因是系统使用中支持维文的显示。
常见的Oracle字符集有AL32UTF8(支持Unicode的UTF-8编码)、WE8ISO8859P1(西欧字符集)、ZHS16GBK(简体中文GB18030编码)等。 六、多语言环境下的字符集配置 在处理多语言数据时,Oracle提供了NLSSORT参数来调整...
例如,某些地区医保系统使用的Oracle数据库的字符集是ZHS16GBK,而医院信息系统使用的Oracle数据库的字符集是US7ASCII。当两个数据库之间进行数据交换时,需要进行字符集转换,以免数据损坏或转换错误。 二、问题...
不过Oracle XE目前的beta2缺省安装的字符集是WE8MSWIN1252,不是中文字符集,并且不能通过直接运行 alter database character set ZHS16GBK ; 来修改,因为ZHS16GBK不是缺省字符集的超集。过去流传很广的直接修改...
案例:从Linux导出的数据导入到windows环境中发现字符集安装时候忘了修改为zhs16gbk(是原来的al32utf8)。
在Oracle 10g XE版本中,数据库默认安装时可能会采用一种特定的字符集(如ZHS16GBK),而这种字符集可能并不符合实际业务需求。例如,如果需要支持更多的国际字符或特殊符号,则可能需要将数据库字符集更改为AL32UTF...
### GBK字符集详解 #### 一、GBK字符集简介 **GBK**(GB2312扩展)是一种简体中文编码标准,它是中国国家标准GB2312的扩展版本,支持更多的汉字以及符号。GBK字符集是为了解决GB2312字符集无法覆盖所有汉字的问题而...
通过上述步骤,我们可以在Linux环境下成功地将Oracle 10G数据库的字符集从WE8ISO8859P1更改为ZHS16GBK。这对于支持中文环境下的数据处理具有重要意义,同时也为数据库的国际化提供了支持。需要注意的是,在进行此类...
这个错误通常表明客户端与服务器之间的字符集不兼容,具体在这个例子中是"Instant Client Light"不支持服务器使用的字符集"CHS16GBK"或"ZHS16GBK"。以下是对这个问题的详细分析和解决方案。 首先,了解"ORA-12737...
最后,使用`ALTER DATABASE`命令更改数据库的本地字符集为ZHS16GBK(GBK的双字节实现)和国际字符集为AL16UTF16(支持Unicode的字符集)。 2. **处理错误信息**: - 当提示`ORA-12717`时,表示数据库中存在NCLOB、...
java.sql.SQLException: 不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK ……
在本案例中,远程 Oracle 数据库使用的字符集为 `AMERICAN_AMERICA.US7ASCII`,而本地 Oracle 数据库使用的字符集为 `SIMPLIFIED CHINESE_CHINA.ZHS16GBK`。这两种不同的字符集设置会导致数据在传输过程中出现乱码。...
2. 使用Oracle的National Language Support(NLS):Oracle的NLS提供了字符集转换的功能,可以将HIS数据库的US7ASCII字符集转换为医保软件的ZHS16GBK字符集。 3. 使用第三方工具:使用第三方工具,如Oracle的SQL*...
本篇文章将重点讨论如何将从一个使用US7ASCII字符集的数据库导出的数据成功导入到一个使用ZHS16GBK字符集的数据库中。 首先,我们需要理解US7ASCII和ZHS16GBK字符集的基本概念。US7ASCII是一种基于ASCII的字符集,...
根据提供的部分内容,可以看出尝试将数据库字符集从WE8ISO8859P1修改为ZHS16GBK的过程。具体步骤如下: 1. **检查当前字符集**:通过执行`SELECT * FROM nls_database_parameters WHERE parameter = 'NLS_...
针对这种情况,我们可以按照以下步骤来修改Oracle 11g数据库的字符集,使其更改为ZHS16GBK。 首先,确保你有数据库的系统管理员权限,因为修改字符集需要以SYSDBA身份进行。在Windows环境下,打开命令行窗口(cmd)...