【问题标题】:Why Long data type has been replaced by LOB in Oracle? [closed]为什么Long数据类型在Oracle中被LOB取代了? [关闭]
【发布时间】:2012-10-01 20:18:44
【问题描述】:

LOB 具有 Long 数据类型的特点,也有自己的特点。由于它具有 Long 的特性,因此可以将附加的特殊特性赋予 Long 数据类型本身。因此,不需要再多一种数据类型 LOB 并且 Long 本身可以一直使用。那为什么 Long 被 LOB 代替了呢?

即使 LOB 是 LONG 的替代品,Long 仍可用于最新版本的 Oracle 以实现向后兼容性。这是额外的开销吧?

【问题讨论】:

    标签: database oracle sqldatatypes


    【解决方案1】:

    LOB 实际上是四种不同的数据类型:CLOB 代表 LONG,BLOB 代表 LONG RAW,再加上 BFILE 和 XMLType。甲骨文早在 1990 年代就引入了这些类型,因为 LONG(和 LONG RAW)很烂!并且非常难以合作。如果数据库版本为 8.0 或更高,则没有理由使用 LOB 的 LONG intsead。

    那么为什么我们还有 LONG 呢?

    LONG 和 CLOB 是原始数据类型。因此,尽管理论上 Oracle 可以修改 LONG 以在实践中具有 CLOB 的“附加特殊功能”,这对将数据库升级到 8.0(引入 LOB 的版本)产生灾难性影响是正确的。

    说灾难性可能是双曲线的,但事实上将 CLOB 风格的功能改造为 LONG 意味着更改数据类型。因此,升级必须包括自动数据转换。此外,可能还有各种低级例程,它们的行为需要改变。这只是数据损坏的巨大载体。引入新数据类型并让各个站点处理迁移要简单得多(因此更安全)。

    自 8.0 以来,Oracle 已弃用 LONG,并提供了将 LONG 转换为 CLOB 的机制,因此在理想情况下,每个人都会继续前进,Oracle 可以从数据库中删除 LONG 数据类型。然而,在现实生活中,许多商店仍在使用 LONG,太多会损坏。

    所以甲骨文必须保留它们。问题的规模可以从 Oracle 在数据字典(如 USER_/ALL_/DBA_VIEWS)中仍然使用 LONG 本身这一事实得出。

    【讨论】:

    • 如果 Long 被提供了 CLOB 的特殊功能,可能会产生什么样的灾难性影响?
    • 如果它们是白痴就应该修复。 Oracle 通知公众“不要使用 LONG 数据类型”,我希望他们会说“LONG 将在即将发布的版本中被解雇”。我不会也不会使用 LONG,但是,嘿!甲骨文正在使用它!有两个字典经常在我需要遍历 LONG 的地方使用:*_TAB_PARTITIONS.HIGH_VALUE 和 *_VIEWS.TEXT。我们需要向 Oracle 发送一份由大约 20.000 名用户签名的请愿书,你说什么?
    • "...在现实生活中,许多商店仍在使用 LONG,太多会损坏。"他们有测试环境对吗?但我想我知道这种方法的原因——如果在一个版本中发生过多的升级,Oracle 的客户可能有更多的选择来停止使用他们的数据库。但从数量上看,我认为升级对于留下或离开甲骨文并不是决定性的。
    猜你喜欢
    • 2015-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-10
    • 2010-10-20
    • 1970-01-01
    • 2021-08-30
    • 2017-02-24
    相关资源
    最近更新 更多