2012-10-11 86 views
1

具有长数据类型特征的LOB也有它自己的特殊功能。由于它具有Long的特性,因此可以为Long数据类型本身提供附加的特殊功能。因此,不需要再有一个数据类型的LOB和Long本身就可以一直使用。那么为什么Long已被LOB取代?为什么长数据类型已被Oracle中的LOB取代?

即使LOB是LONG的替代品,为了向后兼容,仍然使用最新版本的Oracle提供Long。这是额外的开销吗?

回答

6

LOB实际上是四种不同的数据类型:CLOB代表LONG RAW,BLOB代表LONG RAW,加上BFILE和XMLType。 Oracle在20世纪90年代推出了这些类型,因为LONG(和LONG RAW)是Teh Suck!并非常难以合作。如果数据库版本为8.0或更高版本,则没有理由使用LOB的LONG intsead。

那么,为什么我们仍然有LONGs?

LONG和CLOB是原始数据类型。因此,虽然理论上Oracle可以修改LONG以使CLOB在实践中具有“额外的特性”,但这对于将数据库升级到8.0(引入LOB的版本)会产生灾难性影响。

要说灾难性也许是夸张,但事实是改造CLOB,风格特色多头意味着改变数据类型。所以升级将不得不包括自动数据转换。此外,可能存在各种各样的行为将需要改变的低级别例程。这只是数据损坏的一个巨大载体。引入新的数据类型并让各个站点处理迁移要简单得多(因此更安全)。

从8.0开始Oracle不再推荐LONG,并提供了将LONG转换为CLOB的机制,因此在理想的情况下,每个人都可以继续前进,Oracle可以从数据库中删除LONG数据类型。然而,在现实生活中,许多商店仍在使用LONG,而且太多会打破。

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

+0

如果Long提供了CLOB的特殊功能,可能会产生怎样的灾难性影响? – Rajkumar

+1

如果他们是白痴,应该解决的事情。 Oracle通知公众“不要使用LONG数据类型”,我期望他们说“LONG将在即将发布的版本中被解雇”。我不会,也不会使用LONG,但嘿! Oracle正在使用它!有两种字典经常用在我需要漫步的地方LONG:* _TAB_PARTITIONS.HIGH_VALUE和* _VIEWS.TEXT。我们需要向甲骨文发送一份有大约20,000名用户签名的请愿书,你说什么? “ –

+0

”......在现实生活中,许多商店仍在使用LONGs,而且太多会破坏。“他们的测试环境正确吗?但我认为我知道这种方法的理由 - 如果在发行版中会发生太多升级,Oracle的客户端可能会有更多的选择来停止使用他们的数据库。但从数量上看,我认为升级并不是留下或离开Oracle的决定性因素。 –

相关问题