我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Oracle 12C 修改字符集为AL32UTF8研究

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Oracle 12C 修改字符集为AL32UTF8研究

有这样一个问题:PDB字符集能否从ZHS16GBK修改为AL32UTF8?

答案:由于CDB为ZHS16GBK,导致PDB不能修改。

针对这个问题作了一下学习,记录一下。

1、迁移转换字符集方法:

12C :只有DMU这个工具

10g/11g :csscan/ csalter /部分 exp/imp

8i/9i :Alter Database Character Set () / 部分 exp/imp 

2、AL32UTF8 是一个变宽度的字符集,表示为 1 个字符的代码可以是 1,2,3 或 4 个字节长。

这 与 WE8ISO8859P1 或 WE8MSWIN1252 字符集中 1 字符始终是 1 个字节有很大的区别。

3、使用 AL32UTF8数据库会增长,最大的扩展将会发生在 CLOB 类型上(或者 XMLtype – 该类型后台使用 CLOB),

如果源数据 库是 8 bit 字符集(WE8ISO8859P1,WE8MSWIN1252 等),那么转换后的 Clob 列会在磁盘 大小上变成原来的两倍。 

4、CDB不能转换字符集,只能重新创建CDB。DMU 是PDB转换字符集的唯一工具;

5、截至2019.9.8,DMU最新版本为19.1,使用过程图形界面有卡死现象。DMU用于转换数据的过程是:

将数据库置于受限模式。

禁用各种作业队列进程。

删除或禁用所选索引。

禁用选定的触发器和约束。

将用户表和选定数据字典表中的数据转换为Unicode。

转换CLOB数据字典中的列。

发表ALTER DATABASE CHARACTER SET声明。

启用触发器和约束; 并重新创建索引和约束。

恢复数据库实例参数。

6、使用9i 传统方法alter database character set INTERNAL_USE AL32UTF8;  修改CDB测试成功,但oracle官方不推荐。该方法并未执行两个步骤:将用户表和选定数据字典表中的数据转换为Unicode  和 转换CLOB数据字典中的列。这两关键步骤只能通过DMU实行。

测试:使用该方法切换CDB字符集从ZHS16GBK到AL32UTF8成功,同时PDB$SEED也自动变化;但按官方说法切换不完整,不赞成这样做。

7、NLS_NCHAR_CHARACTERSET("国家字符集")定义了 NCHAR,NVARCHAR2 和 NCLOB 列 的编码并且在 9i 及以上版本已经是 Unicode了(参见 Note 276914.1 The National Character Set in Oracle 9i 10g and 11g)。 

8、NLS_CHARACTERSET("字符集")定义了"普通的" CHAR,VARCHAR2,LONG 和 CLOB列编 码,这些也可以被用于存放 Unicode。在这样的情况下需要 AL32UTF8 或者 UTF8 NLS_CHARACTERSET 数据库。

参考文档:

AL32UTF8/UTF8(Unicode)数据库字符集含义 (文档 ID 1946289.1)

如何选择或更改数据库字符集 (NLS_CHARACTERSET) (文档 ID 1525394.1)

The Database Migration Assistant for Unicode (DMU) Tool (文档 ID 1272374.1)

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Oracle 12C 修改字符集为AL32UTF8研究

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

oracle 字符集修改 AL32UTF8 改为 ZHS16GBK

在使用ORACLE的过程中,会出现各种各样的问题,各种各样的错误,其中ORA-12899就是前段时间我在将数据导入到我本地机器上的时候一直出现的问题.不过还好已经解决了这个问题,现在分享一下,解决方案;出现ORA-12899,是字符集引起的,中文在UTF-8中
oracle 字符集修改 AL32UTF8 改为 ZHS16GBK
2014-09-09

oracle字符集如何修改

要修改Oracle字符集,可以按照以下步骤进行操作:1. 进入Oracle数据库服务器的命令行界面。2. 使用SYSDBA或者SYSOPER权限的用户登录到数据库。3. 检查当前的数据库字符集设置。可以使用以下命令查询:```sqlSELE
2023-09-23

oracle字符集怎么修改

要修改 oracle 字符集,可以按以下步骤进行:修改数据库字符集:alter database character set 修改表或列字符集:alter table modify 如何修改 Oracle 字符集Oracle 数据库使
oracle字符集怎么修改
2024-05-30

如何修改oracle字符集

要修改 oracle 字符集,需要:备份数据库;在 init.ora 文件中修改字符集设置;重新启动数据库;修改现有表和列以使用新字符集;重新加载数据;修改数据库链接(可选)。修改 Oracle 字符集如何修改 Oracle 字符集?要
如何修改oracle字符集
2024-06-13

plsql怎么修改oracle字符集

要修改Oracle数据库的字符集,可以按照以下步骤进行操作:1. 首先,备份数据库以防止数据丢失。可以使用Oracle提供的工具或者第三方工具进行备份。2. 确认当前数据库的字符集。可以通过查询NLS_DATABASE_PARAMETERS
2023-09-29

Oracle怎么修改数据库字符集

要修改Oracle数据库的字符集,可以按照以下步骤进行操作:首先备份数据库:在修改字符集之前,务必备份数据库以防止数据丢失。确认当前字符集:可以使用以下SQL语句查询当前数据库的字符集:SELECT value FROM nls_data
Oracle怎么修改数据库字符集
2024-04-09

怎么修改oracle数据库字符集

要修改Oracle数据库的字符集,你需要执行以下步骤:1. 运行 `sqlplus` 命令以登录到数据库。例如:`sqlplus / as sysdba`。2. 使用以下命令查看当前数据库的字符集:```sqlSELECT * FROM n
2023-08-23

linux怎么修改字符集编码为gbk

要将Linux系统的字符集编码修改为GBK,可以按照以下步骤操作:打开终端窗口。使用root权限登录或者切换到root用户。执行以下命令来编辑locale.gen文件:vi /etc/locale.gen在文件中找到以“zh_CN”开头的
2023-10-25

oracle 修改字符集乱码怎么解决

oracle 修改字符集乱码解决方法:1、找到TNSNAMES.ORA文件在里面找到要连接的数据库的别名,设置环境变量NLS_LANG,打开SQL*Plus,使用以上配置连接到数据库;2、创建一个存放中文字符的表,在存放中文字符的字段中插入
2023-07-10

oracle字符集修改的方法是什么

在Oracle数据库中,可以通过ALTER DATABASE语句来修改数据库的字符集。以下是修改Oracle数据库字符集的步骤:首先,需要备份数据库以防止数据丢失。确认当前数据库的字符集。可以通过以下SQL语句来查询数据库的字符集:SELE
oracle字符集修改的方法是什么
2024-04-09

编程热搜

目录