十一、ORACLE 數據庫管理系統介紹
1.ORACLE的特點:
可移植性 ORACLE采用C語言開發而成,故產品與硬件和操作系統具有很強的獨立性。從大型機到微機上都可運行ORACLE的產品。可在UNIX、DOS、Windows等操作系統上運行。可兼容性 由于采用了國際標準的數據查詢語言SQL,與IBM的SQL/DS、DB2等均兼容。并提供讀取其它數據庫文件的間接方法。可聯結性 對于不同通信協議,不同機型及不同操作系統組成的網絡也可以運行ORAˉCLE數據庫產品。
2.ORACLE的總體結構
(1)ORACLE的文件結構 一個ORACLE數據庫系統包括以下5類文件:ORACLE RDBMS的代碼文件。數據文件 一個數據庫可有一個或多個數據文件,每個數據文件可以存有一個或多個表、視圖、索引等信息。日志文件 須有兩個或兩個以上,用來記錄所有數據庫的變化,用于數據庫的恢復。控制文件 可以有備份,采用多個備份控制文件的是為了防止控制文件的損壞。參數文件 含有數據庫例程起時所需的配置參數。
(2)ORACLE的內存結構 一個ORACLE例程擁有一個系統全程區(SGA)和一組程序全程區(PGA)。SGA(System Global Area)包括數據庫緩沖區,日志緩沖區及共享區域。PGA(Program Global Area)是每一個Server進程有一個。一個Server進程起動時,就為其分配一個PGA區,以存放數據及控制信息。
(3)ORACLE的進程結構ORACLE包括三類進程:
①用戶進程 用來執行用戶應用程序的。
②服務進程 處理與之相連的一組用戶進程的請求。
③后臺進程 ORACLE為每一個數據庫例程創建一組后臺進程,它為所有的用戶進程服務,其中包括:DBWR(Database Writer)進程,負責把已修改的數據塊從數據庫緩沖區寫到數據庫中。LGWR(Log Writer)進程,負責把日志從SGA中的緩沖區中寫到日志文件中。SMON(System Moniter)進程,該進程有規律地掃描SAG進程信息,注銷失敗的數據庫例程,回收不再使用的內存空間。PMON(Process Moniter)進程,當一用戶進程異常結束時,該進程負責恢復未完成的事務,注銷失敗的用戶進程,釋放用戶進程占用的資源。ARCH(ARCHIVER)進程。每當聯機日志文件寫滿時,該進程將其拷貝到歸檔存儲設備上。另外還包括分布式DB中事務恢復進程RECO和對服務進程與用戶進程進行匹配的Dnnn進程等。
3.ORACLE的邏輯結構
構成ORACLE的數據庫的邏輯結構包括:
1)表空間
(2)5種類型的段(segment)
①數據段;
②索引段;
③滾回(rollbock)段;
④臨時段;
⑤自舉(bootstrap)段。段的分配單位叫范圍(Extent)表空間(Tablespace) 一個數據庫劃分成的若干邏輯部分稱為表空間。一個數據庫可以有一個或多個表空間,初始的表空間命名為SYSTEM,每一個邏輯表空間對應于一個或多個物理文件。DBA使用表空間做以下工作:控制數據庫對象,如表、索引和臨時段的空間分配。為數據庫用戶設置空間配額。利用個別表空間的在線或離線,控制數據的可用性。后備或恢復數據。通過分配空間,以改進性能。在每個數據庫中都存在SYSTEM表空間,它在建立數據庫時自動建立。在該表空間中,包含數據庫的數據字典,其中存儲全部數據庫對象的名字和位置。SYSTEM表空間總是在線的,像其它表空間一樣,可以通過增加新的數據庫文件來擴大。一個表空間可包含許多表和索引。但一個表和索引不能跨越表空間,可跨越組成表空間的文件。在DB的打開的情況下,DBA利用ALTER TABLESP ACE語句,可以實施表空間的在線或離線。SYSTEM表空間必須在線。表空間離線有下列原因:一般為了使部分數據庫不能使用,而允許正常存取數據庫其余部分。執行表空間離線備份。一個離線的表空間,不能被應用用戶讀或編輯。可以增加數據文件擴大已有的表空間,也可增加新的表空間使數據庫容量增大,或分配空間給某個應用。使用ALFER TABLESPACE ADD FILE語句將另一個數據文件加入到已存在表空間中。使用CREATE TABLESPACE語句可建立一個新的表空間。段(segment) 表空間中的全部數據存儲在以段劃分的數據庫空間中。一個段是分配給數據庫用于數據存儲的范圍的集合。數據可以是表、索引或RDBMS所需要的臨時數據。段是表空間的下一個邏輯存儲的級別。一個段不能跨越一個表空間,但可跨越表空間內的文件。一個數據庫最多需要五種段類型:數據段 一個包含一個表(或聚集)的全部數據,一個表(或聚集)總有一個單個數據段。索引段 一個索引段包含對一個表(或聚集)建立的一個索引的全部索引數據。一個表可以有一個、多個或者沒有索引段,取決于它所擁有的索引個數。一個聚集必須至少有一個索引段,即在聚集碼上建立聚集索引。回滾段 每個DB有一個或多個回滾段。一個回滾段是DB的一部分,它記錄在某一情況下被撤消的動作。回滾段用于事務控制和恢復。臨時段 在處理查詢時,ORACLE需要臨時工作空間,用于存儲語句處理的中間結果,這個區稱為臨時段。自舉段 自舉段在SYSTEM表空間中,在數據庫建立時建立。它包括數據字典定義,在數據庫打開時裝入。
4.用戶數據庫對象
由用戶建立的對象駐留在表空間中,含有真正的數據。數據庫對象有表、視圖、聚集、索引、偽列和序號生成器。
(1)聚集(Cluster) 聚集是存儲數據的一種可選擇的方法。聚集包括存儲在一起的一組表,它們共享公共列并經常一起使用。由于內容相關并且物理地存儲在一起,存取時間得到改進,存儲空間可以減少。聚集是一種優化措施。聚集對性能的改進,依賴于數據的分布和SQL操作的內容。特別是使用聚集對連接非常有利。可以明顯地提高連接的速度。建立聚集命令的基本格式:SQL>CREATE CLUSTER〈聚集名〉(列定義[,…]);利用聚集建立表命令基本格式:SQL>CREATE TABLE〈新表名〉(列定義[,…]CLUSTER〈聚集名〉(聚集列);在聚集碼上必須建立一個聚集索引,對于每一數據塊上每個聚集碼值有一索引項。這個索引必須在DML語句對聚集表操作前建立。建立索引的語句是:CREATE INDEX索引名ON CLUSTER聚集名。
(2)序號生成器 序號(SEQUENCE)生成器為表中的單列或多列生成順序號。利用序號可自動地生成唯一主碼。使用SQL語句定義序號,給出一些信息(如序號名、是升序或降序、每個序號間的間隔和其它信息)。所有序號存儲在數據字典表中。所有序號定義存儲在數據字典的SEQUENCE表中。用戶可以通過字典視圖USER-SE-QUENCES、ALL-SEQUENCES和DBA-SEQUENCES查詢和存取。建立序號生成器的語句是:CREATE SEQUENCE序號生成器名 其它選項。一旦序號生成器S被定義。可用S.Currval來引用S序號生成器的當前值。用S.nextval產生下一個新的序號并加以引用。
(3)偽列 偽列的行為像表的一列,但不真正存在于表中,在查詢時可引用偽列,但偽列不能插入、刪除或修改。
5.數據字典
數據字典ORACLE RDBMS最重要的部分之一。數據字典含有一組系統定義的表,只能讀,是關于數據庫的引用指南。它可提供以下信息:ORACLE用戶的用戶名;每個用戶被授予的權限和角色;實體的名字和定義;完整性約束為數據庫實體分配的空間;通用的數據庫結構;審計信息;觸發子等的存儲。數據字典是以表和視圖構成的,像其它數據庫數據一樣,可用SQL語言查詢數據字典。數據字典在DB建立時建立。每當DB進入操作,數據字典就由ORACLE RDBMS負責修改。數據庫建立時有兩個默認DBA用戶:SYS、SYSTEM。SYS持有基本表中的數據。
下面列出的是一些常用的表或視圖的名稱。
(1)DTAB 描述了組或數據字典的所有表。
(2)TAB 用戶建的所有基本表、視圖和同義詞。
(3)COL 用戶創建基本表的所有列的信息。
(4)SYNONYMS 用戶可存取的同義名詞、專用名和公用名。
(5)CATALOG 用戶可存取的表、視圖、同義詞、序列。
(6)CONSTRAINTS 用戶可存取的約束。
(7)INDEXES 用戶可存取的表和聚集的序列。
(8)OBJECTS 用戶可存取的對象。
(9)TANLERS 用戶可存取的表。
(10)USERS 查看當前全部用戶。
(11)VIEWS 查看用戶可存取的視圖。
(12)SYSTABAUTH 用戶對數據對象的使用權限。可以用SQL>SELECT*FROM〈字典表名或視圖名〉WHERE〈條件〉來讀取有關信息。可以用SQL>DESCRIBE〈表名〉來查看表的結構定義。但是數據庫字典的結構不可改。用DESCRIBE命令還可以查看視圖及過程的定義。
6.ORACLE的SQL、PL/SQL與SQL*PLUS
作為ORACLE數據庫核心的SQL語言是ANSI和ISO的標準SQL的擴充。用來存儲、檢索和維護數據庫中的信息,并控制對數據庫的存取事務。由于RDBMS執行SQL語句時,是一次只執行一條語句,它是非過程化的。這就使得單條的SQL語句使用方便,功能強大。用戶只需說明操作目的,不必關心具體操作的實現方法。但在實際數據庫應用開發中,往往要依據前一步對數據庫操作的結果或上一個事務提交的情況來確定下一步的操作。故ORACLE推出了一種PL/SQL工具,它擴充了SQL語句,使之具有可進行過程化編程的能力,如循環、分支功能。PL/SQL可支持變量和常量的使用。
十二、分布式數據庫
1.分布式數據庫的分類
分布式數據庫,是根據它的管理系統(Distributed DBMS-DDBMS)進行分類的。對DDBMS可以從四個不同角度來分類:
(1)從構成的方式,可分為同構型和異構型兩類所謂同構型,是指所有節點的局部DBMS都支持同一數據模式和數據語言。為使每個節點都掌握彼此的數據情況,需要增加網絡數據庫管理系統(NDBMS),各節點之間通過通信網絡形成統一的整體。同構型的DDBMS對于并發控制、冗余數據的一致性等問題容易處理,但建庫的代價比較大。所謂異構型系統,是指在分布環境中各節點上的數據模型和數據語言都可能不同。異構比同構型系統實現起來要困難一些,為了在兩個節點上的局部DBMS之間進行信息交換,就要對數據模式和數據語言進行轉換和映射工作。
(2)按控制方式,可以分為集中式與分布式所謂集中控制的DDBM指所有事務都由一臺叫做中心計算機的節點進行管理。分布控制的DDBMS,是指每個節點都保持DDBMS的一個副本來監督和管理各節點及系統事務,它將網絡目錄作為用戶數據庫存放于局部DB之中。
(3)從數據分布的角度,DDBMS又可分為分割式、部分重復式和完全重復式所謂分割式,是指每個節點只存儲DDB數據實體的部分子集,各節點的副本互不重疊。部分重復式,是指每個節點都存儲DDB數據實體的任意子集。完全重復式,是指每個節點都存儲整個DDB數據實體的副本。也有文獻把完全重復式稱為復制式。(4)從用戶的角度,DDBM可分為總體型和多重型。
2.分布式數據庫與單一數據庫的比較
(1)集中控制 在一個企業或單位范圍內的信息資源上,對信息提供集中式控制的可能性,被認為是采用數據庫技術的最大動力之一,因為集中式數據庫是根據信息系統的演變和集中處理信息的需求開發出來的。
(2)數據獨立性 數據獨立性也曾經被認為是采用數據庫方法的主要動力之一。實際上,數據獨立性意味著數據的實際結構對應用程序來講是透明的,應用程序員只需要利用數據邏輯結構,即所謂概念模式來編寫程序。數據獨立性的主要優點是應用不受數據存儲的物理結構變化的影響。在分布式數據庫中,數據的獨立性具有與傳統的集中式數據同等的重要性,然而,一種嶄新概念加進了數據獨立性的一般概念之中,這就是分布式透明性。所謂分布式透明性,指的是在編寫程序時就好象數據沒有被分布一樣。這樣,無論把數據存儲到甲地或乙地,或者把數據從一個節點移到另一個節點,都不會影響程序執行的正確性和有效性,但是,必須指出,執行速度或者效率卻受到了影響。眾所周知,通過具有不同形式的數據描述和它們之間的映射的多層體系結構,曾為傳統的數據庫提供了獨立性,為此目的,開發出了概念模式、存儲模式和外部模式等概念。利用類似的方法,我們可以通過采用新層次和新模式,在分布式數據庫中可獲得分布式透明性。分布式透明性是分布式數據庫系統的主要目標之一。
(3)降低冗余 在傳統數據庫系統中,盡可能地降低冗余度是它的主要目標之一。這有兩個原因:首先,通過只用一個正本,可以自動地避免同一邏輯數據中幾個副本之間的不一致性。其次,用降低冗余度來節約存儲空間。通過共享數據的方式,即通過允許幾個應用訪問同一文件和記錄可以達到降低冗余度的目的。但是,在分布式數據庫中,把數據的冗余看成是所需要的特性。這有幾個原因:首先,如果在需要冗余的所有節點都復制數據,則可以增加應用的局部性。其次,可以增加分布式數據庫系統的有效性和可靠性。因為,如果復制數據,則一個節點上的故障不會停止其它節點上應用的執行。在一般情況下,為傳統集中式環境所規定的克服冗余的原因,在分布式環境中仍是有效的。因此,在分布式數據庫中,對冗余度的評價要選擇一種折衷方案,不能一概而論。一般地說,復制數據項的方便程度是隨著應用所執行的檢索訪問與更新訪問的比率提高而增加。數據復制便利程度的提高,是因為具有一個項目多個副本,檢索可以在任一副本上進行,而更新卻必須在所有副本上一致地進行。
(4)有效訪問 復雜的訪問結構,如輔助索引,文件間的鏈接等,都是傳統數據庫所采用的重要技術,對這些結構的支持是數據庫管理系統DBMS極為重要的組成部分。提供復雜訪問結構的原因,是為了提高存取數據的效率。
(5)完整性、恢復和并發控制 在數據庫理論中,盡管完整性、恢復和并發控制等所涉及的問題是不同的,但它們之間相互聯系還是很多的,一般來說,完整性、恢復和并發控制等問題的解決,在很大程度上取決于所提供的事務的結構形式。
(6)保密性和安全性 在傳統數據庫中,具有集中式控制的數據庫管理員能保證只執行那些授權的數據訪問。但應當指出,集中式數據庫本身比過去處理單獨文件的舊方法更難于實現數據的保密性和安全性。在分布式數據庫中,局部數據庫管理員面臨的一些主要問題,與傳統數據庫管理員面臨的問題一樣。但是,分布式數據庫的兩個獨特方面值得一提:首先,在具有極高度節點自主權的分布式數據庫中,局部數據的擁有者認為比較安全,因為他們能自主地實施自己的安全措施,以履行集中式數據庫管理員的職責。其次,安全性問題,一般是分布式系統的固有問題,因分布式系統是通過通信網絡來實現分布式控制的,而通信網絡本身就在保護數據的安全性和保密性方面存在著弱點。通過網絡偷看、亂改別人的數據難以完全避免。
3.分布式數據庫管理系統(DDBMS)
在目前分析DDBMS的性能時,應該把商品化系統和先進的研究樣機區分開來,但是可以預料,某些先進的研究樣機中試驗的特性,可能會應用到將來的商品化系統中去的。本節簡要敘述分布式數據庫管理系統的基本性能,并就用什么樣的方法使得分布式數據庫這個新技術商品化的問題談一點看法。從目前看,世界上幾各已經商品化的分布式系統是由集中式數據庫管理系統的銷售廠商開發出來的。這些分布式數據庫管理系統,包括擴充集中式DBMS時所附加的部件。分布式功能的擴充是通過裝配在計算機網絡中不同節點上的DBMS之間所提供的通信和合作來實現的。在這種情況下建立分布式數據庫通常所必須的軟件部分是:
(1)數據庫管理部分(DB);
(2)數據通信部分(DC);
(3)數據字典(DD),它能用來表示有關網絡中數據分布的信息;
(4)分布式數據庫部分(DDB)。
相關推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |