Racle error 12899 Processing, Oracle 11g change Character Set

Source: Internet
Author: User
Tags dba

Job required, installed Oracle 11g, an error occurred while importing the backup data on other machines:

IMP-00019: Deny row due to ORACLE error 12899
IMP-00003: Encountering ORACLE error 12899
ORA-12899: Column "ZHENG". " D_dic "." Dicexplain "value is too large (actual value: 140, Maximum: 100)

This data sheet structure is injected directly, not at all. Later on the Internet to know the original is a character set problem:

In the log file, there is a hint to start importing: "

Import is completed in ZHS16GBK character set and Al16utf16 NCHAR character set
Import server uses the Al32utf8 character set (possible character set conversions)

"Originally installed on my Windows Server 2003 system Oracle, the default character set is consistent with the operating system, is Al32utf8.

Al32utf8, a Chinese character is occupied 3 characters, and generally we use the default in Windows XP is ZHS16GBK, a Chinese character with 2 characters bit. In this way, the direct import of data directly overflowed.

The method of viewing the character set can be used with PL/SQL DEVELOP---->reports---->DBA---->nls Database Parameters, as shown:

Find a way to modify the character set on the Web:


A, Oracle server-side character set query
Select Userenv (' language ') from dual
Where Nls_characterset is the server-side character set
Nls_language for server-side character display


B. Querying the character set of the Oracle client side
$echo $NLS _lang
If you find that the data you select is garbled, configure the client's character set to the same character set as the Linux operating system. If it is still garbled, it is possible that there is a problem with the data in the database, or there is a problem with the configuration of the Oracle server.

C, server-side character Set modification
*****************************************************************
* Change Character Set step method (WE8ISO8859P1-ZHS16GBK) *
*****************************************************************
Sql>
To make a character set change by booting the database into restricted mode:
Sql> Conn/as SYSDBA
Connected.
sql> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
Sql> Startup Mount
ORACLE instance started.
Total System Global area 236000356 bytes
Fixed Size 451684 bytes
Variable Size 201326592 bytes
Database buffers 33554432 bytes
Redo buffers 667648 bytes
Database mounted.
sql> ALTER SYSTEM ENABLE RESTRICTED SESSION;
System altered.
sql> ALTER SYSTEM SET job_queue_processes=0;
System altered.
sql> ALTER SYSTEM SET aq_tm_processes=0;
System altered.
sql> ALTER DATABASE open;
Database altered.
sql> ALTER DATABASE CHARACTER SET ZHS16GBK;
ALTER DATABASE CHARACTER SET ZHS16GBK
*
ERROR at line 1:
Ora-12712:new character set must be a superset of the old character set
Hint to our character set: The new character set must be a superset of the old character set, and we can skip over the superset check to make the change:
Sql> ALTER DATABASE Character set Internal_use ZHS16GBK;
Database altered.
Sql> select * from V$nls_parameters;
Slightly
Rows selected.
Reboot checks for changes to complete:
sql> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
Sql> Startup
ORACLE instance started.
Total System Global area 236000356 bytes
Fixed Size 451684 bytes
Variable Size 201326592 bytes
Database buffers 33554432 bytes
Redo buffers 667648 bytes
Database mounted.
Database opened.
Sql> select * from V$nls_parameters;
Slightly
Rows selected.
We see that this process is identical to the internal procedure of the alter DATABASE CHARACTER set operation, which means that the help provided by Internal_use is to make
The Oracle database bypasses the checksum of subsets and superset.
This approach is useful in some ways, such as testing; you should be extra careful in your product environment, and no one else will be responsible for the consequences, except you:
Conclusion (we may say it again):
For DBAs, there's a very important principle: don't put your database in jeopardy!
This requires us to make an effective backup of any operations that might have changed the structure of the database, and many DBAs have learned a painful lesson from the operations that are not backed up by the DBA.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

D, client side character Set modification
In the. Bash_profile in the/home/oracle and/root user directories
Add or modify Export nls_lang= "American_america. UTF8 "statement
Close the current SSH window.
Note that the Nls_lang variable must be configured correctly or it will cause sqlplus to fail.

Reference

Solutions for Oracle ORA-12899 errors

Oracle 11g Change Character set, 9i import 11g with Oracle Error 12899 processing

Racle error 12899 Processing, Oracle 11g change Character Set

Related Article

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.