2012-10-11 29 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的決定性因素。 –

相關問題