更改oracle 12c数据库中的字符集

更改oracle 12c数据库中的字符集,oracle,character-encoding,oracle12c,Oracle,Character Encoding,Oracle12c,我需要将字符集从EE8ISO8859P2更改为EE8MSWIN1250。 我读了很多指南,但我没有找到解决办法。如何进行此转换?我需要一个完整的说明。以前csscan等操作很复杂,但现在您可以下载一个名为Oracle数据库迁移助手的GUI工具,并按照说明进行操作。如果您的字符集是单字节的(我假设),这会容易得多,因为这样您就不会对某些数据进行有损转换,例如UTF8这样的多字节字符集 不过,您需要停机,而且可能需要数小时才能完成,具体取决于DMU工具找到的数据的大小。您不能像某些人建议的那样,通过

我需要将字符集从EE8ISO8859P2更改为EE8MSWIN1250
我读了很多指南,但我没有找到解决办法。如何进行此转换?我需要一个完整的说明。

以前csscan等操作很复杂,但现在您可以下载一个名为Oracle数据库迁移助手的GUI工具,并按照说明进行操作。如果您的字符集是单字节的(我假设),这会容易得多,因为这样您就不会对某些数据进行有损转换,例如UTF8这样的多字节字符集


不过,您需要停机,而且可能需要数小时才能完成,具体取决于DMU工具找到的数据的大小。您不能像某些人建议的那样,通过简单地执行“alter database”来更改字符集。

我建议将其更改为UTF-8,即在or之后执行AL32UTF8

正如sandman所建议的,不要运行
alterdatabasecharacterset…
自Oracle 10g以来,它就不再受支持

:

您不能再更改数据库字符集或国家字符集 使用ALTER DATABASE语句的字符集。请参阅 有关Oracle数据库全球化支持指南的信息 数据库字符集迁移


为什么运行alter database character set
并重新启动不会产生影响?GUI工具Oracle database Migration Assistant仅适用于Unicode。EE8MSWIN1250没有选项。只要它在V$NLS_有效_值中,那么从源代码转换到targetMoudiz就没有问题,因为这不适合需要转换的数据。我需要EE8MSWIN1250,而不是AL32UTF8。请遵循字符集迁移指南-更改现有数据库的数据库字符集,它应该包括任何转换。为什么要转换为EE8MSWIN1250?现在真的没有理由使用任何其他字符集(除非您的数据库在东亚运行)。该数据库是20年前创建的,建议使用EE8MSWIN1250编码。我不知道为什么有人在创建数据库时选择了这种编码,尽管有明确的程序指南。现在,在一些情况下,这会导致问题,因此我必须将编码更改为EE8MSWIN1250。推荐使用EE8MSWIN1250的人对字符集及其正确用法一无所知。20年前,这仍然是一个问题,今天应该不再是问题了。