很久没有人去改sys.props$表了, 今天却出了一个, 在9i以前的话, 改错了NLS_CHARACTERSET的值是不行的, 数据库就起不来了. 但到了9i后, 是可以的, 也许有人知道了这一点所以放心地去做了. 为了慎重起见, 我重做了如下实验:
SQL> UPDATE PROPS$ SET VALUE$='WE8ISO8859PP'
2 WHERE NAME='NLS_CHARACTERSET';
1 row updated.
单改这一个值是可以起来的, 接下来我改其他所有的值呢?
SQL> UPDATE PROPS$ SET VALUE$='WE8ISO8859PP';
27 rows updated.
这样改了就是起不来的, 另外eygle在同一时间测试, 发现单改错了NLS_NCHAR_CHARACTERSET就不行了.
SQL> UPDATE PROPS$ SET VALUE$='WE8ISO8859PP'
2 WHERE NAME='NLS_NCHAR_CHARACTERSET';
1 row updated.
难道用一下"ALTER DATABASE CHARACTER SET INTERNAL_USE xxx"语句就如此困难吗? 不就是要重起一两次吗? 说实话, 不要去学一些危险的知识, 所以我坚绝不学习如何使用bbed这样的工具, 我只读取数据文件.
留言 (3)
这个命令好呀, 可惜用不上.
每次新建数据库就选UTF8和UTF16. (8i以前是ISO8859P1)
在下面SQL Reference文档里面, 被否定了(或者我没有找到参考).
Oracle® Database SQL Reference
10g Release 2 (10.2)
ALTER DATABASE
CHARACTER SET, NATIONAL CHARACTER SET
You can no longer change the database character set or the national character set using the ALTER DATABASE statement. Please refer to Oracle Database Globalization Support Guide for information on database character set migration.
附: 休了两周长假,驾车5000公里,又回来上班了.
Posted by 木匠 | Jul 5, 2007 2:21 AM
最后的解决方案, 还是网上高人多啊, 思路广阔:
数据库打开了!
按照rollingpig的思路.在ORA_NLS10目录下生成一个名为ZHS6GBK的字符集,就可以打开库了.
Posted by anysql | Jul 6, 2007 7:56 AM
就是到了100世纪,闻道也有先后吧.不巧的是,他看了不该看的书(作者的警告他却没放在心上,当然了,作者提示的也不是很明确)
所以,责任不全在他,别人的误导也影响了他.
Posted by Thomas Zhang | Jul 6, 2007 1:53 PM