Oracle 修改字符集(AL32UTF8 转换成UTF8字符集) 您所在的位置:网站首页 稚趣集纸尿裤多少钱一包 Oracle 修改字符集(AL32UTF8 转换成UTF8字符集)

Oracle 修改字符集(AL32UTF8 转换成UTF8字符集)

2023-08-15 06:57| 来源: 网络整理| 查看: 265

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

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

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

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

测试环境 系统:Windows 数据库:Oracle 11g 1.首先检查环境

C:\Users\Administrator>sqlplus / as sysdba SQL*Plus: Release 11.2.0.1.0 Production on 星期五 12月 8 08:36:25 2017 Copyright (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 options SQL> spool 2017_12_08.txt SQL> set line 4000 SQL> select userenv('language') from dual; USERENV('LANGUAGE') -------------------------------------------------------------------------------------------------------- SIMPLIFIED CHINESE_CHINA.AL32UTF8 SQL> 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 AM PARAMETER 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.UTF8 SQL>



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有