IMP-00016 Required Character Set Conversion Not Supported Error when Import to Oracle Database

When trying to import an Oracle database export, backup or dump, you may encounter the error IMP-00016 where the import terminate prematurely and not allow you to continue the import to the destination Oracle database. The error has the following message:

IMP-00016: required character set conversion (type 1 to 871) not supported
IMP-00000: Import terminated unsuccessfully

Note that depending on your export file and database character set, the “type 178 to 871″ may change from each environment. Other typical character set conversion not supported error include from type 178 to 871 or from type 31 to 871.

The cause for the Oracle error is because import utility could not convert the character format of the export file into the native character format which is the setting of the operating system client. In other world, the issue is due to the fact that there is conversion problem between the export dump file and the destination databases which have different character set value when Oracle import utility try to import the exported database by using the Unix’s NLS_LANG local environment variable value. If the operating system environment doesn’t show the value of NLS_LANG, the import (and also export) will be done in US7ASCII as the default value for NLS_LANG on UNIX platforms is AMERICAN_AMERICA.US7ASCII, regardless of the database characterset.

The resolution to resolve the IMP-00016 is to set the the NLS_LANG parameter in local OS env variable value to match the character set of the destination database and import the dump file. NLS_LANG can be change by using set or export command. For example:

$ export NLS_LANG=.WE8ISO8859P1

NLS_LANG is set in the registry on Windows platforms. For example, on an English Windows client, the code page is WE8MSWIN1252. An appropriate setting for NLS_LANG is AMERICAN_AMERICA.WE8MSWIN1252.

You can check the character sets of the Oracle database in SQL*Plus by using following commands to list all NLS information:

SQL> col value format a25
SQL> col parameter format a25
SQL> select * from v$nls_parameters;

In the rows returned, NLS_CHARACTERSET will list the character set of the database. In ideal situation to avoid and minimize the potential errors, the recommended practise will be like the following:

At the system where database export is taken: Set NLS_LANG=. At the system where database import is done: Set NLS_LANG=.

Set the operating system NLS_LANG value to match the source or destination database character set will let Oracle assumes that the data being sent or received is encoded in the same character set as the database character set, so no validation or conversion is performed. This can lead to corrupt data if the client code page and the database character set are different and conversions are necessary. It’s more of an issue if source and destination databases have different character set, and source database contains special characters (for example chinese, japanese, spanish, german, special letters or other characters, which are not contained in US7ASCII), the target database will lose the original characters and show replacement characters instead. So, it’s best if the source and destination database has the same or similar character set.

To check the character set that a dump export and its database is using, check the export log, the characterset information should exists at the beginning of the log:

Export done in US7ASCII character set and AL16UTF16 NCHAR character set
server uses WE8MSWIN1252 character set (possible charset conversion)

Similary, the import log will contain the information about what character set the import process is using and also for the target database, plus possible warning message, even if the import failed with IMP-00016 error, at the beginning of the import log:

import done in US7ASCII character set and AL16UTF16 NCHAR character set
import server uses UTF8 character set (possible charset conversion)
export server uses UTF8 NCHAR character set (possible ncharset conversion)

Share and contribute or get technical support and help at My Digital Life Forums.



Leave a Reply

You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Subscribe without commenting


Custom Search

New Articles

Incoming Search Terms for the Article

import done in US7ASCII character set and AL16UTF16 NCHAR character set - IMP-00016: required character set conversion (type 1 to 871) not supported - Export done in WE8MSWIN1252 character set and AL16UTF16 NCHAR character set - possible charset conversion - WE8MSWIN1252 character set and AL16UTF16 NCHAR character set - imp-00016 - utf8 nchar - import done in US7ASCII - oracle imp charset - import done in WE8ISO8859P1 character set and AL16UTF16 NCHAR character set - export client uses US7ASCII character set (possible charset conversion) - import charset oracle - us7ascii character set - IMP Character set - oracle import character set - oracle import charset - oracle imp NLS_LANG - This message uses a character set that is not supported by the Internet Service - character set US7ASCII - import server uses WE8ISO8859P1 character set (possible charset conversion) - ORACLE imp convert nls_lang - import server uses WE8MSWIN1252 character set (possible charset conversion) - oracle possible charset conversion - IMP-00016: required character set conversion (type 178 to 871) not supported - import dump in different charactere set - Export done in US7ASCII character set and AL16UTF16 NCHAR character set server uses WE8ISO8859P1 character set (possible charset conversion) - import done in WE8MSWIN1252 character set and AL16UTF16 NCHAR character set - oracle imp character set - US7ASCII BRAZILIAN - oracle imp encrypted - polski charset - IMP-00016: required character set conversion - oracle import US7ASCII WE8MSWIN1252 - AL16UTF16 US7ASCII - export client uses WE8MSWIN1252 - how to auto set conversion in SQL - import oracle character set - import done in US7ASCII character set and AL16UTF16 NCHAR character set import server uses WE8MSWIN1252 character set (possible charset conversion) - imp ORACLE IMPORT CHARSET - NCHAR character set oracle import - NLSLANG SERBIAN - oracle function convert UTF-8 char into US7ASCII nchar - oracle import done possible charset conversion - oracle import NLS_LANG AL16UTF16 - oracle tool to check character set of a file - oracle + UTF8 + dblink + chancge character set - ORACLE 10G IMPORT WITH DIFFERENT CHARACTER SET - syntax - POLISH NLS_LANG setting in Unix command - set NLS_LANG - "import done in US7ASCII character set and AL16UTF16 NCHAR character set" -