(转)oracle xe 手工建立ZHS16GBK字符集数据库
- 博客分类:
- Oracle随想
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 551一、PL/SQL出现的目的 结构化查询语言(Struct ... -
[Oracle] Sequence简单介绍
2008-10-23 10:04 638Oracle中提供了sequence对象,由系统提供自增长的序 ... -
Oracle服务
2008-12-24 14:03 585Windows下常见Oracle服务介绍: (1)Orac ... -
oracle数据库配置
2008-12-25 11:05 534在文件 tnsnames.ora 下增加GFS = (D ... -
ORACLE 同义词(Synonyms和DBLinks)
2009-02-17 16:10 722数据库中 用户a 访问 用户b 中表t_depart ... -
oracle 匿名存储过程插入大量测试数据
2009-02-26 20:16 642declare i integer; begi ... -
小数点前的0的显示问题
2009-03-16 17:06 949在处理数据时发现一个问题,Oracle对于小于1的小数, ... -
有关oracle 9i中的内连接,左外连接,右外连接问题
2009-03-24 14:41 641有关oracle 9i中的内连接,左外连接,右外连接问题 ... -
Oracle中的外连接
2009-03-25 17:31 549关联的两张表,当数据少的那张要在数据多的那张表字段里,显 ... -
添加表注释和字段注释
2009-03-31 17:31 729create table test(name varchar2 ... -
oracle锁机制
2009-06-02 16:08 588设立封锁机制主要是为了对并发操作进行控制,对干扰进行封锁,保证 ... -
developing with oracle: oracle文件类型
2009-06-08 16:36 6511. 参数文件(parameter file, *.ora) ... -
Oracle的悲观锁和乐观锁
2009-08-18 09:31 626关键字: oracle的悲观锁 ... -
Oracle Hint
2009-09-15 16:11 680在SQL语句优化过程中,经常会用到hint, 以下是在SQ ... -
Oracle 系统表大全
2009-12-22 15:56 687数据字典dict总是属于Oracle用户sys ... -
Oracle 分析函数的使用
2012-03-04 16:53 678Oracle 分析函数使用介绍 分析函数是oracle81 ...
相关推荐
不过Oracle XE目前的beta2缺省安装的字符集是WE8MSWIN1252,不是中文字符集,并且不能通过直接运行 alter database character set ZHS16GBK ; 来修改,因为ZHS16GBK不是缺省字符集的超集。过去流传很广的直接修改...
在Oracle 10g XE版本中,数据库默认安装时可能会采用一种特定的字符集(如ZHS16GBK),而这种字符集可能并不符合实际业务需求。例如,如果需要支持更多的国际字符或特殊符号,则可能需要将数据库字符集更改为AL32UTF...
- 更改数据库内部使用的字符集为`ZHS16GBK`,这是一种支持中文的字符集。 ```sql alter database characterset internal_use ZHS16GBK; ``` 9. **再次关闭数据库**: - 关闭数据库以便于应用新的设置。 ```...
本文档主要介绍了如何在Oracle 9i、10g以及XE版本中修改字符集的方法,并且在10.2.0.1.0版本下进行了成功的测试。需要注意的是,在执行字符集转换的过程中可能会导致数据库中原本存在的双字节字符出现问题或损坏。...
- 设置NLS_LANG为AMERICAN_AMERICA.ZHS16GBK,定义字符集和区域设置。 - 指定TNS_ADMIN为D:\oracleclient\network\admin,以便系统能读取tnsnames.ora文件。 #### 步骤五:配置PL/SQL Developer 最后,调整PL/SQL ...
总结来说,不安装完整Oracle客户端,仅使用绿色版Instant Client和PL/SQL Developer,通过正确配置tnsnames.ora、环境变量以及字符集,即可实现远程连接Oracle数据库。这种方法既节省了磁盘空间,也简化了安装流程,...
原键值为 `"SIMPLIFIEDCHINESE_CHINA.ZHS16GBK"`,表示当前的语言环境为中文简体,字符集为ZHS16GBK。为了将其更改为英文环境,需将键值修改为 `"AMERICAN_AMERICA.US7ASCII"`。 ### 注意事项 - **备份注册表**:...