2007年9月15日 随笔档案 |
您所在的位置:网站首页 › r语言nls函数初始值 › 2007年9月15日 随笔档案 |
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 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |