`
jiujiubuzui
  • 浏览: 73225 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

(转)oracle xe 手工建立ZHS16GBK字符集数据库

 
阅读更多

oracle xe universal默认创建AL32UTF8字符集,这种字符集1个汉字占用3个字节,而
ZHS16GBK字符集1个汉字占用2个字节,为了节约空间,我尝试改变数据库的字符集,
但是失败了,因为新字符集不是旧字符集的超集。即使用restrict模式也不行。
考虑到oracle xe 安装时只是建一个空库,仅包含系统表空间等,设想通过手工执行
创建ZHS16GBK字符集数据库的办法实现。
从sybex的10g ocp教材中复制并修改得下面语句,其中E:\ORADATA\TEST是我们要存放
新数据库物理文件的目录,以和旧数据库区分。


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复制得到。

2 要去掉EXTENT MANAGEMENT LOCAL语句否则执行出错。(没有找出原因)

CREATE DATABASE XE
*
第 1 行出现错误:
ORA-25146: EXTENT MANAGEMENT ?????

3 test.ora中的db_name不能改变,否则执行出错。(没有找出原因)
ORA-02778: Name given for the log directory is invalid

具体执行步骤(以Windows XP为例)
1在cmd命令行窗口执行 net start oracleservicexe
C:\Documents and Settings\Administrator>net start oracleservicexe
OracleServiceXE 服务正在启动 .........
OracleServiceXE 服务已经启动成功。

2 以sys用户登录
C:\Documents and Settings\Administrator>sqlplus /nolog

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
已连接。
3 查看现有的字符集设置
SQL> set lines 140
SQL> select * from nls_database_parameters;

PARAMETER
------------------------------------------------------------
VALUE
-------------------------------------------------------------------
------------------------------------------------------------
NLS_LANGUAGE
AMERICAN

NLS_TERRITORY
AMERICA

NLS_CURRENCY
$

NLS_ISO_CURRENCY
AMERICA

NLS_NUMERIC_CHARACTERS
.,

NLS_CHARACTERSET
AL32UTF8

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


已选择20行。

SQL> select lengthb('择') from dual;

LENGTHB('择')
-------------
            3

已选择 1 行。

我们可以看到,当前AL32UTF8字符集1个汉字占用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 例程已经启动。

Total System Global Area  285212672 bytes
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 例程已经启动。

Total System Global Area  285212672 bytes
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;

PARAMETER                      VALUE
------------------------------ -------------------------------------------------
-------------------------------
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

已选择20行。

SQL> select lengthb('A') from dual;

LENGTHB('A')
------------
           1

已选择 1 行。

SQL> select lengthb('择') from dual;

LENGTHB('择')
-------------
            2

已选择 1 行。
可见我们新的数据库的确是ZHS16GBK字符集,1个汉字占用2个字节
11 要启动旧数据库(因为新旧数据库同名,而且oracle xe限制同时只能打开一个数据库)
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。

Total System Global Area  285212672 bytes
Fixed Size                  1287016 bytes
Variable Size              96472216 bytes
Database Buffers          184549376 bytes
Redo Buffers                2904064 bytes
数据库装载完毕。
数据库已经打开。

----

如果以后要用spfile自动新建数据库
SQL> create spfile from pfile='D:\oraclexe\app\oracle\product\10.2.0\server\config\scripts\test.ora';

文件已创建。

SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。

Total System Global Area 285212672 bytes
Fixed Size 1287016 bytes
Variable Size 92277912 bytes
Database Buffers 188743680 bytes
Redo Buffers 2904064 bytes
数据库装载完毕。
数据库已经打开。
SQL> select lengthb('择') from dual;

LENGTHB('择')
-------------
2

已选择 1 行。

远程登录,客户端也需要10g
SQL> conn system/sys@//10.6.xx.xx:1521/XE
已连接。
SQL> conn sys/sys@//10.6.xx.xx:1521/XE as sysdba
已连接。

[url]http://www.itpub.net/558697.html[/url]
的问题也算得到了解决

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/l1t/archive/2006/05/31/765125.aspx

分享到:
评论

相关推荐

    BLOG_Oracle_lhr_将US7ASCII字符集的dmp文件导入到ZHS16GBK字符集的数据库中.pdf

    本文将详细介绍如何将使用US7ASCII字符集的dmp文件导入到采用ZHS16GBK字符集的Oracle数据库中,并介绍与之相关的几个关键知识点。 #### 2. 知识点详解 ##### 2.1 导入US7ASCII字符集的dmp文件至ZHS16GBK字符集的...

    ZHS16GBK 中文字符集

    ZHS16GBK 中文字符,用于处理oracle中文乱码

    Oracle11g 字符集 AL32UTF8 修改为ZHS16GBK

    在Oracle11g环境下,可能会遇到需要更改数据库字符集的情况,例如从AL32UTF8修改为ZHS16GBK。这种变更通常发生在需要支持特定语言环境的应用场景中,尤其是当应用主要面向中文用户时,采用ZHS16GBK字符集可以更好地...

    oracle库字符集ZHS16GBK到AL32UTF8的分析研究及方案

    个人工作总结,仅供参考。oracle库字符集ZHS16GBK到AL32UTF8的分析研究及方案,原因是系统使用中支持维文的显示。

    Oracle 字符集详解

    常见的Oracle字符集有AL32UTF8(支持Unicode的UTF-8编码)、WE8ISO8859P1(西欧字符集)、ZHS16GBK(简体中文GB18030编码)等。 六、多语言环境下的字符集配置 在处理多语言数据时,Oracle提供了NLSSORT参数来调整...

    设置环境变量修改Oracle客户端字符集.pdf

    例如,某些地区医保系统使用的Oracle数据库的字符集是ZHS16GBK,而医院信息系统使用的Oracle数据库的字符集是US7ASCII。当两个数据库之间进行数据交换时,需要进行字符集转换,以免数据损坏或转换错误。 二、问题...

    oracleXE字符集改成GBK

     不过Oracle XE目前的beta2缺省安装的字符集是WE8MSWIN1252,不是中文字符集,并且不能通过直接运行 alter database character set ZHS16GBK ; 来修改,因为ZHS16GBK不是缺省字符集的超集。过去流传很广的直接修改...

    修改oracle字符集 将原al32utf8修改为zhs16gbk

    案例:从Linux导出的数据导入到windows环境中发现字符集安装时候忘了修改为zhs16gbk(是原来的al32utf8)。

    oracle 10g xe 版本更改数据库字符集

    在Oracle 10g XE版本中,数据库默认安装时可能会采用一种特定的字符集(如ZHS16GBK),而这种字符集可能并不符合实际业务需求。例如,如果需要支持更多的国际字符或特殊符号,则可能需要将数据库字符集更改为AL32UTF...

    GBK字符集(汉字完整版)

    ### GBK字符集详解 #### 一、GBK字符集简介 **GBK**(GB2312扩展)是一种简体中文编码标准,它是中国国家标准GB2312的扩展版本,支持更多的汉字以及符号。GBK字符集是为了解决GB2312字符集无法覆盖所有汉字的问题而...

    Linux 下修改Oracle 10G的字符集:WE8ISO8859P1 修改为 ZHS16GBK

    通过上述步骤,我们可以在Linux环境下成功地将Oracle 10G数据库的字符集从WE8ISO8859P1更改为ZHS16GBK。这对于支持中文环境下的数据处理具有重要意义,同时也为数据库的国际化提供了支持。需要注意的是,在进行此类...

    ORA-12737 ZHS16GBK 解决方案 oci sqlplus

    这个错误通常表明客户端与服务器之间的字符集不兼容,具体在这个例子中是"Instant Client Light"不支持服务器使用的字符集"CHS16GBK"或"ZHS16GBK"。以下是对这个问题的详细分析和解决方案。 首先,了解"ORA-12737...

    修改数据库字符集修改数据库字符集.doc

    最后,使用`ALTER DATABASE`命令更改数据库的本地字符集为ZHS16GBK(GBK的双字节实现)和国际字符集为AL16UTF16(支持Unicode的字符集)。 2. **处理错误信息**: - 当提示`ORA-12717`时,表示数据库中存在NCLOB、...

    java.sql.SQLException: 不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK

    java.sql.SQLException: 不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK ……

    jdbc连接oracle字符集不同出现乱码

    在本案例中,远程 Oracle 数据库使用的字符集为 `AMERICAN_AMERICA.US7ASCII`,而本地 Oracle 数据库使用的字符集为 `SIMPLIFIED CHINESE_CHINA.ZHS16GBK`。这两种不同的字符集设置会导致数据在传输过程中出现乱码。...

    字符集不同的Oracle数据库间交换数据的解决方法.pdf

    2. 使用Oracle的National Language Support(NLS):Oracle的NLS提供了字符集转换的功能,可以将HIS数据库的US7ASCII字符集转换为医保软件的ZHS16GBK字符集。 3. 使用第三方工具:使用第三方工具,如Oracle的SQL*...

    在不同字符集数据库间导入数据的方法

    本篇文章将重点讨论如何将从一个使用US7ASCII字符集的数据库导出的数据成功导入到一个使用ZHS16GBK字符集的数据库中。 首先,我们需要理解US7ASCII和ZHS16GBK字符集的基本概念。US7ASCII是一种基于ASCII的字符集,...

    oracle数据库字符集 无法修改数据库字符集 乱码

    根据提供的部分内容,可以看出尝试将数据库字符集从WE8ISO8859P1修改为ZHS16GBK的过程。具体步骤如下: 1. **检查当前字符集**:通过执行`SELECT * FROM nls_database_parameters WHERE parameter = 'NLS_...

    oracle修改字符集

    针对这种情况,我们可以按照以下步骤来修改Oracle 11g数据库的字符集,使其更改为ZHS16GBK。 首先,确保你有数据库的系统管理员权限,因为修改字符集需要以SYSDBA身份进行。在Windows环境下,打开命令行窗口(cmd)...

Global site tag (gtag.js) - Google Analytics