基于版本的重定義
Oracle 11g R2增加了一個(gè)強(qiáng)大的新工具,它可以檢出應(yīng)用程序數(shù)據(jù)庫對(duì)象的任一版本,不是所有數(shù)據(jù)庫對(duì)象都支持版本化管理,但私有的同義詞,視圖和幾乎所有的PL/SQL對(duì)象,包括存儲(chǔ)過程、函數(shù)、類型、類型主體、包、包主體和觸發(fā)器,版本化管理的真正好處是簡(jiǎn)化了部署一個(gè)修改版本的應(yīng)用程序代碼到生產(chǎn)數(shù)據(jù)庫,如果部署時(shí)遇到一系列的錯(cuò)誤,可以很容易地將所有影響的對(duì)象回滾到上一個(gè)版本。
消除了閃回?cái)?shù)據(jù)歸檔上的DDL限制
在前一篇文章中,我深入研究了Oracle 11g R1的新特性“閃回?cái)?shù)據(jù)歸檔(Flashback Data Archive,F(xiàn)BDA)”,它也被稱為“全部召回(Total Recall)”,它只捕獲變化的數(shù)據(jù),將這些數(shù)據(jù)放在一套特殊的對(duì)象中,它們構(gòu)成了FBDA,當(dāng)用戶通過閃回版本查詢(Flashback Versions query)查詢表的歷史記錄時(shí),Oracle將會(huì)直接從數(shù)據(jù)庫的UNDO表空間返回最近變化的數(shù)據(jù),從FBDA返回更舊的數(shù)據(jù)。
雖然這個(gè)特性很好,但在早期版本中也有很多限制,包括增加、修改、重命名、刪除表的列、truncate表、修改表的約束、以及修改分區(qū)表的分區(qū)規(guī)范,在Oracle 11g R2中,這些限制全部沒有了,對(duì)于更復(fù)雜的DDL操作,如使用DBMS_REDEFINITION包重定義已經(jīng)存儲(chǔ)到FBDA的基礎(chǔ)表,Oracle 11g R2提供了新的DBMS_FLASHBACK_ARCHIVE包,存儲(chǔ)過程DISASSOCIATE_FBA將會(huì)把基礎(chǔ)表從FBDA中分離出來,一旦請(qǐng)求的改變完成,存儲(chǔ)過程REASSOCIATE_FBA會(huì)被用來重新關(guān)聯(lián)修改的表和基礎(chǔ)表。
按需創(chuàng)建分段
在之前的版本中,使用CREATE TABLE語句創(chuàng)建表時(shí),會(huì)同時(shí)自動(dòng)創(chuàng)建表的初始段,從Oracle 11gR2開始,這個(gè)默認(rèn)的行為有所變化,創(chuàng)建表時(shí)不會(huì)創(chuàng)建初始段,直到有數(shù)據(jù)插入到這個(gè)表。此外,任何依賴于該表的索引或LOB段也不會(huì)創(chuàng)建,直到有數(shù)據(jù)插入才會(huì)創(chuàng)建,表的SEGMENT CREATION DEFERRED存儲(chǔ)屬性指定了這個(gè)默認(rèn)行為,但可以使用SEGMENT CREATION IMMEDIATE屬性覆蓋它。
不可用索引大小歸零
在重新載入大表時(shí),比如一個(gè)有上百萬行的數(shù)據(jù)倉庫事實(shí)表,要提高這種表的加載速度,最簡(jiǎn)單的辦法是將該表上的所有索引置為不可用,在數(shù)據(jù)加載完畢后,在重建這些索引,Oracle 11g R2認(rèn)可了這一做法,并采取了實(shí)質(zhì)性的措施,當(dāng)索引被標(biāo)記為不可用時(shí),它會(huì)自動(dòng)刪除所有索引段。
小結(jié)
Oracle 11g R2延續(xù)了自O(shè)racle 10g以來令人稱道的自我管理,自我調(diào)整,自我治愈的特性,這個(gè)新版本提供了太多的新特性,有些是遲來的功能,有些是革新,Oracle DBA可以借助這些新特性提高工作效率,成為一名真正的“信息工程師”。