Oracle 10g
Oracle 10g
Oracle 在其技術白皮書上闡明,Oracle 10g資料庫關鍵目標有二:1 降低管理開銷,2 提高性能。 Oracle 10g的增強有對高可用性的增強、新的 Flashback 能力、支持回滾更新操作;對安全性的增強,便於管理大量的用戶; BI 方面的增強 , 包括改進的 SQL 能力、分析功能、 OLAP 、數據挖掘的能力等;對非關係型數據存儲的能力得到了改進; XML 的能力;對開發能力支持的加強,對生物信息學( Bioinformatics )的支持。
1.對新的架構支持
對 Intel 64 位平台的支持。支持 infiniband。極大地改進了多層開發架構下的性能和可擴展能力。新的版本也借用了 Windows操作系統對 Fiber 支持的優勢。
2.高速數據處理能力
在這個版本中,一個新類型的表對象被引入。該表結構對大量插入和解析數據很有益處。這個表結構對 FIFO 的數據處理應用有著很好的支持。這樣的應用在電信、生產應用中常常能夠用到。通過使用這種優化的表結構能夠對電信級的應用起到巨大的性能改進作用。
3.RAC workload 管理
一個新的服務框架。使得管理員作為服務來設置、管理監視應用負載。
4.針對 OLAP 的分區
通過對哈希分區的全局索引的支持可以提供大量的併發插入的能力
5.新的改進的調度器( Scheduler )
引入了一個新的資料庫調度器,提供企業級調度功能。這個調度器可以使得管理員有能力在特定日期、特定時間調度 Job。還有能力創建調度對象的庫能夠和既有的對象被其他的用戶共享。
這個版本的 Oracle 的一個引人注目之處就是管理上的極大簡化。大量複雜的配置和部署設置被取消或者簡化。常見的操作過程被自動化。對不同區域的大多數調整和管理操作得到簡化。
1.簡化的資料庫配置與升級
Oracle 10g安裝
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 的支持
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 更好的支持。
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;