I want to change character set of oracle database from 'WE8MSWIN1252' to 'AL32UTF8'
I tried to execute following steps from the link (http://download.oracle.com/docs/cd/B10501_01/server.920/a96529/ch10.htm#1009580):
Shut down the database, using either a SHUTDOWN IMMEDIATE or a
SHUTDOWN NORMAL statement. Do a full backup of the database because
the ALTER DATABASE CHARACTER SET statement cannot be rolled back.
Complete the following statements:
STARTUP MOUNT;
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER SYSTEM SET AQ_TM_PROCESSES=0;
ALTER DATABASE OPEN;
ALTER DATABASE CHARACTER SET AL32UTF8;
But when i execute the above statement, I am getting the following error
SQL Error: ORA-12712: new character set must be a superset of old character set
Can anyone please help me in resolving this issue.
Best Answer
For an
ALTER DATABASE CHARACTER SET
statement to execute successfully, two conditions must be fulfilled:Because
WE8MSWIN1252
is not a strict subset ofAL32UTF8
this statement will fail (example: the pound sign isA3
in hex inWE8MSWIN1252
, but inAL32UTF8
it isC2 A3
).You'll need to use
CSALTER
to do this migration.Refer to: Character Set Migration.