【问题标题】:Change Oracle 12c database characterset to WE8MSWIN1252 from AL32UTF8 without recreating the DB在不重新创建数据库的情况下将 Oracle 12c 数据库字符集从 AL32UTF8 更改为 WE8MSWIN1252
【发布时间】:2016-01-13 10:13:37
【问题描述】:

标题说明了一切。有人可以提供一种将 DB 字符集从 AL32UTF8 更改为 WE8MSWIN1252 的简单方法。

【问题讨论】:

  • 你为什么要这么做?
  • 其中一个应用程序在 unicode DB 上使用时出现错误。开发人员说该应用程序设计为使用默认字符集运行。
  • 现在 AL32UTF8 是 Oracle 数据库的默认字符集!如果您的客户端应用程序不喜欢 Unicode 字符,则使用 NLS_LANG 值将客户端字符集设置为 WE8MSWIN1252。然后你就完成了。

标签: oracle unicode oracle12c


【解决方案1】:

在这种情况下,“简单的方法”不存在,因为这对数据库来说是一个非常重大的变化。在这种情况下,这会更加困难,因为您要从目标字符集的“超集”进行转换。

您可以遵循以下准则:

Character Set Migration using CSSCAN and CSALTER

Database Migration Assistant for Unicode (DMU) in Oracle Database 12c Release 1 (12.1)

您不能使用 DMU 从 AL32UTF8 迁移。

csscan 和 cssalter 在 Oracle 12c 中已弃用,但我认为它们仍在工作。

在 12c 及更高版本中,唯一支持的选项是在新数据库中使用 expdp/impdp 以从 AL32UTF8 迁移到其他字符集,如来自 metalink 的注释:

在 8i、9i、10g 和 11g 中将 NLS_CHARACTERSET 从 AL32UTF8 / UTF8 (Unicode) 更改为另一个 NLS_CHARACTERSET(文档 ID 1283764.1)

【讨论】:

  • CSSCAN 和 CSALTER 不适用于 12c。此外,DMU 不能用于从 AL32UTF8 转换为其他字符集。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-19
  • 2013-03-22
  • 2015-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-19
相关资源
最近更新 更多