【问题标题】:Migration from Windows Oracle 12c to Linux Oracle 18c从 Windows Oracle 12c 迁移到 Linux Oracle 18c
【发布时间】:2020-06-23 18:49:52
【问题描述】:

enter image description here我们正在将 Oracle DB 从 12c Windows Oracle 迁移到 18c Linux Oracle 安装。视图中的某些列(派生列)已变为 unicode,下游 SSIS 无法使用。为什么这些视图会在 SSIS 中出错? SSIS 抱怨在 18c 中的列已成为 unicode

12c 视图定义为 enter image description here

18 c 查看定义

enter image description here

【问题讨论】:

  • 实际的 SSIS“投诉”是什么?我假设这是一条错误消息?此外,可以肯定地说,与旧的相比,您的新 18c db 具有新的字符集,但请确认
  • 是的。这就是为什么我们正在努力解决多个问题。加上 Linux 增加了额外的兼容性问题,12 C -NLS_NCHAR_CHARACTERSET UTF8 --18 C NLS_NCHAR_CHARACTERSET AL16UTF16。 SSIS 12C 的数据类型为 DT_STR,而 18c 则显示为 DT_WSTR。
  • 如果您不处理 NCLOB 或 NVARCHAR2 列,则 NCHARSET 无关紧要。那么,您不打算与我们分享您在 SSIS 中遇到的实际错误吗?
  • 在原始消息中附加错误消息。它说 Unicode 到非 Unicode 转换是错误的

标签: oracle oracle18c


【解决方案1】:

我认为您的问题与此相符:

Oraoledb:无法在 Unicode 和非 Unicode 字符串数据类型之间转换(文档 ID 960508.1)

这是由于 OleDb 提供程序报告的元数据存在差异,具体取决于是否设置了 NLS_LANG 环境变量。通常,当在设置了 NLS_LANG 的环境中开发 SSIS 包,然后将其部署到未设置它的环境中时,会观察到此行为。元数据的差异会导致错误,正在通过 Oracle 错误号 bug 7836009 进行调查。

要解决此问题,请将 NLS_LANG 设置为与开发包的机器相同的设置,这会导致在两种情况下报告相同的元数据。应在注册表中设置 NLS_LANG 环境变量

  HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_<homename>\NLS_LANG

在Linux中导出NLS_LANG变量与原始数据库的值相同

也可以通过在部署后刷新 SSIS 包来解决此问题,这将刷新元数据。

希望对您有所帮助。 问候。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-26
    • 2015-08-18
    • 1970-01-01
    相关资源
    最近更新 更多