有的时候我们在迁移数据库的时候发现由于字符集的问题导致迁移不成功,比如之前做expdp/imdp迁移的时候 ,

源库是UTF8字符集,目的库是AL32UTF8字符集,由于汉字在AL32UTF8 中占3个字节,而在ZHS16GBK中占2个字节,

这样在导入的时候就会遇到:

今天测试的是将AL32UTF8 转换成UTF8字符集

测试环境
系统:Windows
数据库:Oracle 11g

1.首先检查环境

C:\Users\Administrator>sqlplus  / as sysdbaSQL*Plus: Release 11.2.0.1.0 Production on 星期五 12月 8 08:36:25 2017Copyright (c) 1982, 2010, Oracle.  All rights reserved.连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing optionsSQL> spool 2017_12_08.txt
SQL> set line 4000
SQL> select userenv('language') from dual;USERENV('LANGUAGE')
--------------------------------------------------------------------------------------------------------
SIMPLIFIED CHINESE_CHINA.AL32UTF8SQL> select * from v$nls_parameters;PARAMETER                                                                                                                VALUE
-------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------
NLS_LANGUAGE                                                                                                             SIMPLIFIED CHINESE
NLS_TERRITORY                                                                                                            CHINA
NLS_CURRENCY                                                                                                             ¥
NLS_ISO_CURRENCY                                                                                                         CHINA
NLS_NUMERIC_CHARACTERS                                                                                                   .,
NLS_CALENDAR                                                                                                             GREGORIAN
NLS_DATE_FORMAT                                                                                                          DD-MON-RR
NLS_DATE_LANGUAGE                                                                                                        SIMPLIFIED CHINESE
NLS_CHARACTERSET                                                                                                         AL32UTF8
NLS_SORT                                                                                                                 BINARY
NLS_TIME_FORMAT                                                                                                          HH.MI.SSXFF AMPARAMETER                                                                                                                VALUE
-------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------
NLS_TIMESTAMP_FORMAT                                                                                                     DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT                                                                                                       HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT                                                                                                  DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY                                                                                                        ¥
NLS_NCHAR_CHARACTERSET                                                                                                   AL16UTF16
NLS_COMP                                                                                                                 BINARY
NLS_LENGTH_SEMANTICS                                                                                                     BYTE
NLS_NCHAR_CONV_EXCP                                                                                                      FALSE已选择19行。

2.执行下面命令修改

SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。Total System Global Area 3373858816 bytes
Fixed Size                  2180424 bytes
Variable Size            1946159800 bytes
Database Buffers         1409286144 bytes
Redo Buffers               16232448 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> alter database character set internal_convert utf8;
alter database character set internal_convert utf8
*
第 1 行出现错误:
ORA-12712: 新字符集必须为旧字符集的超集SQL> alter database character set internal_use utf8;
alter database character set internal_use utf8
*
第 1 行出现错误:
ORA-12721: 当其他会话处于活动状态时, 无法执行操作

上面就是执行的时候容易遇到的问题,

关于ORA-12712报错,官网上给出使用INTERNAL_USE:具体如下:

关于ORA-12721的报错,

最终发现在此次的操作过程中,又开了另外一个窗口,于是把该窗口关掉再次执行:

SQL> alter database character set internal_use utf8;数据库已更改。
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。Total System Global Area 3373858816 bytes
Fixed Size                  2180424 bytes
Variable Size            1946159800 bytes
Database Buffers         1409286144 bytes
Redo Buffers               16232448 bytes
数据库装载完毕。
数据库已经打开。
SQL> select userenv('language') from dual;USERENV('LANGUAGE')
--------------------------------------------------------------------------------------------------------
SIMPLIFIED CHINESE_CHINA.UTF8SQL>

Oracle 修改字符集(AL32UTF8 转换成UTF8字符集)相关推荐

  1. mysql zhs16gbk_更改Oracle字符集:把字符集ZHS16GBK换成UTF8

    更改Oracle字符集:把字符集ZHS16GBK换成UTF8 SQL> select name,value$ from props$ where name like '%NLS%'; NAME ...

  2. oracle将字符串的日期格式化,oracle格式化字符串 oracle 怎么把字符串转换成日期...

    Oracle数据库中如何将字符串格式化为日期 可以用 to_date('日期类型字符串','要转化的日期类型')函数进行日期格式转换 sql:select to_date('1990-12-12 12 ...

  3. 怎么将oracle的sql文件转换成mysql的sql文件

    怎么将sql文件导入PowerDesigner中的方法(将oracle的sql文件转换成mysql的sql文件)呢? 怎么将xx.sql文件的数据库结构导入powerdesigner 的方法呢? 现讲 ...

  4. java 项目 gbk 转utf-8_[idea]Java的GBK编码项目统一转换成utf-8格式

    Java的GBK编码项目统一转换成utf-8格式 0. 直接运行jar包 java -jar GBK2UTF8.jar 1. 构建 原理 使用common io批量将java编码从GBK转UTF-8 ...

  5. 字符串转换成utf-8编码

    a.将字符串转换成utf-8编码的字节,并输出,然后将该字节在转换成utf-8编码字符串,在输出 b.将字符串转换后才能gbk编码的字节,并输出,然后将该字节在转换成gbk编码字符串,在输出 1 2 ...

  6. 将string转换成UTF8在进行请求

    在请求服务器时,如果参数中带有中文字符.就会报参数格式错误,需要将其转换成UTF8 @interface NSString (NSURLUtilities) /* Adds all percent e ...

  7. mysql clob转string_Java获取Oracle中CLOB字段转换成String

    Java获取Oracle中CLOB字段转换成String : try {PreparedStatement stmt = session.connection().prepareStatement(s ...

  8. java Clob转CLOB_Java获取Oracle中CLOB字段转换成String

    Java获取Oracle中CLOB字段转换成String : try {PreparedStatement stmt = session.connection().prepareStatement(s ...

  9. python将中文转换成utf8_如何在python中从unicode转换成utf8?

    我正在编写python脚本,从sqlite3数据库中提取xbmc媒体应用程序的数据.在 我可以看到,在我的代码中,它将使用unicode对象提取数据,其中我将有字符串(u'.u和{}.在 我想把它转换 ...

最新文章

  1. python能绘制统计图吗-Python数据科学(九)- 使用Pandas绘制统计图表
  2. 字符串反序,逆序输出字符串
  3. 多个装饰器装饰一个函数
  4. python构建二叉树_BinaryTree:学习二叉树的Python库
  5. Java学习笔记10-2——MyBatis
  6. python安装过程的一些问题解决方案
  7. mysql在linux下的完整安装
  8. java servlet ajax_javaweb中ajax请求后台servlet(实例)
  9. 23种设计模式(十三)接口隔离之门面模式
  10. Charles使用备注[1]
  11. 算法:合并两个有序链表21. Merge Two Sorted Lists
  12. en55032最新标准下载_欧盟新EMC标准EN55032
  13. UE4 蓝图事件调度器Event Dispatcher
  14. 基于国产全志A40I的机器人示教器解决方案
  15. 障碍期权定价 python_python障碍式期权定价公式
  16. 光敏电阻、压敏电阻、热敏电阻记录整理
  17. 2018蓝桥杯B组国赛第四题 调手表(bfs)
  18. 智慧工地 | 数字孪生楼宇施工管理平台
  19. 解决非苹果电脑使用iPad作为扩展屏的问题
  20. Win10文件或目录损坏且无法读取修复方法

热门文章

  1. 【使用python和flask建个人博客】给网站增加关键字、说明以及增加京备案号和公安局备案号
  2. Structured-Streaming编程练习知识点
  3. Jascript 的计算器插件
  4. Redis源码学习(20),学习感悟
  5. jQuery写突出显示
  6. datax值转换使用以及源码分析
  7. 蒸发器,冷凝器面积过大
  8. Android4.4开机向导
  9. 世界上最远的距离 ——泰戈尔
  10. vue移动端van-uploader上传图片压缩工具类