On the Forum today, I saw a friend asking
"After I back up the database and import it to another machine, the following error occurs:
Enter some data.
Imp-00019: Row rejected due to Oracle error 1401
Imp-00003: Oracle error 1401 encountered
ORA-01401: INSERTED value too large for Column
I installed oracle8.1.7, and the prompt column 1 66790 was displayed.
How can this problem be solved ?"
I first thought that IMP will automatically create a table. Therefore, it is irrelevant to the definition of the table field length.
It may be explained that inconsistent character sets lead to inconsistent requirements for the same characters and storage space.
Exp is from a single byte character set database, while imp is a multi-Character Set database, this problem may occur. For example, we8iso8859p1-> utf8
The proof is as follows:
My database uses the we8iso8859p1 character set.
Let's take a look at the storage bytes of this character.
SQL> select dump (' ', 16) from dual;
Dump ('taobao', 16)
-------------------------
Typ = 96 Len = 4: C4, E3, Ba, C3
* 4 bytes required
In the case of utf8,
SQL> select dump (convert (' ', 'utf8', 'we8iso8859p1'), 16) from dual;
Dump (convert ('taobao', 'utf8', 'we8iso88
------------------------------------
Typ = 1 Len = 8: C3, 84, C3, A3, C2, Ba, C3, 83
* 8 bytes required
Therefore, when the dump file content is imp to the utf8 table, it needs 8 bytes to double the original, then it will obviously lead to the ORA-01401: inserted value too large for column error.