- 相關(guān)推薦
Oracle基本術(shù)語(yǔ)大全
Oracle數據庫系統是一個(gè)復雜的軟件系統。如果不了解其內部的結構原理及關(guān)系,就不可能設計和編寫(xiě)出高質(zhì)量的應用軟件系統,也不可能管理好一個(gè)復雜的應用系統。為了幫助大家了解更多Oracle數據庫知識,下文簡(jiǎn)要給出 ORACLE 8 /ORACLE8i數據庫系統結構的描述。
§2.1 術(shù)語(yǔ)
數據庫塊(BLOCK)
ORACLE 數據庫中的最小存儲和處理單位,包含塊本身的頭信息數據或PL/SQL代碼。
ORACLE 塊的大小是可以在安裝時(shí)選擇“自定義安裝”來(lái)指定,也可以在CREATE DATABASE創(chuàng )建數據庫實(shí)例時(shí)指定。其最小為2K,最大可達為64K.
瓶頸(Bottleneck)
指限制系統性能的部件。
面向對象的關(guān)系數據庫
具有關(guān)系數據庫的全部功能,同時(shí)又支持面向對象的數據庫,稱(chēng)作面向對象關(guān)系數據庫系統。Oracle7是一種功能完備的關(guān)系數據庫系統;oracle8是一種面向對象的關(guān)系數據庫系統。
客戶(hù)/服務(wù)器結構(Client/Server)
有客戶(hù)機、服務(wù)器、網(wǎng)絡(luò )三要素的結構,客戶(hù)機(PC機)通過(guò)網(wǎng)絡(luò )與服務(wù)器相連和工作。
胖客戶(hù)機(Fat Client)
一般的Client/Server結構中的客戶(hù)機均為胖客戶(hù)機。因為這些客戶(hù)機需要配置較高的設備,如內存、硬盤(pán)、主頻、CD_ROM等。
瘦客戶(hù)機(Thin Client)
也稱(chēng)作NC(網(wǎng)絡(luò )計算機),是一種內存配置小(過(guò)去指一般只有4M,現無(wú)法定義),無(wú)硬盤(pán),只有處理心片的處理機。
數據在線(xiàn)分析處理(OLAP)
是一種能以快速、交互、方便的方式洞察數據情況的技術(shù)。如Oracle Express,Cognos(加拿大)的Power Play, Business Objects公司的Business Object 等。
多線(xiàn)程(MTS)
一個(gè)用戶(hù)可以同時(shí)運行多個(gè)程序對數據庫進(jìn)行訪(fǎng)問(wèn),比如Visual C/C++可以提供同時(shí)啟動(dòng)多個(gè)進(jìn)程,而Visual Basic則不能。
數據倉庫(Data Warehouse)
支持大量數據信息存儲的叫做支持數據倉儲或數據倉庫。當把幾個(gè)小型數據庫集成為一個(gè)大型數據庫,并為一個(gè)較廣泛的組織服務(wù)時(shí),如果該數據庫存儲歷史數據,提供決策支持,提供數據匯總,提供只讀數據,并且實(shí)質(zhì)上充當所有向它提供數據的相關(guān)成品數據庫的數據接收器,那么它通常被叫做數據倉庫。
實(shí)例(Instance)
是訪(fǎng)問(wèn)Oracle數據庫所需的一部分計算機內存和輔助處理后臺進(jìn)程。
對象(Objects)
是實(shí)現世界實(shí)體的軟件表示,如表、索引、視圖、同義詞、過(guò)程等。
數據庫文件(Datafile)
Oracle系統中用于存放數據(應用系統數據)的文件。(<;>14中的例子不準確,容易誤導讀者)。
控制文件(Control File)
Oracle中存放系統用的一些數據的文件。如數據文件的路徑及文件名,初始化文件路徑及 文件名等都存放在控制文件中。
日志文件(Logs File)
也叫事務(wù)記錄文件,該文件記錄有事物對數據庫進(jìn)行的一切修改操作或事務(wù)。
DBA(Database administrator-數據庫管理員)
是管理數據庫系統的技術(shù)工具或人員,在完備的數據庫系統中都提供DBA功能。
灰數據塊(Dirty data block)
存放在內存中的原始數據已被修改,而修改后的數據還未寫(xiě)入數據庫中。
熱數據塊(Hot data block)
存放著(zhù)那些經(jīng)常被修改數據叫熱數據塊。
LRU(Least Recently Used-最近最少用)
Oracle系統使用的一種算法,對于在內存中但最近又不用的數據塊(內存塊)叫做LRU,Oracle會(huì )根據那些數據屬于LRU而將其移出內存而騰出空間來(lái)加載另外的數據。
表(Table)
存放專(zhuān)門(mén)數據而建立和分配的空間。
表空間(Tablespace)
是一個(gè)或多個(gè)數據文件的集合,所有的數據對象都存放在指定的表空間中,但主要存放的是表, 所以稱(chēng)作表空間。
回滾(Rollback)
將用戶(hù)(或者說(shuō)事務(wù))改變的數據恢復到上一次所處的狀態(tài)。
恢復信息(Undo Information)
記錄用于恢復的信息稱(chēng)作恢復信息;貪L就是根據恢復信息內容進(jìn)行恢復的。
§2.2
Oracle數據庫結構Oracle數據庫結構是Oracle數據庫系統的主要部分,它是一些可以看得見(jiàn)的軟件,包括:
Oracle 數據字典l 表空間與數據文件l Oracle實(shí)例(Instance)
§2.2.1
Oracle 數據字典Oracle數據庫的重要部分是數據字典。它存放有Oracle數據庫所用的有關(guān)信息,對用戶(hù)來(lái)說(shuō)是一組只讀的表。數據字典內容包括:
數據庫中所有模式對象的信息,如表、視圖、簇、及索引等。
分配多少空間,當前使用了多少空間等。
列的缺省值。
約束信息的完整性。
Oracle用戶(hù)的名字。
用戶(hù)及角色被授予的權限。
用戶(hù)訪(fǎng)問(wèn)或使用的審計信息。
其它產(chǎn)生的數據庫信息。
數據庫數據字典是一組表和視圖結構。它們存放在SYSTEM表空間中。數據庫數據字典不僅是每個(gè)數據庫的中心。而且對每個(gè)用戶(hù)也是非常重要的信息。用戶(hù)可以用SQL語(yǔ)句訪(fǎng)問(wèn)數據庫數據字典。
§2.2.2
表空間與數據文件簡(jiǎn)單說(shuō),表空間就是一個(gè)或多個(gè)數據文件(物理文件)的集合(邏輯文件)。一般有下面的表空間:
1)系統表空間(System tablespace)
是各種不同版本的Oracle必備的部分,存放Oracle系統的一些信息,一般只有一個(gè)SYSTEM表空間。
2)臨時(shí)表空間(Temporary tablespace )
由于Oracle工作時(shí)經(jīng)常需要一些臨時(shí)的磁盤(pán)空間,這些空間主要用作查詢(xún)時(shí)帶有排序(Group by,Order by等)等算法所用,當用完后就立即釋放,對記錄在磁盤(pán)區的信息不再使用,因此叫臨時(shí)表空間。一般安裝之后只有一個(gè)TEMP臨時(shí)表空間。
3)工具表空間(Tools tablespace)
用于保存Oracle數據庫工具所需的數據庫對象,這些工具表空間存放在工作時(shí)所用的專(zhuān)用表。舊的Oracle版本無(wú)此表空間。安裝之后的工具表空間是Tools.
4)用戶(hù)表空間(Users tablespace)
用于存放一些實(shí)驗例子用的空間,當然也可以用于存放應用系統的數據。舊版本無(wú)Users表空間,F在的用戶(hù)表空間為 USERS .
5)數據及索引表空間存放數據及索引的表空間,Oracle7以后都提倡在應用系統中,特別是具有大量數據的系統,要把數據和索引分開(kāi)存放在不同的分區中,以便提高查詢(xún)速度。在安裝后索引表空間可能是INDX.數據表空間就是USERS.
6)回滾段表空間(Rollback Segment)
Oracle數據庫系統在運行Insert、Update、Delete時(shí)都需要一個(gè)磁盤(pán)空間來(lái)存放恢復信息(Undo Information),以便在進(jìn)行恢復時(shí)能將原來(lái)信息讀出來(lái)。安裝后的回滾段表空間是RBS表空間。數據庫管理員也可根據應用的需要建立另外的回滾段表空間。Oracle 以表空間來(lái)存儲邏輯數據并 以物理數據相連。
數據庫被分成一個(gè)或多個(gè)邏輯部件稱(chēng)作表空間。而表空間又被分成稱(chēng)作段(segment)的邏輯部件。這些段再細分就叫擴展(extents)。
§2.2.3
Oracle實(shí)例Oracle實(shí)例(Instance)是由一組后臺進(jìn)程和內存結構組成。每個(gè)運行的數據庫系統都與實(shí)例有關(guān)。所以,有時(shí)稱(chēng)Oracle實(shí)例為數據庫操作系統。下面是Oracle實(shí)例的解釋。
Oracle 進(jìn)程O(píng)racle有兩種類(lèi)型的進(jìn)程: 服務(wù)器進(jìn)程和后臺進(jìn)程(server processes and background processes)。
服務(wù)器進(jìn)程O(píng)racle 服務(wù)器進(jìn)程是處理用戶(hù)與實(shí)例連接的事務(wù)。任務(wù)是:
分析和執行應用所發(fā)出的SQL語(yǔ)句。
從數據文件讀必要的數據到SGA區的共享數據區。
返回必要信息給應用。
后臺進(jìn)程O(píng)racle系統使用一些附加的進(jìn)程來(lái)處理系統的必須的工作。這些進(jìn)程叫后臺進(jìn)程:
數據庫寫(xiě) (DBW0 或DBWn)
日志寫(xiě) (LGWR)
檢測點(diǎn) (CKPT)
系統監視 (SMON)
進(jìn)程監視 (PMON)
歸檔 (ARCn)
恢復 (RECO)
鎖(LCK0)
工作隊列 (SNPn)
隊列監視 (QMNn)
發(fā)布(Dispatcher) (Dnnn)
服務(wù)器 (Snnn)
Oracle 的內存結構(SGA)
SGA 結構為:
數據高速緩沖區 重做日志緩沖區 共享池 大的共享池(可選)
數據字典緩沖區 其它數據緩沖區
§2.3
Oracle數據庫文件ORACLE 數據庫是一個(gè)復雜的數據庫操作系統,由一系列部件組成,主要有:1)初始化參數文件、2)數據文件、3)控制文件、4)日志文件等。
§2.3.1
初始化參數文件初始化參數文件(initialization parameter file) INITsid.ORA,是 ORALE RDBMS 主要的配置點(diǎn),它是配置參數和數值的集合。每一個(gè)參數值都控制或修改數據庫和實(shí)例的某個(gè)方面。 早期的版本把參數都寫(xiě)在 initsid.ora 文件中,但在ORACLE8 之后,多數參數已不在該文件中出現,需修改這些參數時(shí)只能在SQL>;下用 SET SESSION 或 SET SYSTEM 來(lái)進(jìn)行。 查看系統參數可用。例如:
SQL>;select * from v$parameter;
來(lái)列出。
Oracle初始化參數文件是一個(gè)可以編輯的文本文件。它是在數據庫實(shí)例啟動(dòng)時(shí)被訪(fǎng)問(wèn),從而得到數據文件、日志文件、控制文件等的路徑,此外,初始化參數文件還提供實(shí)例所用的參數等。
§2.3.2
數據文件用于存放所有數據庫的數據文件,Oracle安裝過(guò)程中自動(dòng)建立多個(gè)必要的數據文件。這些數據文件用于存放Oracle系統的基本數據。在應用系統開(kāi)發(fā)過(guò)程中,我們可根據需要另建立一些數據文件。
如果數據文件按它們存放的數據類(lèi)型來(lái)分的話(huà),可以分為:用戶(hù)數據(存放應用系統的數據為用戶(hù)數據);系統數據。
管理用戶(hù)數據和數據庫系統本身的數據,如數據字典,用戶(hù)建立的表的名字,類(lèi)型等都記錄在系統數據中。
§2.3.3
控制文件控制文件是由Oracle數據庫實(shí)例在啟動(dòng)時(shí)被訪(fǎng)問(wèn)的內部二進(jìn)制文件,它們所存放的路徑由參數文件的control_files=參數來(lái)確定。
Oracle一般有兩個(gè)或更多的控制文件,每個(gè)控制文件記錄有相同的信息,在數據庫運行中如果某個(gè)控制文件出錯時(shí),Oracle會(huì )自動(dòng)使用另外一個(gè)控制文件。當所有的控制文件都損壞時(shí)系統將不能工作。
Oracle數據庫至少有一個(gè)控制文件;一般數據庫系統安裝完成后,自動(dòng)創(chuàng )建兩個(gè)以上控制文件;為了安全一般建議創(chuàng )建多個(gè)控制文件;控制文件可用下面命令查到:
select name,value from v$parameter where name like ’control_files’;
§2.3.4
重做日志文件重做日志文件是Oracle系統中一個(gè)很重要的文件。特點(diǎn)是:
重做日志是Oracle的日記帳,負責記錄所有用戶(hù)對象或系統變更的信息;安裝完成后有多個(gè)重做日志文件,它們是幾個(gè)分為一組,組內的重做日志文件大小要一樣;為了使系統性能更好可以在創(chuàng )建多重做日志文件組;重做日志文件可以名下面命令查到:
select * from v$logfile;
§2.3.5
其它支持文件除了上面的三類(lèi)文件外,還有:Sqlnet.ora文件;Tnsnames.ora文件;Listener.ora文件等。
§2.4
重做日志和重做日志工作模式重做日志、日志文件及重做日工作模式是Oracle系統中很重要的概念,管理員要完全理解它們的原理和使用方法。下面只給簡(jiǎn)單的概念,有關(guān)的管理在另外章節給出。
§2.4.1
重做日志Oracle所作的一切操作都記錄在日志文件中,Oracle系統在工作當中并不是每作一條記錄的修改就立即存盤(pán)(寫(xiě)入數據文件),而是只作修改記錄,聯(lián)機重做日志就保存所有這些改變的信息。當所有的修改最后寫(xiě)入數據文件時(shí),所有的修改仍記錄在聯(lián)機重做日志中,這將有利于對這些事務(wù)記錄進(jìn)行恢復操作。但如果不是聯(lián)機重做日志,則只能恢復部分近期的操作。
§2.4.2
重做日志工作模式Oracle可以在兩種模式之一來(lái)工作:
1)ARCHIVELOG模式(可恢復)
Oracle 一般至少有兩個(gè)日志文件。它們輪流交替地被寫(xiě)入所作的一切修改信息。當系統設置為可恢復模式,Oracle自動(dòng)將每次即將被覆蓋(沖掉)的日志信息先作備份,然后再其上記錄所修改的信息。這樣的方式,就可以利用備份與恢復工作進(jìn)行某時(shí)期的數據恢復。
2)NOARCHIVELOG模式(有限的恢復)
缺省情況下為NOARCHIVELOG,Oracle不保留舊的重做日志信息(可以在原來(lái)基礎覆蓋寫(xiě)入)。因此一般情況下不可恢復的。
§2.5 數據塊、區間和段
§2.5.1 數據塊(data block)
Oracle的數據塊也叫Oracle塊;Oracle系統在創(chuàng )建表空間時(shí)將數據文件格式化成若干個(gè)Oracle塊;每個(gè)Oracle塊是Oracle系統處理的最小單位;塊的大小在安裝系統時(shí)確定,可以選擇“自定義安裝”來(lái)設置大小;塊的大小一旦確定下來(lái)就不能改動(dòng);塊的大小可以從2k至64k不等;塊的大小可以用下面命令查到:
select name,value from v$parameter where name like ’db_block_size’;
§2.5.2 區間(extent)
分配給對象(如表)的任何連續塊叫區間;區間也叫擴展,因為當它用完已經(jīng)分配的區間后,再有新的記錄插入就必須在分配新的區間(即擴展一些塊);區間的大小由 next 決定;一旦區間分配給某個(gè)對象(表、索引及簇),則該區間就不能再分配給其它的對象;一個(gè)對象所用去多少區間可用下命令查到:
select segment_name,tablespace_name,count(*) from dba_extents having count(*)>;1 group by segment_name,tablespace_name;
§2.5.3 段(segment)
段是指占用數據文件空間的通稱(chēng),或數據庫對象使用的空間的集合;段可以有表段、索引段、回滾段、臨時(shí)段和高速緩存段等;段使用同表空間中的若干Oracle塊(可以位于不同數據文件中)。
例:CREATE TABLE abc ( empno number(4),ename varchar2(20),sal number(9,2))
TABLESPACE user_data storage(initial 500k next 256k pctincrease 0);
1) 段被分配=初始區間=500k;
2) 當開(kāi)始的500k用完后就再分配256k; 此時(shí)段=500k+256k;
3) 如果所分配的區間又用完后,就再分配256k, …
§2.6
Oracle數據庫進(jìn)程一般情況,當數據庫啟動(dòng)完成后(Instance 啟動(dòng)成功)就至少有六個(gè)后臺進(jìn)程在活動(dòng),這些進(jìn)程根據數據庫的需要而分工不同。他們分別是:
1)數據庫寫(xiě)入器(DBWR)
數據庫寫(xiě)入器(Database Writer)的任務(wù)是將修改后的(在內存)數據塊寫(xiě)回數據庫文件中。在某些操作系統中,Oracle可以有兩個(gè)BDWR進(jìn)程。
2)校驗點(diǎn)(CKPT)
是一個(gè)可選進(jìn)程。在系統運行中當出現查找數據請求時(shí),系統從數據庫中找出這些數據并存入內存區,這樣用戶(hù)就可以對這些內存區數據進(jìn)行修改等。當需要對被修改的數據寫(xiě)回數據文件時(shí)就產(chǎn)生重做日志的交替寫(xiě)(Switch),這時(shí)就出現校驗點(diǎn)。系統要把內存中灰數據(修改過(guò))塊中的信息寫(xiě)回磁盤(pán)的數據文件中,此外系統還將重做日志通知控制文件。DBA可以改變參數文件中CHECKPOINT_PROCESS TRUE來(lái)使能( 使有效或無(wú)效)該進(jìn)程。
3)日志寫(xiě)入器(LGWR)
用于將SGA區中的日志信息寫(xiě)入日志文件的進(jìn)程。一般是用戶(hù)所作的修改值先記入日志文件。等到一定時(shí)才真正將修改結果寫(xiě)回數據文件。
4)系統監控器(SMON)
系統監控器(System monitor)是在數據庫系統啟動(dòng)時(shí)執行恢復工作的強制性進(jìn)程。比如在并行服務(wù)器模式下(兩臺服務(wù)器共用一磁盤(pán)組),SMON可以恢復另一臺處于失敗的數據庫。使系統切換到另一臺正常的服務(wù)器上。
5)進(jìn)程監控器(PMON)
進(jìn)程監控器(Process Monitor)用于終止那些失敗的用戶(hù),釋放該用戶(hù)所占用的資源等。
6)歸檔器(ARCH)
可選進(jìn)程,當數據庫系統處于歸檔(ARCHIVELOG)模式時(shí)使用。
7)鎖(LCKn)
可選進(jìn)程,當在并行服務(wù)器模式可出現多個(gè)鎖定進(jìn)程以利于數據庫通信。
8) 恢復器(RDCO)
分布式數據庫(不同地點(diǎn)有不同機器和不同的Oracle系統)模式下使用的可選進(jìn)程,用于數據不一致時(shí)作的恢復工作。在RECO解決恢復前,所作的修改數據的標志均標為“可疑”。
9)調度(Dnnn)
可選進(jìn)程,在多線(xiàn)程下使用,即對每個(gè)在用(D000,……,Dnnn)的通信協(xié)議至少創(chuàng )建一個(gè)調度進(jìn)程,每個(gè)調度進(jìn)程負責從所聯(lián)接的用戶(hù)進(jìn)程到可用服務(wù)器進(jìn)程的路由請求。把響應返回給合適的用戶(hù)進(jìn)程。
10)快照進(jìn)程(SNPn)
快照進(jìn)程處理數據庫快照的自動(dòng)刷新,并通過(guò) DBMS_JOB 包運行預定的數據庫過(guò)程。 INITsid.ORA 參數 JOB_QUEUE_PROCESS 設置快照進(jìn)程數, 參數 JOB_QUEUE_INTERVAL 決定快照進(jìn)程在被喚醒以處理掛起的作業(yè)或事務(wù)之前休眠的秒數。
11)并行查詢(xún)進(jìn)程(Pnnn)
可根據數據庫的活動(dòng)并行查詢(xún)選項的設置,ORACLE服務(wù)器起動(dòng)或停止查詢(xún)進(jìn)程。這些進(jìn)程涉及并行索引的創(chuàng )建,表的創(chuàng )建及查詢(xún)。 啟動(dòng)的數量與參數 PARALLEL_MIN_SERVERS指定的數量相同,不能超出該參數指定的值。
§2.7
Oracle內存結構前面提到過(guò)Oracle的數據庫實(shí)例是一組后臺進(jìn)程和內存結構組成。而內存結構是包括:
系統全局區(System Global Area)
程序全局區(Program Global Area)
§2.7.1
系統全局區Oracle 系統用于存放系統信息的一塊存儲區域,用戶(hù)進(jìn)程和Oracle后臺進(jìn)程都可以使用SGA.在SGA中含有許多組件(不同的部分)。
數據高速緩沖區(Data Buffer Cache)
在數據高速緩沖區中存放著(zhù)Oracle系統最近使用過(guò)的數據塊(即用戶(hù)的高速緩沖區),當把數據寫(xiě)入數據庫時(shí),它以數據塊為單位進(jìn)行讀寫(xiě),當數據高速緩沖區填滿(mǎn)時(shí),則系統自動(dòng)去掉一些不常被用訪(fǎng)問(wèn)的數據。如果用戶(hù)要查的數據不在數據高速緩沖區時(shí),Oracle自動(dòng)從磁盤(pán)中去讀取。數據高速緩沖區包括三個(gè)類(lèi)型的區:
1) 臟的區(Dirty Buffers):包含有已經(jīng)改變過(guò)并需要寫(xiě)回數據文件的數據塊。
2) 自由區(Free Buffers):沒(méi)有包含任何數據并可以再寫(xiě)入的區,Oracle可以從數據文件讀數據塊該區。
3) 保留區(Pinned Buffers):此區包含有正在處理的或者明確保留用作將來(lái)用的區。
Oracle8i以后將緩沖池分為三個(gè)區(使用多個(gè)緩沖池特性時(shí)):1) KEEP 緩沖池(KEEP buffer pool):在內存中保留數據塊,它們不會(huì )被從內存中擠掉;2) RECYCLE緩沖池從不需要的內存將數據移掉;3) DEFAULT緩沖池包含有被分配的塊。
重做日志緩沖區(Rado Log Buffer)
任何事務(wù)(Transaction)在記錄到重做日志(恢復工作需要使用聯(lián)機重做日志)之前都必須首先放到重做日志緩沖區(Redo Log Buffer)中。然后由日志寫(xiě)入進(jìn)程(LGWR)定期將此緩沖區的內容寫(xiě)入重做日志中。
共享池(Shared Pool)
共享池是SGA保留的區,用于存儲如SQL、PL/SQL存儲過(guò)程及包、數據字典、鎖、字符集信息、安全屬性等。共享池包含有:1) 庫高速緩存(Library Cache);2) 字典高速緩沖區(Dictionary Cache )。
庫高速緩存(Library Cache)
該區包含有:1) 共享SQL區(Shared Pool Area);2) 私有SQL區(Private SQL Area);3) PL/SQL存儲過(guò)程及包(PL/SQL Procedure and Package);4) 控制結構(Control Structure)。也就是說(shuō)該區存放有經(jīng)過(guò)語(yǔ)法分析并且正確的SQL語(yǔ)句,并隨時(shí)都準備被執行。
字典高速緩沖區(Data Dictionary Cache)
用于存放Oracle系統管理自身需要的所有信息,這些信息是登錄到Oracle的用戶(hù)名,這些用戶(hù)有那些數據庫對象以及這些數據庫對象的位置等。
SVRMGR>; Show SGA Total System Global Area 35544188 bytes Fixed Size 22208 bytes Variable Size 3376332 bytes Database Buffer 122880 bytes Redo Buffer 32768 bytes
后四項相加等于前一項。也可以使用 select * from v$SGA; 查詢(xún)當前實(shí)例的SGA.
大的池(Large Pool)
在SGA中大池是可選的緩沖區。它可以根據需要有管理權進(jìn)行配置。它可以提供一個(gè)大的區以供象數據庫的備份與恢復等操作。
程序全局區(PGA)
PGA是Oracle使用的內存區域,該區同一時(shí)間只能被一單個(gè)進(jìn)程存放數據和控制,用于存放會(huì )話(huà)變量及內部數組等。
§2.7.2
程序全局區PGA是Oracle使用的內存區域,該區同一時(shí)間只能被一單個(gè)進(jìn)程存放數據和控制,用于存放會(huì )話(huà)變量及內部數組等。
§2.8
Oracle實(shí)例一個(gè)Oracle 實(shí)例(Instance) 是由SGA,后臺進(jìn)程以及數據文件組成,每個(gè)數據庫有自己的SGA和獨立的Oracle進(jìn)程集。
在分布情況下,為使不同的數據庫系統的名字不致混淆,Oracle使用了一個(gè)SID(System Identifer)來(lái)標識每個(gè)Oracle Server的名字,在UNIX環(huán)境中以變量Oracle_Sid來(lái)區分。
§2.9 多線(xiàn)程服務(wù)器 (MTS)
Oracle多線(xiàn)程服務(wù)器(Multithreader Server )允許對數據庫進(jìn)行多個(gè)連接以充分共享內存和資源,這使得可以用較少的內存來(lái)支持較多的用戶(hù)。連接到Oracle數據庫的進(jìn)程都需要占用一定的內存空間,這樣如果有過(guò)多的進(jìn)程連接到Oracle,則出現了一個(gè)性能瓶頸。
Oracle8可以允許一萬(wàn)個(gè)以上用戶(hù)同時(shí)連接到Oracle,但并不是所有的用戶(hù)都使用MTS.目前的一些4GL工具并不支持MTS,象VB,PB等不支持MTS,象VC/C++可以支持MTS. Oracle多線(xiàn)程服務(wù)器有自己的連接池(即共享服務(wù)器進(jìn)程)。由于用戶(hù)共享開(kāi)放連接,這比原來(lái)的專(zhuān)用方法快的多(消除瓶頸)。
多線(xiàn)程對于一些專(zhuān)用的應用系統來(lái)說(shuō)是非常合適的,比如訂單登記系統,顧客提交訂單,錄入員該訂單的數據;另外的錄入員在與顧客交涉,并不都在錄入數據(專(zhuān)用服務(wù)器進(jìn)程閑著(zhù))。單這些終端被迫與系統連著(zhù),占據了其他用戶(hù)的資源。
多線(xiàn)程服務(wù)器則消除這些缺點(diǎn)。多線(xiàn)程服務(wù)器只維護一個(gè)連接池,當某個(gè)終端需和系統對話(huà)則給其分配一個(gè)連接即可。不需要則可以去掉。這樣系統的資源被多個(gè)用戶(hù)平攤。
改變參數文件中的相關(guān)參數來(lái)達到使系統成為多線(xiàn)程服務(wù)器配置(重新啟動(dòng)即可有效)。另外,數據庫實(shí)例必須提供用戶(hù)數目與所放置的一樣才行。
§2.10 Oracle事務(wù)處理流程銀行取款業(yè)務(wù)處理流程:
1. 發(fā)出查詢(xún)余款的SQL語(yǔ)句,如:Select account_balance From banktable Where account_number=’111222333’ And account_type=’SAVINGS’;
SQL語(yǔ)句通過(guò)SGA得到服務(wù)器進(jìn)程;服務(wù)器進(jìn)程檢查共享池中有無(wú)該條語(yǔ)句,無(wú)該條語(yǔ)句則將放置共享池中并準備運行;執行SQL語(yǔ)句,把存放有余款的數據塊從數據文件中讀到SGA的數據高速緩沖區;顯示結果,比如余款為$325.
2. 取款$25:SQL語(yǔ)句為:Update Bank_table set account_balanct=300 Where account_number=’111222333’ And account_type=’SAVINGS’;
客戶(hù)進(jìn)程通過(guò)SGA把SQL語(yǔ)句傳給服務(wù)器進(jìn)程;服務(wù)器進(jìn)程查找有無(wú)該條語(yǔ)句,有執行;分析SQL語(yǔ)句并存入共享池;執行SQL語(yǔ)句;
要處理的數據在數據高速緩沖區嗎?是轉7;l 從數據文件中讀數據塊到數據高速緩沖區;在回滾段中記錄原來(lái)的數值($325);在重做日志中生成該事務(wù)的一個(gè)拷貝;將數據高速緩沖區中的余額改為$300;銀行柜員機通過(guò)SGA發(fā)出工作完成信號(提交):在重做日志中記錄已完成事務(wù);清除回滾段中的恢復信息(Undo Information);顧客取錢(qián)完成。
§2.11
ORACLE系統的SYS和SYSTEM模式SYS和SYSTEM 是每個(gè)ORACLE 數據庫系統缺省安裝的兩個(gè)帳戶(hù)。SYS 是所有內部數據庫表、結構、過(guò)程包、等擁有者,此外它還擁有 V$ 和數據字典視圖,并創(chuàng )建所有封裝的數據庫角色(DBA,CONNECT,RESOURCE)。 Sys是一個(gè)唯一能訪(fǎng)問(wèn)特定內部數據字典的用戶(hù)。 System 也是在安裝ORACLE 時(shí)創(chuàng )建的用戶(hù),用于 DBA 任務(wù)的管理。
SYS 安裝后的缺省口令為 change_on_install; SYSTEM 缺省口令為 manager. 為了安全,可在安裝完成后。 用 ALTER USER sys IDENTIFIED BY password; 命令修改這兩個(gè)特權帳戶(hù)的口令。
§2.12
ORACLE系統跟蹤文件所有ORACLE 數據庫都至少有一個(gè)文件用于記錄系統信息,錯誤及主要事件。這個(gè)文件叫做ALERTsid.log(這里的sid 為 oracle 的系統標識),存儲位置由INITsid.ORA 文件的 BACKGROUND_DUMP_DEST 參數給出。
后臺進(jìn)程和用戶(hù)進(jìn)程都可以建立各自的跟蹤文件,后臺進(jìn)程跟蹤文件位置由BACKGROUND_DUMP_DEST 參數給出, 而用戶(hù)跟蹤文件位置由 USER_DUMP_DEST 參數給出。 如參數文件 initora8.ora 中給出:
# define directories to store trace and alert files background_dump_dest=d:\oracle\admin\ora8\bdump user_dump_dest=d:\oracle\admin\ora8\udump后臺跟蹤文件被命名為 sidPROC.TRC
§2.13
ORACLE系統數據字典數據字典(data dictionary)是存儲在數據庫中的所有對象信息的知識庫,ORACLE數據庫系統使用數據字典獲取對象信息和安全信息,而用戶(hù)和DBA用它來(lái)查閱數據庫信息。數據字典保存數據對象和段的信息。如表、視圖、索引、包、過(guò)程以及用戶(hù)、權限、角色、審計等的信息。數據字典是只讀對象,不允許任何人對其進(jìn)行修改。
§2.14
其它數據對象ORACLE 除前面給出的數據對象外,還有包括視圖,序列,同義詞,觸發(fā)器,數據庫鏈及程序包,過(guò)程和函數。下面是必要介紹。
§2.14.1
視圖視圖是存儲在數據庫中的查詢(xún)的SQL 語(yǔ)句,它主要出于兩種主要原因:安全原因, 視圖可以隱藏一些數據,如:社會(huì )保險基金表,可以用視圖只顯示姓名,地址,而不顯示社會(huì )保險號和工資數等,另一原因是可使復雜的查詢(xún)易于理解和使用。
§2.14.2
序列序列是用于產(chǎn)生唯一數碼的數據庫對象,序列創(chuàng )建時(shí)帶有 初始值,增量值,最大值等,最大可達38 位整數。
§2.14.3
觸發(fā)器觸發(fā)器(trigger)是個(gè)特殊的存儲過(guò)程,它的執行不是由程序調用,也不是手工啟動(dòng),而是由個(gè)事件來(lái)觸發(fā),比如當對一個(gè)表進(jìn)行操作( insert,delete, update)時(shí)就會(huì )激活它執行。觸發(fā)器經(jīng)常用于加強數據的完整性約束和業(yè)務(wù)規則等。 觸發(fā)器可以從 DBA_TRIGGERS ,USER_TRIGGERS 數據字典中查到。
§2.14.4
同義詞同義詞(synonym)是指向其它數據庫表的數據庫指針。同義詞有兩種類(lèi)型:私有(private)和公共(public)。私有的同義詞是在指定的模式中創(chuàng )建并且只創(chuàng )建者使用的模式訪(fǎng)問(wèn)。公共同義詞是由public 指定的模式訪(fǎng)問(wèn),所有數據庫模式(用戶(hù))都可以訪(fǎng)問(wèn)它。
§2.14.5
數據庫鏈數據庫鏈( database link )是與遠程數據庫連接的存儲定義, 它們用于查詢(xún)分布數據庫環(huán)境的遠程者。 由于存儲在 DBA_DB_LINKS 數據字典中,所以可以把它們看作一種數據庫對象類(lèi)型。
【Oracle基本術(shù)語(yǔ)】相關(guān)文章:
象棋基本術(shù)語(yǔ)03-17
服裝裁剪基本術(shù)語(yǔ)03-13
oracle數據庫基本語(yǔ)句02-08
健美健身的基本鍛煉術(shù)語(yǔ)03-20
保齡球術(shù)語(yǔ)和基本禮儀06-18
Oracle數據庫基本知識03-31
ORACLE數據庫操作基本語(yǔ)句03-06
J2EE的基本術(shù)語(yǔ)03-16