Oracle字符集GBK改为UTF-8

今天导入oracle dmp文件时,出现报错,具体错误为某张表的某个字段超出实际长度(实际值:62,最大值50),此字段类型为varchar2(50),百思不得其解,后得经理指点得知,是字符集的原因,安装数据库是默认为GBK,然而一般使用都是UTF-8,导入的文件中也是用的UTF-8字符集,所以需要修改字符集。
这里写图片描述

命令如下:

 sqlplus
 请输入用户名:  sys as sysdba      输入口令:
 select userenv('language') from dual;  //查看字符集

 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;//改为utf-8
 // alter database character set internal_use zhs16gbk; 改为gbk
 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>

你可能感兴趣的:(菜鸟入职)