Modifying character sets in Oracle

Source: Internet
Author: User

Exp encountered ORA-06552 error solution (PLS-553: Character Set Name is not recognized) There is a built data, Oracle 9.2.0.4 for Linux, character set is the default we8iso8859p1, not changed to zhs16gbk. the database does not have any data.

Because the character set is not a superset/subset relationship, you cannot modify the character set through alter database character set.

At that time, the database was not rebuilt, but the prop $ table was directly modified and the nls_char character set was changed to zhs16gbk.
Update props $ set value $ = 'zhs16gbk' where name = 'nls _ characterset ';
After the restart, create the table and insert the data. Everything is normal... The exp data will be generated until today.

Execute exp userid = system owner = username... error!
Will export the specified user...
. Exporting objects and operations in the pre-schema Process
. Exporting username's external function library name
. Export public type Synonyms
EXP-00008: Oracle error 6552
ORA-06552: PL/SQL: compilation unit analysis terminated
ORA-06553: PLS-553: Character Set Name is not recognized
EXP-00000: Export termination failed

The implicit feeling is related to the character set settings at that time. Http://www.eygle.com/special/nls_character_set_03.htm: "to formally modify a character set, Oracle must change at least 12 data dictionary tables. In this way, only 1/12 of the data dictionary tables are updated directly, potential integrity hazards can be imagined."

But how can this problem be solved? Later, an undisclosed internal_use usage was found, which forced the character set to be consistent and solved the problem.

First, check whether the character set is not completely modified.
Select distinct (nls_charset_name (charsetid) characterset,
Decode (type #, 1,
Decode (charsetform, 1, 'varchar2', 2, 'varchar2', 'unkown '),
9,
Decode (charsetform, 1, 'varchar ', 2, 'nchar varying', 'unkown '),
96,
Decode (charsetform, 1, 'Char ', 2, 'nchar', 'unkown '),
112,
Decode (charsetform, 1, 'clob', 2, 'clob', 'unkown ') types_used_in
From SYS. Col $
Where charsetform in (1, 2)
And type # In (1, 9, 96,112 );

If the preceding query does show multiple character set settings, perform the following operations:
Shutdown immediate;
Startup Mount;
Alter system enable restricted session;
Alter system set job_queue_processes = 0;
Alter system set aq_tm_processes = 0;
Alter database open;

Col value new_value charset
Select value from nls_database_parameters where parameter = 'nls _ characterset ';
Col value new_value ncharset
Select value from nls_database_parameters where parameter = 'nls _ nchar_characterset ';

-- Internal_use is a parameter that is not written in the document and is used to force character set consistency.
Alter database character set internal_use & charset;
Alter database National Character Set internal_use & ncharset;

Shutdown immediate;
Startup;
-- Start the database again
Shutdown immediate;
Startup;

So far, the exp problem has been solved.

Note: modifying the character set only modifies the data dictionary and does not convert the data character set!
 

 

Transfer

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.