性能與擴展能力
1.對新的架構支持
對 Intel 64 位平台的支持。支持 infiniband 。極大地改進了多層開發架構下的性能和可擴展能力。新的版本也借用了 Windows作業系統對 Fiber 支持的優勢。
2.高速數據處理能力
在這個版本中,一個新類型的表對象被引入。該表結構對大量插入和解析數據很有益處。這個表結構對 FIFO 的數據處理套用有著很好的支持。這樣的套用在電信、生產套用中常常能夠用到。通過使用這種最佳化的表結構能夠對電信級的套用起到巨大的性能改進作用。
3.RAC workload 管理
一個新的服務框架。使得管理員作為服務來設定、管理監視套用負載。
4.針對 OLAP 的分區
通過對哈希分區的全局索引的支持可以提供大量的並發插入的能力
5.新的改進的調度器( Scheduler )
引入了一個新的資料庫調度器,提供企業級調度功能。這個調度器可以使得管理員有能力在特定日期、特定時間調度 Job 。還有能力創建調度對象的庫能夠和既有的對象被其他的用戶共享。
可管理性
這個版本的 Oracle 的一個引人注目之處就是管理上的極大簡化。大量複雜的配置和部署設定被取消或者簡化。常見的操作過程被自動化。對不同區域的大多數調整和管理操作得到簡化。
1.簡化的資料庫配置與升級
提供了預升級檢查能力,有效地減少升級錯誤。 去除了了很多和資料庫配置有關的任務或者對其加以自動化。在初始安裝的時候,所有資料庫都被預配置包括在 OEM 環境中而無需建立一個管理資料庫。補丁程式可以自動標記並自動從 Oracle Metalink 下載。
2.自動存儲管理
新版本的資料庫能夠配置成使用 Oracle 提供的存儲虛擬層( Storage Virtualization Layer) 。自動並簡化資料庫的存儲。管理員可以管理少數的磁碟組而無需管理數千個檔案--自動存儲管理功能可以自動 配置磁碟組,提供數據冗餘和數據的最佳化分配。
3.自動的基於磁碟備份與恢復
10G也極大的簡化了備份與恢復操作。這個改進被稱作Disk based Recovery Area ,可以被一個在線上Disk Cache 用來進行備份與恢復操作。備份可以調度成自動化操作,自動化最佳化調整。備份失敗的時候,可以自動重啟,以確保 Oracle 能夠有一個一致的環境使用。
4.套用最佳化
以前的版本中, DBA 更多時候要手工對 SQL 語句進行最佳化調整。這裡引入了一些新的工具,從此 DBA 無需手工做這些累人的事情。(這樣的說法似乎有些太絕對)
5.自動化統計收集
為對象自動化收集最佳化統計。
6.自動化實例調整
DBA需要干預的越來越少么? 好訊息還是壞訊息?
7.自動化記憶體調整
上一個版本對 UGA 能夠進行自動化 Tuning ,這版本能夠對 SGA 相關的參數進行調整。這意味著 DBA 只需要對2 個記憶體參數進行配置:用戶可用的總的記憶體數量和共享區的大小。
高可用性的加強
1.縮短套用和資料庫升級的宕機時間
通過使用 standby 資料庫。允許在不同版本的 standby 和產品資料庫間切換。現有的在線上重定義功能能夠支持一步克隆所有相關的資料庫對象。
2.回閃 (Flashback) 任何錯誤
該版本的 Oracle 也擴展了 Flashback 的能力。加了一個新類型的 Log 檔案,該檔案記錄了資料庫塊的變化。這個新的 Log 檔案也被自動磁碟備份和恢復功能所管理。如果有錯誤發生,例如針對不成功的批處理操作,DBA 可以運行 FlashBack。用這些 before Images 快速恢復整個資料庫到先前的時間點--無須進行恢復操作,這個新功能也可以用到 Standby 資料庫中。
Flashback 是資料庫級別的操作,也能回閃整個表。既有的 FlashBack 查詢的能力也已經加強。在這個版本中,管理員能夠快速查看特定事務導致的變化。
3.Enhanced Data Guard Infrastructure
4.安全的加強
VPD 得到了改進 ( 希望這次名字不會換成別的 ),支持更多的安全協定。
DATA INTEGRATION
1.Oracle streams 這個版本也包括Oracle streams功能、性能以及管理上的改進。新功能包括對產品資料庫downstream capture/ offloading the capture 和挖掘操作等。對 LONG、LONG RAW、NCLOB 等數據類型支持加強。對IOT/級聯刪除得到加強,性能也得到提升。
2.Data Pump
Oracle Data Pump--高速、並行的技術架構,能夠快速的在資料庫間移動數據與元數據。最初的 Export/Import 被 Data Pump Export/Data Pump Import所取代,並提供了完美粒度的對象選擇性。Data Pump 操作具有可恢復性。相比 Exp/Imp,有了很大的改進。歸檔數據、邏輯備份的數據和可傳輸的表空間都可以用 Data Pump 來操作。
這個特性和NCR的產品工具有很大的相似性(連名字都很相似),究竟功能性能會怎樣,還是讓我們拭目以待。
商務智慧型
(BIOINFORMATICS)
1.超大資料庫的支持
可支持到 8E 的數據量。改進的存儲、備份、恢復管理也對超大資料庫有著很好的支持。分區可以支持索引組織表。
2.縮簡訊息周轉時間
新版本的 Oracle 提供了加強的 ETL 功能。可以方便的構建大型數據倉庫和多個數據集市。一個新的變化數據捕捉的框架允許管理員能夠輕易的捕捉並發布數據的變化。新的 CDC 功能利用的是 Oracle 的 Stream 技術架構。
對於大數據量的轉移,新版本提供了對可傳輸表的跨平台的支持,允許大批量數據快速從資料庫上的脫離並附接到第二個資料庫上。
3.增強的外部表功能
4.SQL Loader 的功能加強
5.增強的 SQL 分析能力
SQL 語句的功能針對 BI 得到了極大地增強。
6.增強的 OLAP 分析功能
Oracle 內建的分析功能得到增強。提供了新的基於 PL/SQL 和 XML 的接口。
提供了新的並行能力,以便於進行聚合和 SQL IMPERT 操作。一些算法得到改進。同時 OEM 能夠用來監視並管理數據挖掘環境。
7.BIOINFORMATICS 的支持
這個版本包含對 BIOINFORMATICS 技術的特定支持。包括對 Double 和 Float數據類型的 Native 支持。內建的統計函式支持常見的 ANOVA 分析等。
8.改進的數據挖掘的能力
擴展數據
1.XML 方面的增強
2.多媒體
在前面的版本中,存在著媒體檔案4G的限制。媒體檔案的 4G 大小限制去掉了(限制是:8-128T)。通過 SQL多媒體標準能夠訪問多媒體數據。對更多的新的多媒體格式提供支持。
3.文檔和文本管理
提供了自動發現未知文檔的語言和字元集的功能。支持新的 German 拼寫規則 Japanese adverb 等等。
本地分區的文本索引可以在線上創建。文檔可以在索引創建和重建的時候插入。文檔服務,如高亮功能無須重建索引。檢索文檔的能力也得到提高。
套用開發方面的加強
1、SQL 語言的加強
SQL 和 PL/SQL 對正則表達式支持。激動人心的一個特性,這個特性怕是要改寫很多人編程的習慣了。或許能見到一條 SQL 語句完成更為複雜的功能。這個版本還支持表達式過濾的功能。
2、PL/SQL 的增強
最重要的當數新的 PL/SQL 最佳化編譯器,提供了一個框架有效地最佳化編譯 PL/SQL 程式。 這個版本還引入了兩個新的資料庫包:UTL_COMPRESS、UTL_MAIL。
3、全球化和 Unicode 的增強提供了Globalization Development Kit (GDK)。Oracle NLS定義檔案開始具有平台無關性.
4、Java Improvements
對 JDBC 更好的支持。
其他
OCCI 和 Pre Compilers 的改進; 資料庫 Web 服務的改進; 基於 Web 的開發環境的加強等 .
UNIX平台支持
Oracle系統一般運行於HP-UX,或是AIX平台。這些大型UNIX系統都不會用於桌面系統,一般用來運行Oracle、Sybase、DB2等大型資料庫系統。其系統構建、實施、運維、高可用設定,有其平台特點。可參看一本極具特色的技術專著《Oracle大型資料庫系統在AIX / UNIX上的實戰詳解》。該書以AIX 等大型UNIX平台為主線,以其他UNIX系統如HP-UX系統為參照,描述了Oracle10g、Oracle 11g資料庫系統在這些平台上的構架方法、集群化要素、綜合容災手段等。.
死鎖解決辦法
大家通常會遇到這種現象,在自己web項目首頁使用用戶名,密碼登入系統時,始終停留在本頁面,無法進入系統,或是在執行某些操作後,系統一直處在等待狀態,不出結果,後台也無任何錯誤提醒。此時,很大的可能就是資料庫鎖等待,所要查詢的包含用戶名和密碼的表或是用戶正操作的表正在被占用造成的。
鎖等待的現象:程式在執行的過程中,點擊確定或保存按鈕,程式沒有回響,也沒有出現報錯。
網上有很多人把這種現象稱為死鎖,是不合理的。此時的oracle並未發生任何死鎖現象,只是它一直在等待使用者前一個操作的提交。
產生鎖等待的原因:當對於資料庫某個表的某一列做更新或刪除等操作,執行完畢後該條語句不提交,另一條對於這一列數據做更新操作的語句在執行的時候就會處於等待狀態,此時的現象是這條語句一直在執行,但一直沒有執行成功,也沒有報錯。
鎖等待定位方法:
Sql代碼
select sql_text from v$sql where hash_value in
(select sql_hash_value from v$session where sid in
(select session_id from v$locked_object))
Sql代碼
SELECT s.username,l.OBJECT_ID,l.SESSION_ID,s.SERIAL#,
l.ORACLE_USERNAME,l.OS_USER_NAME,l.PROCESS
FROM V$LOCKED_OBJECT l,V$SESSION S WHERE l.SESSION_ID=S.SID;
以上兩種方法皆可以,不過查詢出來的屬性不同,可以根據個人需要選擇。其中有一種方法速度較快,但我忘記是哪一種了,您若遇到資料庫出現和鎖等待相符的現象,可以用這兩種方法查詢試一下,若得到結果,則說明確實發生鎖等待現象了。
單個解決鎖等待的方法:
Sql代碼
alter system kill session 'sid, serial#'
其中的sid和serial可以通過上面鎖等待定位方法的第二個方法得到,sid對應SESSION_ID,serial#對應SERIAL#。例如:
Sql代碼
alter system kill session '130,2';
我通常會遇到上千個鎖,實在沒辦法一個一個的kill掉了,所以我通常使用下述批量解鎖方法。
批量解鎖方法:
註:此方法應在plsql中運行
Sql代碼
declare cursor mycur is
select b.sid,b.serial#
from v$locked_object a,v$session b
where a.session_id = b.sid group by b.sid,b.serial#;
begin
for cur in mycur loop
execute immediate ( 'alter system kill session '''||cur.sid || ','|| cur.SERIAL# ||''' ');
end loop;
end;