天天看點

oracle11g最新特性

Oracle 11g現在已經開始進行beta測試,預計在2007年底要正式推出。和她以前其他産品一樣,新一代的oracle又将增加很多激動人心的新特性。下面介紹一些11g的新特性。

1.資料庫管理部分

◆資料庫重演(Database Replay)

這一特性可以捕捉整個資料的負載,并且傳遞到一個從備份或者standby資料庫中建立的測試資料庫上,然後重演負責以測試系統調優後的效果。

◆SQL重演(SQL Replay)

和前一特性類似。但是隻是捕捉SQL負載部分,而不是全部負載。

◆計劃管理(Plan Management)

這一特性允許你将某一特定語句的查詢計劃固定下來,無論統計資料變化還是資料庫版本變化都不會改變她的查詢計劃。

◆自動診斷知識庫(Automatic Diagnostic Repository ADR)

當Oracle探測到重要錯誤時,會自動創紀一個事件(incident),并且捕捉到和這一事件相關的資訊,同時自動進行資料庫健康檢查并通知DBA。此外,這些資訊還可以打包發送給Oracle支援團隊。

◆事件打包服務(Incident Packaging Service)

如果你需要進一步測試或者保留相關資訊,這一特性可以将與某一事件相關的資訊打包。并且你還可以将打包資訊發給oracle支援團隊。

◆基于特性打更新檔(Feature Based Patching)

在打更新檔包時,這一特性可以使你很容易區分出更新檔包中的那些特性是你正在使用而必須打的。企業管理器(EM)使你能訂閱一個基于特性的更新檔服務,是以企業管理器可以自動掃描那些你正在使用的特性有更新檔可以打。

◆自動SQL優化(Auto SQL Tuning)

10g的自動優化建議器可以将優化建議寫在SQL profile中。而在11g中,你可以讓oracle自動将能3倍于原有性能的profile應用到SQL語句上。性能比較由維護視窗中一個新管理任務來完成。

◆通路建議器(Access Advisor)

11g 的通路建議器可以給出分區建議,包括對新的間隔分區(interval partitioning)的建議。間隔分區相當于範圍分區(range partitioning)的自動化版本,她可以在必要時自動建立一個相同大小的分區。範圍分區和間隔分區可以同時存在于一張表中,并且範圍分區可以轉換 為間隔分區。

◆自動記憶體優化(Auto Memory Tuning)

在9i中,引入了自動PGA優化;10g中, 又引入了自動SGA優化。到了11g,所有記憶體可以通過隻設定一個參數來實作全表自動優化。你隻要告訴oracle有多少記憶體可用,她就可以自動指定多少 記憶體配置設定給PGA、多少記憶體配置設定給SGA和多少記憶體配置設定給作業系統程序。當然也可以設定最大、最小門檻值。

◆資料總管(Resource Manager)

11g的資料總管不僅可以管理CPU,還可以管理IO。你可以設定特定檔案的優先級、檔案類型和ASM磁盤組。

◆ADDM

ADDM在10g被引入。11g中,ADDM不僅可以給單個執行個體建議,還可以對整個RAC(即資料庫級别)給出建議。另外,還可以将一些訓示(directive)加入ADDM,使之忽略一些你不關心的資訊。

◆AWR 基線(AWR Baselines)

AWR基線得到了擴充。可以為一些其他使用到的特性自動建立基線。預設會建立周基線。

2.PLSQL部分

◆結果集緩存(Result Set Caching)

這 一特性能大大提高很多程式的性能。在一些MIS系統或者OLAP系統中,需要使用到很多"select count(*)"這樣的查詢。在之前,我們如果要提高這樣的查詢的性能,可能需要使用物化視圖或者查詢重寫的技術。在11g,我們就隻需要加一個 的提示就可以将結果集緩存住,這樣就能大大提高查詢性能。當然,在這種情況下,我們可能還要關心另外一個問題:完整 性。因為在oracle中是通過一緻性讀來保證資料的完整性的。而顯然,在這種新特性下,為提高性能,是從緩存中的結果集中讀取資料,而不會從復原段中讀 取資料的。關于這個問題,答案是完全能保證完整性。因為結果集是被獨立緩存的,在查詢期間,任何其他DML語句都不會影響結果集中的内容,因而可以保證數 據的完整性。

◆對象依賴性改進

在11g之前,如果有函數或者視圖依賴于某張表,一旦這張表發生結構變化,無論是否涉及到函數或視圖所依賴的屬性,都會使函數或視圖變為invalid。在11g中,對這種情況進行了調整:如果表改變的屬性與相關的函數或視圖無關,則相關對象狀态不會發生變化。

◆正規表達式的改進

在10g中,引入了正規表達式。這一特性大大友善了開發人員。11g,oracle再次對這一特性進行了改進。其中,增加了一個名為regexp_count的函數。另外,其他的正規表達式函數也得到了改進。

◆新SQL文法 =>

我們在調用某一函數時,可以通過=>來為特定的函數參數指定資料。而在11g中,這一文法也同樣可以出現在sql語句中了。例如,你可以寫這樣的語句:

select f(x=>6) from dual;

◆對TCP包(utl_tcp、utl_smtp…)支援FGAC(Fine Grained Access Control)安全控制

◆增加了隻讀表(read-only table)

在以前,我們是通過觸發器或者限制來實作對表的隻讀控制。11g中不需要這麼麻煩了,可以直接指定表為隻讀表。

◆觸發器執行效率提高了

内部單元内聯(Intra-Unit inlining)

在C語言中,你可以通過内聯函數(inline)或者宏實作使某些小的、被頻繁調用的函數内聯,編譯後,調用内聯函數的部分會編譯成内聯函數的函數體,因而提高函數效率。在11g的plsql中,也同樣可以實作這樣的内聯函數了。

◆設定觸發器順序

可能在一張表上存在多個觸發器。在11g中,你可以指定它們的觸發順序,而不必擔心順序混亂導緻資料混亂。

◆混合觸發器(compound trigger)

這是11g中新出現的一種觸發器。她可以讓你在同一觸發器中同時具有申明部分、before過程部分、after each row過程部分和after過程部分。

◆建立無效觸發器(Disabled Trigger)

11g中,開發人員可以可以閑建立一個invalid觸發器,需要時再編譯她。

◆在非DML語句中使用序列(sequence)

在之前版本,如果要将sequence的值賦給變量,需要通過類似以下語句實作:

select seq_x.next_val into v_x from dual;

在11g中,不需要這麼麻煩了,下面語句就可以實作:

v_x := seq_x.next_val;

◆PLSQL_Warning

11g中,可以通過設定PLSQL_Warning=enable all,如果在"when others"沒有錯誤爆出就發警告資訊。

◆PLSQL的可繼承性

可以在oracle對象類型中通過super(和java中類似)關鍵字來實作繼承性。

◆編譯速度提高

因為不在使用外部C編譯器了,是以編譯速度提高了。

◆改進了DBMS_SQL包

其中的改進之一就是DBMS_SQL可以接收大于32k的CLOB了。另外還能支援使用者自定義類型和bulk操作。

◆增加了continue關鍵字

在PLSQL的循環語句中可以使用continue關鍵字了(功能和其他進階語言中的continue關鍵字相同)。

◆新的PLSQL資料類型——simple_integer

這是一個比pls_integer效率更高的整數資料類型。

3.其他部分

◆增強的壓縮技術

可以最多壓縮2/3的空間。

◆高速推進技術

可以大大提高對檔案系統的資料讀取速度。

◆增強了DATA Guard

可以建立standby資料庫的快照,用于測試。結合資料庫重演技術,可以實作模拟生成系統負載的壓力測試。

◆線上應用更新

也就是熱更新檔——安裝更新或打更新檔不需要重新開機資料庫。

◆資料庫修複建議器

可以在錯誤診斷和解決方案實施過程中指導DBA。

◆邏輯對象分區

可以對邏輯對象進行分區,并且可以自動建立分區以友善管理超大資料庫(Very Large Databases VLDBs)。

◆新的高性能的LOB基礎結構

◆新的PHP驅動