Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6928919
  • 博文数量: 637
  • 博客积分: 10265
  • 博客等级: 上将
  • 技术积分: 6165
  • 用 户 组: 普通用户
  • 注册时间: 2004-12-12 22:00
文章分类

全部博文(637)

文章存档

2011年(1)

2010年(1)

2009年(3)

2008年(12)

2007年(44)

2006年(156)

2005年(419)

2004年(1)

分类:

2005-08-26 19:34:56

韩语的,没有找到E文或者是中文的,虽然看不懂,但是命令还是可以看懂的

哪位好心的朋友可以给翻译一下

위의 문제에 대해 해결했습니다.
문제는 oracle9i에서 National Charset 변경에서 잘못한게 문제였습니다.

1.Oracle 9i가 설치가 되면 National Charset의 Default Value는 AL16UTF16입니
다.
이걸 UTF8로 바꿀려고 할때
이전방식처럼
update sys.props$
set value$ = 'UTF8' where name = ''NLS_NCHAR_CHARACTERSET'';
이렇게 하면 위의 문제가 발생됩니다.
Oracle에서 National Charset 변경정보가 다 반영이 안되는거죠...
그렇다보니 Table에 Insert할때 이전 Value인 AL16UTF16으로 데이터는 들어가고
Default Space만 UTF8로 들어가버린 겁니다...

2.그래서 제대로 바꿔야 합니다.
$ sqlplus ‘/ as sysdba’
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT EXCLUSIVE;
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQL> ALTER DATABASE OPEN;
SQL> ALTER DATABASE NATIONAL CHARACTER SET UTF8;
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;

이렇게 하면 되는데 문제는
‘ORA-12717: Cannot ALTER DATABASE NATIONAL CHARACTER SET when
NCLOB data exists’ 이런 에러메시지가 나옵니다..
이걸 해결할려면 두가지 방법이 있는데
하나는 INTERNAL_USE 키워드를 사용하여 변경을 하면 되고
두번째는 re-create해야 합니다.
re-create하는 방법은 복잡해서...
internal_use로 해보면....
$ sqlplus ‘/ as sysdba’
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT EXCLUSIVE;
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQL> ALTER DATABASE OPEN;
SQL> ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE UTF8;
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;
이렇게 하면 일단 National charset의 변경이 확실히 됩니다....

위와 같은 문제도 없고요...
괜히 쉽게 생각했다가 시간만 버렸습니다.
이젠 매뉴얼대로 제대로 변경을 해야겠다는 생각입니다....

알고 계신분도 있겠지만
.... 이렇게 해서 해결이 되어 올려봅니다...

阅读(2812) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~