Home » RDBMS Server » Server Administration » changing database character set
icon8.gif  changing database character set [message #125686] Tue, 28 June 2005 12:01 Go to next message
pras555
Messages: 2
Registered: June 2005
Junior Member

Hi all,

I want to change my database character set from WE8ISO8859P15 to UTF8 on oracle 9i.

It throws up this error:
SQL> alter database character set utf8;
alter database character set utf8
*
ERROR at line 1:
ORA-12712: new character set must be a superset of old character set.

Can anyone help on this issue...

Ram..
Re: changing database character set [message #125724 is a reply to message #125686] Tue, 28 June 2005 21:35 Go to previous messageGo to next message
DMcG
Messages: 51
Registered: May 2005
Location: Auckland, New Zealand
Member
You can only change character sets within the database if the new character set is a superset of the old character set i.e. every character in the old set is also present in the new set. I don't think you can change from a single byte set to a multi-byte set either - which is what UTF-8 is.

You may have to rebuild your database

[Updated on: Tue, 28 June 2005 21:37]

Report message to a moderator

Re: changing database character set [message #125780 is a reply to message #125686] Wed, 29 June 2005 04:06 Go to previous messageGo to next message
tarundua
Messages: 1080
Registered: June 2005
Location: India
Senior Member
yes DMcg is correct , if u want to change the characterset then the new characterset should be a superset of the older one otherwise create a new database with different characterset
Re: changing database character set [message #126117 is a reply to message #125686] Fri, 01 July 2005 01:58 Go to previous messageGo to next message
rodionov
Messages: 6
Registered: June 2005
Junior Member

try this: I changed character set in my database from CL8MSWIN1251 charset to CL8ISO8859P5. I made it so:

>sqlplus.exe /nolog
update sys.props$ set VALUE$=’CL8ISO8859P5’ where NAME=’NLS_CHARACTERSET’

/*restart Oracle services or just execute shutdown and startup command here*/

ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER DATABASE CHARACTER SET CL8ISO8859P5;
COMMIT WORK;
SHUTDOWN;
STARTUP;
SELECT * FROM NLS_DATABASE_PARAMETERS;
SELECT * FROM v$nls_parameters;

Note that your registry key HKEY_LOCAL_MACHINE\ SOFTWARE\ORACLE\HOME0\NLS_LANG must be updated by your characterset.

I suggest to reboot your server after this operation.

Re: changing database character set [message #126226 is a reply to message #126117] Fri, 01 July 2005 12:59 Go to previous messageGo to next message
andrew again
Messages: 2577
Registered: March 2000
Senior Member
I believe you should use characterset AL32UTF8. UTF8 is the pre-9i characterset. From what I recall UTF8 had one or more incorrect codepoint translations - AL32UTF8 fixes that. AL32UTF8 is here to stay.

select * from v$version where banner like '%Enterprise%';
Oracle9i Enterprise Edition Release 9.2.0.6.0 - 64bit Production

SELECT * FROM nls_database_parameters WHERE parameter like '%CHARACTERSET';
NLS_CHARACTERSET AL32UTF8
NLS_NCHAR_CHARACTERSET AL16UTF16

Re: changing database character set [message #126347 is a reply to message #125686] Mon, 04 July 2005 00:15 Go to previous message
Achchan
Messages: 86
Registered: June 2005
Member
The Unicode character set AL16UTF16 is intended to concurrently support every known language, although there are a few not yet included, such as Egyptian hieroglyphs and cuneiform.if you want to use these you should wait or go back to ancient days! Laughing
Use that and dont worry about any globalization and ... issues.

Note about rodionov's post:

It is an absolutly NO-NO.Don't manipulate Dictionary for every little problem.
Previous Topic: Constraints
Next Topic: My Oracle's Database suspend
Goto Forum:
  


Current Time: Fri Sep 27 00:14:59 CDT 2024