【转帖】一次Windows 下oracle字符集乱码的记录

http://space.itpub.net/13316/viewspace-468368

 

 

 

国庆后,因停电工作站崩溃, oracle 要恢复了。
在恢复完windows 系统后, 安装oracle8i, 然后就是db recovery。恢复很顺利,可原来table中的中文全乱码。 开始还怀疑在重建control file时字符集选错了或者重建的脚步有问题。

set ORACLE_SID=iga
D:/oracle/ora817/bin/oradim -new -sid IGA -startmode manual -pfile "f:/orabackup/backup/initiga.ora"

startup  nomount pfile="f:/orabackup/backup/initiga.ora"

CREATE CONTROLFILE REUSE DATABASE "IGA" NORESETLOGS ARCHIVELOG
    MAXLOGFILES 32
    MAXLOGMEMBERS 2
    MAXDATAFILES 500
    MAXINSTANCES 1
    MAXLOGHISTORY 1815
LOGFILE
  GROUP 4 'E:/ORACLE/ORADATA/IGA/REDO04.LOG'  SIZE 1M,
  GROUP 5 'E:/ORACLE/ORADATA/IGA/REDO05.LOG'  SIZE 1M,
  GROUP 6 'E:/ORACLE/ORADATA/IGA/REDO06.LOG'  SIZE 1M
DATAFILE
  'E:/oracle/oradata/iga/SYSTEM01.DBF',
  'E:/oracle/oradata/iga/RBS01.DBF',
  'E:/oracle/oradata/iga/USERS01.DBF',
  'E:/ORACLE/ORADATA/IGA/TEMP01.DBF',
  'E:/ORACLE/ORADATA/IGA/TOOLS01.DBF',
  'E:/ORACLE/ORADATA/IGA/IGA_INDX01.DBF',
  'E:/ORACLE/ORADATA/IGA/DR01.DBF',
  'E:/ORACLE/ORADATA/IGA/IGA_DATA01.DBF'
CHARACTER SET US7ASCII
;

ALTER DATABASE OPEN ;

查来查去, 脚本没有任何问题; 郁闷呀

耗了2个小时, 中间抽根烟; 灵感来了。
改了注册表:
HKEY_LOCAL_MACHIN / SOFTWARE / ORACLE/ HOME0的
NLS_LANG是: AMERICAN_AMERICA.WE8ISO8859P1
改成: AMERICAN_AMERICA.US7ASCII
重启机器, 问题解决了

 

总结:

我之所以感觉这个帖子很好,是因为这个帖子很具有典型性:你查询出来,看到的乱码,未在数据库中存放的就是乱码。

因为经过了客户端NLS_LANG的转换。

你可能感兴趣的:(oracle,windows,数据库,table,database,character)