今天导入oracle dmp文件时,出现报错,具体错误为某张表的某个字段超出实际长度(实际值:62,最大值50),此字段类型为varchar2(50),百思不得其解,后得经理指点得知,是字符集的原因,安装数据库是默认为GBK,然而一般使用都是UTF-8,导入的文件中也是用的UTF-8字符集,所以需要修改字符集。
命令如下:
sqlplus 请输入用户名: sys as sysdba 输入口令: 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; alter database character set internal_use utf8; shutdown immediate; startup;
运行过程如下:
C:\Users\Administrator>sqlplus SQL*Plus: Release 11.2.0.1.0 Production on 星期四 9月 14 00:09:08 2017 Copyright (c) 1982, 2010, Oracle. All rights reserved. 请输入用户名: sys as sysdba 输入口令: 连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Prod With the Partitioning, OLAP, Data Mining and Real Application Testing SQL> shutdown immediate; 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 SQL> startup mount; ORACLE 例程已经启动。 Total System Global Area 4242378752 bytes Fixed Size 2182504 bytes Variable Size 2264924824 bytes Database Buffers 1962934272 bytes Redo Buffers 12337152 bytes 数据库装载完毕。 SQL> alter system enable restricted session; 系统已更改。 SQL> alter system set job_queue_processes=0; 系统已更改。 SQL> alter system set aq_tm_processes=0; 系统已更改。 SQL> alter database open; 数据库已更改。 SQL> alter database character set utf8; alter database character set utf8 * 第 1 行出现错误: ORA-12712: 新字符集必须为旧字符集的超集 SQL> alter database character set internal_use utf8; 数据库已更改。 SQL> shutdown immediate; 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 SQL> startup; ORACLE 例程已经启动。 Total System Global Area 4242378752 bytes Fixed Size 2182504 bytes Variable Size 2264924824 bytes Database Buffers 1962934272 bytes Redo Buffers 12337152 bytes 数据库装载完毕。 数据库已经打开。 SQL>