oracle10g数据库字符集,ORACLE10g数据库字符集转换问题--一次失败经历

问题:

数据库的字符集被修改过,由zhs16gbk被修改为US7ASCII,以至于现在不能正确显示中文,以下过程是将字符集修改回来。

select '你好' from dual;

'??'

----

??

另,字符集查询语句:

SELECT NAME,VALUE$ FROM SYS.PROPS$ WHERE NAME LIKE '%NLS%';

SELECT * FROM V$NLS_PARAMETERS;

环境:

select *from v$version;

BANNER

--------------------------------------------------------------------

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod

PL/SQL Release 10.2.0.1.0 - Production

CORE    10.2.0.1.0      Production

TNS for 32-bit Windows: Version 10.2.0.1.0 - Production

NLSRTL Version 10.2.0.1.0 - Production

理论依据:

--从ORACLE DOC中查询到如下内容:

To change the database character set, perform the following steps:

Shut down the database, using either a SHUTDOWN IMMEDIATE or a SHUTDOWN NORMAL statement.

Do a full backup of the database, because the CSALTER script cannot be rolled back.

Start up the database.

Run the Database Character Set Scanner utility.

CSSCAN /AS SYSDBA FULL=Y...

Run the CSALTER script.

@@CSALTER.PLB

SHUTDOWN IMMEDIATE; -- or SHUTDOWN NORMAL;

STARTUP;

参考:

实验:

1 shutdown;

SQL> shutdown immediate

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

2 因为是自己的测试库,就不做Full Backup了;

3 使用CSSCAN检查字符集的转换会不会导致数据丢失

CSSCAN \"sys/orcl@orcl10 AS SYSDBA\" FULL=Y TOCHAR=zhs16gbk ARRAY=102400 PROCESS=3

D:\WORK_SOFT\app\product\10.2.0\db_1\BIN>CSSCAN \"sys/orcl@orcl10 AS SYSDBA\" FULL=Y FULL=y TOCHAR=zhs16gbk ARRAY=102400 PROCESS=3

Character Set Scanner v2.1 : Release 10.2.0.0.0 - Production on 星期六 1月 2 11:03:15 2010

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, OLAP and Data Mining options

CSS-00107: Character set migration utility schema not installed

Scanner terminated unsuccessfully.

* 遇到问题

解决方式:创建相关数据字典

@$Oracle_home\rdbms\admin\csminst.sql

继续:

CSSCAN system/orcl FULL=y TOCHAR=zhs16gbk ARRAY=102400 PROCESS=3

在执行目录下(比如本实验:D:\WORK_SOFT\app\product\10.2.0\db_1\BIN>)生成scan.txt scan.err scan.out三个文件,可以检查字符集的转换是否会带来问题。

@@CSALTER.PLB

@D:\WORK_SOFT\app\product\10.2.0\db_1\rdbms\admin\csalter.plb

SQL> @D:\WORK_SOFT\app\product\10.2.0\db_1\rdbms\admin\csalter.plb

已创建0行。

函数已创建。

函数已创建。

过程已创建。

This script will update the content of the Oracle Data Dictionary.

Please ensure you have a full backup before initiating this procedure.

Would you like to proceed (Y/N)?y

原值    6:     if (UPPER('&conf') <> 'Y') then

新值    6:     if (UPPER('y') <> 'Y') then

Checking data validility...

Exceptional data found in scanner result

PL/SQL 过程已成功完成。

Checking or Converting phrase did not finish successfully

No database (national) character set will be altered

CSALTER finished unsuccessfully.

PL/SQL 过程已成功完成。

已删除0行。

函数已删除。

函数已删除。

过程已删除。

注:可以从执行过程看出,该字符集转换过程没有执行成功,从原因看是由于CSSCAN检查出的一些转换所造成的数据丢失问题。

结论:

自己的这个实验没有成功,目前自己不知道如何解决那些BLOB字段(多数是SYSMAN中的表)。

先不在此问题上纠缠,决定重建数据库了。

最后:

附上两篇参考文档(CSSCAN的使用):

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值