Oracle常見名詞解釋
總結了下Oracle官網的解釋,做個筆記方便以後查閱;
Oracle database 是基於網格體系設計的。
網格將相似的IT資源整體地看做一個池,同時充分發揮池中每一個個體的獨特功能。
在網格中管理的IT資源主要有:
1. 基礎設施
2. 應用
3. 資訊
網格的核心理念是:虛擬化和資源供給。
基礎設施網格 基礎設施網格資源包括儲存、處理器、記憶體、網路等硬體資源,及管理這些硬體的軟體資源,如資料庫、儲存管理、應用伺服器和作業系統。
應用網格 網格中的應用資源是蘊含於應用軟體中反映業務邏輯(business logic)和處理流程(process flow)的程式程式碼。 這些應用軟可以是套裝的,也可以是定製的,可以以任何程式語言實現,表現任何層次的業務複雜度。舉例來說,一個接受客戶訂單併發送反饋的程式,一個列印薪水冊的工作流程,或一個 將特定客戶的服務請求傳遞給特定員工的邏輯,都屬於應用資源。
資訊網格 繼基礎設施和應用層之後,網格體系結構的第三個層次是資訊網格。當前的常見的資訊系統現狀是,資訊零散的分佈於企業內,使得從整體了結業務情況或回答一些基本的客戶問題都很困難。當業務人員無法瞭解使用者是誰,他們想購買什麼產品時,資訊的價值就 被大大削弱了。
資訊供給技術包括訊息佇列(message queuing)、資料播送(data propagation)、資料複製 (replication)、抽取轉換載入(ETL),及用於保證資料質量的對映、清洗工具。資料中心–一個隨時與眾多活動資料來源同步資料的中央操作資料庫–的出現,為保證分析所需資料來源的唯一性,同時保證資料分散式使用的靈活性,提供了一個首選的模型。
網格三層次資源的獨立性與協調性 企業的基礎設施、應用、資訊這三個層次的IT資源中的任何一個改為通過網格管理,都能實現更好的服務質量,更大的靈活性,更低的成本。例如,建設了基礎設施網格後無需改寫程式就能感受到改變。同樣,部署一個應用網格(或者說基於服務的體系結構)既無需改變資訊層的管理方式,也無需改變基礎設施層的硬體配置。
基礎設施網格
● 服務能力虛擬化。Oracle實時應用叢集(RAC,Oracle Real Application Clusters)可以使一個數據庫執行在網格中多個叢集節點上,即把多個計算機的處理能力作為池。Oracle是目前唯一不需要將資料分割槽再分佈處理就能利用多個計算機提供 的處理能力的資料庫。Oracle 10g 版本2(Oracle 10g Release 2,Oracle 10g R2)還增加了基於策略來平衡RAC例項之間連線的功能。
● 儲存能力虛擬化。Oracle 資料庫 10g的自動儲存管理功能(ASM,Automatic Storage Management)在資料庫與儲存硬體之間建立了一個虛擬層,多個磁碟可以被視為一個磁碟組,而且磁碟可以在保持資料庫聯機的狀態下動態地新增或移除。現有的資料自動的在可用磁碟間分佈,以便獲得性能和利用效率的優化。在Oracle 10g R2中的ASM支援不同版本的資料庫使用同一個儲存池。
● 網格管理。由於網格將多個伺服器和磁碟視為池,並分配給不同 業務需求,因此要求每個獨立的資源有很強的自管理能力,同時還要提供集中化管理的功能。
資訊網格
資料供給。資訊源自資料,而資料必須在使用者需要的時候就能得到供給。例如,有些使用者也許在地理上很分散,對他們來說資料訪問的及時性比資料的唯一性更加重要。在這種情況下,資料需要在系統間以批量或接近實時的方式共享。Oracle的批量資料遷移技術包括 可移動表空間(Transportable Tablespaces)和資料泵(Data Pump)。
對於粒度更細的資料共享,由Oracle Database 10g 的 Oracle 資料流(Oracle Streams)功能實現。Oracle 資料流能捕捉資料庫事務並在資料庫間傳播,使多個數據庫的資料在發生變化時可以同步的複製。Oracle 資料流將訊息佇列(message queuing)、複製(replication)、事件(events)、資料倉庫載入(data warehouse loading)、通知(notifications )和釋出/訂閱(publish/subscribe)等傳統上相互獨立的資料共享機制整合成為一項統一的技術。
集中化的資料管理。Oracle 10g 資料庫可以管理結構化、半結構化、非結構化等各種型別的資訊,以SQL和XML作為通用的訪問介面,並依據各種型別資料的特點以最適合的方式展示、維護、查詢這些資料的同時。Oracle不僅提供了傳統的關係型資料結構,還內建了OLAP立方體 (OLAP cube)、標準XML資料結構、地理空間資料庫和無限制大檔案管理等資料儲存方式,這就使資訊表現的虛擬化成為可能。通過對這些資料就夠內在的支援,Oracle能夠在迅速在異構的資料來源之間建立關聯,就如同關聯傳統的關係型資料一樣。
元資料管理。Oracle Warehouse Builder(OWB)不僅是傳統意義上批量處理ETL建立資料倉庫的工具。她可以根據預訂規則保證資料質量;進行模糊比對(fuzzy matching)自動消除資料不一致性;通過統計性的分析推斷資料全貌。在Oracle 10g R2中,元資料管理功能得到進一步加強,比如可以週期性執行的“拉”資料(data pull)技術,還有Oracle Streams功能帶來的事務級的“推”資料(data push)技術。
Oracle還具備一系列企業級的資料中心產品(例如,Oracle客戶資料中心,Oracle Customer Data Hub)來實現於操作性資訊源的實時同步,這保證了企業既可以擁有具有唯一真實性的資料來源,又可以繼續使用各種預製、定製、歷史遺留的應用系統。Oralce根據多年來建設企業資訊應用的經驗,為一些通用的業務,如客戶管理、財務管理、產品管理,提供了完善的資料模型。此外,Oracle還提供了資料清洗和資料排程管理功。
元資料推測。Oracle企業搜尋(Oracle Enterprise Search,OES)是新加入Oracle 10g家族的產品。OES 10g 可以檢索所有企業內公開或保密的資訊源,包括email伺服器、文件管理伺服器、檔案系統、網站、資料庫和應用,返回與搜尋請求相關的所有資訊。檢索和索引的過程中會針對不同資料來源採取一系列探索性的方式推斷所有企業資訊的元資料,用來保證每次搜尋都能得到最有用的結果。
表(table)是Oracle資料庫中基本的資料儲存單位。資料庫表包含所有使用者可以訪問的資料。每個表都有列和行。舉例來說,一個儲存員工資訊的表通常有一列為員工編號,每行的此列都用來儲存員工編號資訊。
索引(index)和表相關,是一種可選的資料結構。建立索引是為了提高資料讀取的效能。就像本文件的目錄可以幫你快速定位所需資訊一樣,通過Oracle索引可以更快地訪問表資料。
檢視(view)是一種基於資料表或其他檢視而定義的邏輯物件,用於展現其中的資料。檢視也可以被看成一個儲存的查詢 語句。檢視並不實際包含資料,而是從她所依賴的表中獲取資料。
像表一樣,對檢視可以進行查詢、更新、插入、和刪除操作,但有所限制。所有對檢視的操作都將被反映到檢視所依賴的基礎表(base tables)中。
通過檢視可以限制使用者訪問表中指定的行和列,實現了另一層次的表安全控制。她還可以用於儲存複雜的查詢、隱藏資料的複雜性。
簇(cluster)是一組物理上儲存在一起的表,她適用於數個表有相同的列而且經常一起使用的情況。因為相關的資料物理的儲存在一起,有利於降低磁碟存取時間。
同義詞是表、檢視、物化檢視、序列、過程、函式、包、型別、Java類、使用者自定義物件、或其他同義詞的別名。因為同義詞只是個別名,除了在資料字典中的定義之外他不需額外的儲存空間。
每個Oracle資料庫都有資料字典(data dictionary)。Oracle資料字典是一系列只讀的表和索引,用於描述資料庫。例如,資料字典中儲存了資料庫邏輯、物理結構的資訊。資料字典中還包括:
1. Oracle資料庫使用者資訊
2. 資料庫表的完整性約束定義資訊
3. 為方案物件分配的空間及其空間使用情況
系統全域性區(System Global Area,SGA)是包含了一個Oracle例項所擁有的資料及控制資訊的共享記憶體區域。Oracle在例項啟動時分配SGA空間,並在例項關閉時回收。每個例項都有自己的SGA。
連線到Oracle資料庫中的使用者可以共享SGA中的資料。為了優化效能,應該使SGA儘可能的大(還要依據實際可用記憶體情況而定),以便在記憶體中儘可能多的儲存資料,使磁碟I/O最小化。
SGA的內容可以被分為以下幾類記憶體結構,包括資料庫緩衝區,重做日誌緩衝區,和共享池。
資料庫緩衝區(database buffer)儲存最近使用的資料塊。一個例項中全部的資料庫緩衝區被稱為資料快取。資料快取同時包含修改過和未修改的資料塊。 如果最近使用的(通常也是最常用的)資料被放在了記憶體中,對磁碟I/O的需求就減少了,因此效能得到了提高。
重做日誌緩衝區(redo log buffer)用於儲存重做條目(redo entry)–用於記錄資料庫資料變化的日誌。重做日誌緩衝區中儲存的重做條目將被寫入聯機的重做日誌(online redo log)檔案中,以備資料庫恢復使用。重做日誌檔案的容量是固定的。
共享池(shared pool)中包含的是共享的記憶體結構,例如共享SQL區(shared SQL area)。處理所有提交到資料庫的SQL語句都要用到共享SQL區。共享SQL區中包含了語句對應的解析樹(parse tree)、執行計劃(execution plan)等資訊。一個共享SQL區可以被提交了相同SQL語句的多個應用程式使用,以便節約記憶體空間。
遊標(cursor)可以看作是私有SQL區的控制代碼或名稱,在SQL語句執行過程中儲存解析後的語句和其它資訊。( 在Oracle Call Interface(OCI)中游標被稱為語句控制代碼(statement handle)。)大部分Oracle使用者只會使用Oracle工具提供的自動遊標處理功能,此外Oracle程式設計介面為開發者提供了更多對遊標的控制能力。
程式全域性區(Program Global Area,PGA)是伺服器後臺程序所需的資料與控制資訊的記憶體緩衝區。PGA是當伺服器後臺程序啟動時由Server建立的。PGA中儲存的資訊由Oracle的配置情況決定。
Oracle程序結構在資料庫中的作用是:
1. 使多使用者可以併發地訪問同一個資料庫
2. 保證併發多使用者、多應用的環境下資料庫的高效能
使用者程序用於執行應用程式(例如OCI或OCCI編制的程式)或Oracle工具(例如企業管理器)中的程式碼。使用者程序還可以通過程式設計介面管理自身 與服務程序的通訊,後面的章節將詳細講述。
服務程序:
Oracle建立服務程序來處理來自使用者程序的請求。服務程序可以和使用者程序通訊,也可以和Oracle伺服器互動,執行使用者程序的請求。例如,如果使用者查詢所需的資料不在SGA的資料緩衝區中,則與此使用者程序相關的服務程序就從資料檔案中將所需的資料塊讀入SGA。
Oracle可以為每個服務程序分配不同數量的使用者程序。在專用服務模式(dedicated server configuration)下,每個只處理一個使用者程序的請求。在共享服務模式(shared server configuration)下,大量使用者可以共享幾個服務程序,通過減少服務程序數量達到有效利用系統資源的目的。
在有些系統中,使用者、服務程序是分開的,有時兩者也可以合併成一個程序。如果系統執行在共享服務模式下,或者使用者、服務程序執行在不同的計算機之上,那麼使用者、服務程序必須分開。在客戶/服務(client/server)模式下使用者、服務程序是執行在不同計算機上的。
Oracle網路服務是Oracle中負責和各種不同型別的網路(network)、不同型別的通訊協議(communication protocol)互動的元件,通過Oracle網路服務可以實現分散式的處理和分散式資料庫。
Oracle網路(Oracle Net)是Oracle網路服務的一個元件,用於在客戶應用程式和Oracle資料庫之間建立會話(network session)。當會話建立後,Oracle負責在應用程式和資料庫伺服器傳遞資料。資料庫執行環境內的節點都安裝了Oracle網路元件,因此她能夠建立和維護應用程式 與資料庫之間的連線,同時協助她們交換資訊。
Oracle工作流程:
1. 在執行Oracle的計算機上啟動一個例項(這臺計算機也被稱為主機(host)或資料庫伺服器(database server))。
2. 執行應用程式的計算機(也被稱為本地計算機(local computer)或客戶端工作站(client workstation))中啟動了使用者程序(user process)。客戶端應用程使用與所在網路環境相匹配的Oracle網路服務驅動與伺服器建立連線。
3. 資料庫伺服器也執行與網路環境相匹配的Oracle網路服務驅動。當伺服器監聽到應用程式的請求後,就建立專用伺服器程序為對應的使用者程序提供服務。
4. 使用者執行SQL語句、提交事務(transaction)。例如,使用者改變資料表內某一行的資料。
5. 服務程序收到使用者提交的語句後,先在共享池(shared pool)中查詢是否存在與此語句相同的共享SQL區(shared SQL area)。如果存在,服務程序就檢查使用者是否有訪問所請求資料的許可權,滿足許可權要求的話,就使用已有的享SQL區來處理SQL語句。如共享SQL區不存在,服務程序要為使用者提交的SQL語句建立新的共享SQL區,用來解析、處理此語句。
6. 服務程序從資料檔案(邏輯上看就是資料表)或SGA中獲得所需的資料。
7. 服務程序修改SGA中的資料。由於事務已經提交,LGWR程序立即在重做日誌檔案(redo log file)中記錄此事務。而DBWn程序則在適當的時機將修改過的資料塊寫入磁碟。
8. 如事務成功,服務程序通過網路通知應用程式。如不成功,則嚮應用程式提交錯誤資訊。
9. 在整個過程中,還有一些未提到的後臺程序在執行,她們對整個過程進行監控,在需要時參與進來。此外資料庫伺服器還要管理其它使用者的事務,防止請求相同資料的事務之間產生競爭(contention)。
併發:
多使用者資料庫管理系統的一個主要任務是對併發(concurrency)進行控制,即對多個使用者同時訪問同一資料進行控制。當缺乏有效的併發控制時, 修改資料的操作就不能保證正常,從而危害資料完整性。
管理資料併發的方法是讓每個使用者輪流操作資料。而資料庫管理系統的目標就是減少每個使用者的等待時間,即讓使用者無需等待或使等待難以察覺。所有的資料操作語句 (DML)在執行時要儘可能地減少衝突,還要防止併發事務之間破壞性的相互操作。破壞性的相互操作是指不正確地更新資料或不正確地修改資料結構等操作。在進行併發控制時,資料完整性和資料庫效能要同時保證。
為保證資料庫效能,Oracle應用了不同型別的鎖和多版本資料完整性模型(multiversion consistency model)。這些特性都包含在事務(transaction)的概念裡。應用程式開發人員應該在設計事務時充分發揮其中的併發、完整性等特性。
Oracle提供的讀完整性包含以下特性:
● 保證在一個時間點上,使用者通過查詢語句得到的資料是一致的,且語句執行期間資料不會改變(語句級的讀完整性)
● 保證資料庫中讀資料的使用者無需等待正在讀或寫相同資料的使用者。
● 保證資料庫中寫資料的使用者無需等待正在讀相同資料的使用者。
● 保證在併發事務中寫資料的使用者只需等待正在寫相同資料行的使用者。
為了維護多版本資料一致性模型,當一個表的資料被更新(寫)的同時也在被查詢(讀)時,Oracle必須建立一個維持讀完整性的資料集。當更新發生時,被更新資料的原始值被記錄在資料庫的undo records中。在事務中的更新操作沒有被提交之前,使用者查詢正在被修改的記錄時只能看到她們的原始值。Oracle結合SGA中以及撤銷記錄中的資訊為查詢表資料的使用者構建了一個 維持讀完整性的檢視[此檢視非彼檢視]。
當事務提交後,事務中對資料的修改才被永久記錄。在使用者事務提交後執行的語句九隻能查詢到提交後的資料了。
事務是Oracle實現讀完整性的關鍵。事務是一組SQL語句(這組語句或者被一起提交,或者都不被提交),事務的作用是:
● 決定了為查詢使用者生成的保持讀完整性的檢視的起始點
● 控制著被一個事務修改過的資料何時可以被資料庫中其它進行讀寫操作的事務看到
只讀事務:預設情況下,Oracle只保證語句級的讀完整性。由一個查詢返回的資料對同一時間點來說是一致的。但是在有些情況下,使用者可能需要事務級的讀完整性。也就是要使一個事務中的多個查詢對同一時間點來說都是一致的,這樣事務中的每個查詢都不會受到與之衝突的事務的干擾。如果使用者需要對多個表做多個查詢,建議使用只讀事務。
Oracle也使用鎖(lock)來控制對資料的併發訪問。當更新資料時,資料庫伺服器鎖定被修改的資料直到此更新被提交。在這期間,任何使用者都不能修改被鎖定的資料。這保證了系統的資料完整性。
Oracle提供了獨有的非擴散行級鎖(non-escalating row-level locking)。在其它資料庫中,鎖有可能“擴散 (escalate)”為覆蓋一組資料行,甚至覆蓋整個表,而Oracle只會鎖定正在被更新的唯一行。因為Oracle將鎖資訊儲存在每個資料行內,因此Oracle對鎖定的資料行數沒有 限制,這就消除了使用者併發工作時不必要的延遲。
自動鎖:Oracle鎖定資料的操作無需使用者干預,能夠自動執行。當一個SQL執行時,Oracle根據實際情況的需要,隱式地對資料加鎖。Oracle的鎖管理器自動地在行級對錶資料加鎖,因此對相同的資料競爭可以最小化。
Oracle的鎖管理器依據操作的需要來建立鎖,她可以管理多種型別的行級鎖。排他鎖(exclusive lock)和共享鎖(share lock)是兩種最常見的鎖。在同一資源上(例如資料行或表)只能加一個排他鎖,但是可以加多個共享鎖。共享鎖和排他鎖都允許對被鎖資源進行查詢,但禁止其它所有活動(例如更新或刪除)。
手動鎖:在有些情況下,使用者可能不想使用預設的鎖。Oracle允許使用者在行級(需要先將要修改的行查詢出來)與表級手動加鎖。
靜默資料庫:有時資料庫管理員需要讓資料庫執行在沒有非資料庫管理性操作的環境中,也就暫時拒絕與資料庫管理無關的併發操作,如事務、查詢、PL/SQL語句等。提供這種隔離的方法之一是先關閉資料庫,然後在限制模式下重新開啟。管理員也可以將資料庫置於靜默狀態 (quiesced state)以避免打擾普通使用者操作。在靜默狀態下,資料庫管理員可以安全的執行需要和非DBA使用者的併發操作相隔離的操作。
RAC:一個實時應用叢集(Real Application Clusters,RAC)系統中包含了執行在叢集內不同計算機上的多個Oracle例項,這些例項間通過互聯的方式進行通訊。RAC系統中的各個節點通過叢集管理軟體訪問位於共享磁碟上的共享的資料庫。RAC系統聚合了叢集中互聯的多個計算機的處理能力,提供了系統冗餘能力、接近線形的可 擴充套件性、以及高可用性。RAC系統對OLTP [OnLine Transaction Process]或資料倉庫(data warehouse)系統都有顯著的好處,各種系統和應用都能有效的利用RAC環境。
資料庫管理員(database administrators,DBAs),她(他)們的主要職責是建立資料庫,確保資料庫平穩執行,並對資料庫進行監控。
自動儲存管理(Automatic Storage Management)使資料檔案、控制檔案、日誌檔案的管理更簡單、自動化程度更高。在自動儲存管理模式下,資料檔案被自動地分佈在可用的磁碟上,當系統配置發生變化時可以自動調整。自動儲存管理可以通過映象資料檔案來提供冗餘。當資料檔案自動地分佈在可用的磁碟上時可以提升資料庫效能。當系統配置發生變化時,對資料庫儲存的調整將自動發生。
Oracle使用以下多種資料結構完成針對例項錯誤和磁碟故障的完全恢復:重做日誌(redo log)、撤銷記錄(undo record)、控制檔案(control file)和資料庫備份(database backup)。
重做日誌是一系列檔案,用於防止已提交但位於記憶體中沒有被寫入資料檔案的資料丟失。重做日誌由聯機重做日誌和歸檔重做日誌構成。
歸檔重做日誌是聯機重做日誌的備份,聯機重做日誌永遠處於聯機狀態,所以聯機重做日誌也被簡稱為“重做日誌”。
聯機重做日誌(online redo log)由兩個或多個聯機重做日誌檔案(online redo log files)構成,記錄應用到資料庫的所有變化,包括未提交和已提交的變化。重做條目(redo entry)臨時儲存於SGA的重做日誌緩衝區(redo log buffer)內,後臺程序 LGWR負責將重做條目按順序寫入聯機重做日誌檔案中。LGWR 持續地記錄重做條目,並在使用者提交事務時將對應的重做條目寫入檔案。
撤銷記錄(undo record)儲存在撤銷表空間(undo tablespace)中。撤銷資料(undo data)對Oracle來說有多種作用,例如前文提到的生成讀完整性的資料檢視[見1.2.1.2]。在資料庫恢復中,Oracle先將重做日誌中的記錄的有變化的資料提交到資料庫,再利用撤銷記錄中的資訊回滾未提交的資料。
控制檔案中包括資料庫的檔案結構和當前由 LGWR 寫入的日誌序列號(log sequence number)。在恢復過程中,控制檔案中的資訊用於維護恢復操作的程序。
資料庫備份:由於磁碟故障可能導致多個檔案物理損壞,介質恢復要求在作業系統級恢復被損壞的資料庫檔案。使用者可以通過恢復管理器(Recovery Manager,RMAN)或作業系統工具完成備份資料庫檔案的工作。RMAN是一個Oracle備份恢復工具,她可以管理備份恢復操作,建立資料庫檔案的備份(包括資料檔案、控制檔案、歸檔日誌檔案),還能從備份中恢復資料庫。
資料倉庫:Oracle對資料倉庫的定義是,為查詢、分析而非事務處理而設計的關係型資料庫。資料倉庫中主要儲存來自業務系統的歷史資料,也可以包括來自其他資料來源的資料。資料倉庫系統將資料分析工作和事務處理工作分離以確保各自的效能,同時還可以整合企業內不同的資料來源。
除了關係型資料庫之外,資料倉庫系統還應包括資料抽取、傳輸、轉換、載入方案(ETL),聯機分析(online analytical processing,OLAP)引擎,客戶端分析軟體,以及管理資料收集與資訊釋出的應用程式。
抽取,轉換,載入(ETL):
使用者必須定期向資料倉庫載入資料,以保證資料倉庫能夠有效地支援業務分析。要完成載入資料,就要將資料從操作型系統中抽取並複製到資料倉庫中。將資料從源系統抽取後放入資料倉庫的過程通常被稱為ETL,即抽取(extraction),轉換(transformation),載入(loading)的縮寫。
物化檢視(materialized view)可以將資料查詢結果儲存在一種特殊的方案物件 (schema object)中。常規的檢視並不包含資料,也不佔用儲存空間,物化檢視與之不同,她儲存了基於其它表或檢視的查詢結果。物化檢視的儲存位置可以與她的基表在同一資料庫,也可以不同
當物化檢視與她的基表位於同一資料庫時,使用者就可以使用查詢重寫(query rewrite)功能來提高查詢效能。查詢重寫機制可以自動地在物化檢視和原始表之間選擇最優的方案重寫使用者提交的SQL語句,以便提高查詢的響應時間,同時對使用者透明。查詢重寫在資料倉庫系統中格外有效。
表壓縮是為了減少磁碟和記憶體(主要是資料緩衝區)使用,使用者可以對資料庫內的表、分割槽表以壓縮的方式儲存。這有利於提升只讀型操作的效能。表壓縮還能提升查詢的執行速度,但會輕微增加CPU的負擔。
當Oracle在並行模式下執行SQL語句時,多個程序同時執行一條SQL語句。如果Oracle將執行一個SQL語句的工作分配給多個程序,執行速度會超過單個程序執行的情況。這被稱為並行執行(parallel execution)或並行處理(parallel processing)。
應用程式開發者可以使用SQL中的聯機分析處理(online analytical processing,OLAP)函式實現標準查詢或隨機查詢[標準查詢,即查詢條件、結果集相對固定的查詢;隨機查詢,即使用者根據特定需要,臨時定製的查詢]。除此之外,Oracle中的 Oracle OLAP 元件還提供了多維計算、預測、建模及what-if分析等分析功能。開發者可以利用這些功能構建更為複雜的分析、計劃應用程式,例如銷售和市場分析系統,企業預算和財務系統,需求計劃系統等。分析所需的資料既可以儲存在關係資料表中,也可以儲存在多維資料模型內。
分割槽技術可以將大表、大索引分解為更小、更易管理的塊,這些塊被稱為分割槽,通過分割槽技術可以有效地解決大表、大索引帶來的問題。使用者對分割槽表執行的SQL查詢或DML語句與對普通資料表一樣。但是定義了分割槽後,DDL語句可以訪問、操作單獨的分割槽,而不是整個表或索引,這樣通過分割槽技術就能簡化對大資料庫物件的管理工作。分割槽對應用程式是透明的。
使用者可以使用 BLOB,CLOB,NCLOB 和 BFILE這四種LOB資料型別以二進位制或文字格式儲存和操作大資料量的非結構化資料(例如文字、圖形、視訊、音訊等)。通過LOB可以實現高效地、非線性地、或部分地訪問非結構化資料。
完整性約束是以宣告的形式來定義完表內的各列資料的業務規則。完整性約束對錶內的全部資料都有效,其規則如下:
● 當為一個已有資料的表建立完整性約束,且表中資料與此完整性約束不符時,約束建立將會失敗。
● 當一個約束定義後,執行任何違反該完整性約束的DML語句將被回滾,並返回錯誤資訊。
完整性約束的定義基於表,這個定義與表定義一起儲存在資料字典中,因此所有基於資料庫的應用程式都使用這套相同的規則。如果因為業務變化而導致規則改變,只需要在資料庫層改變一次,而無需改動每個應用程式。
Oracle支援以下完整性約束:
● 非空(NOT NULL):表字段不允許空。
● 唯一(UNIQUE KEY):一列中的欄位或數列中的欄位組合不允許重複值。
● 主鍵(PRIMARY KEY):一列中的欄位或數列中的欄位組合不允許重複值及空值。
● 外來鍵(FOREIGN KEY): 要求一列或數列的欄位值與相關表中的 UNIQUE KEY 或 PRIMARY KEY 相匹配。在 FOREIGN KEY 完整性約束中還定義了引用完整性操作(referential integrity actions),來確定當被引用的資料值發生變化時Oracle對外來鍵資料進行何種操作。
● CHECK(檢查):不允許欄位值違反約束中定義的邏輯表示式
觸發器是由 PL/SQL,java 或 C 編寫的過程,當表或檢視被修改,或資料庫中發生了使用者操作、系統操作時,觸發器將被隱式地呼叫。
分散式環境(distributed environment)指在網路中物理分散,但能實現無縫通訊的系統的集合。分散式環境中的每一個系統被稱為一個節點(node)。使用者直接連線的系統被稱為本地系統(local system),使用者通過本地系統訪問的其他系統被稱為遠端系統(remote system)。在分散式環境中,應用程式可以與本地或遠端系統交換資料。這些資料可以被同時訪問或修改。
同構分散式資料庫系統(homogeneous distributed database system)是由兩個或多個Oracle資料庫構成的網路,這個系統可以位於一臺或多臺計算機上。使用者和應用程式可以使用分散式 SQL 同時地訪問或修改多個數據庫中的資料,就如同修改單一資料庫一樣便捷。
Oracle支援查詢(query),更新(update)和事務(transaction)透明性。例如,在分散式環境中 SELECT,INSERT,UPDATE 和 DELETE 之類的操作與非分散式環境相同。對事務的控制也使用 COMMIT,SAVEPOINT 和 ROLLBACK 等標準的 SQL。Oracle使用兩步提交機制(two-phase commit mechanism)來保證分散式事務中的資料完整性。
SQL語句分為:
● 資料定義語句
● 資料操作語句
● 事務控制語句
● 會話控制語句
● 系統控制語句
● 嵌入式 SQL 語句
資料定義語句(Data Definition Language,DDL)用於建立、修改、維護、刪除方案物件。DDL中還包括賦予使用者訪問資料庫物件許可權的語句。
資料操作語句(Data Manipulation Language,DML)用於操作資料。例如對錶進行查詢、插入、修改、刪除均為DML操作。使用者最常用的SQL語句為 SELECT 語句,其作用是從資料庫中獲取資料。對錶或檢視加鎖、檢查SQL語句的執行計劃都屬於DML操作。
事務控制語句(Transaction Control Statements)用於管理DML語句引起的資料變化。使用者可以將資料變化分組成為邏輯事務(logical transactions)。常用的事務控制語句包括COMMIT,ROLLBACK,和 SAVEPOINT.
會話控制語句(Session Control Statements)用於控制當前會話的屬性,例如使一個角色(role)有效或失效,或改變會話的語言設定。只有兩個會話控制語句,分別是 ALTER SESSION 和 SET ROLE。
系統控制語句(System Control Statements)用於改變Oracle資料庫例項的屬性。系統控制語句只有一個,就是 ALTER SYSTEM 。使用者使用她可以改變例項的設定(如最小共享伺服器數),結束會話,以及其他系統任務。
嵌入式 SQL 語句(Embedded SQL Statements)將DDL、DML語句嵌入儲存過程中,並被Oracle編譯後儲存。嵌入式 SQL 語句包括 OPEN,CLOSE,FETCH,和 EXECUTE。
PL/SQL 程式結構包括儲存過程(stored procedure),函式(function),包(package),觸發器(trigger),自治事務(autonomous transaction)。
事務是一段邏輯完整的資料處理工作,她由一個使用者提交的一個或多個SQL語句構成。根據Oracle相容的 ANSI/ISO SQL 標準的規定,一個事務從使用者提交的第一個可執行的SQL開始,當用戶顯式地提交(commit)或回滾(roll back)時結束。