oracle 基本概念和與informix對照

來源:互聯網
上載者:User

oracle 基本概念和與informix對照

一、概念
使用者:informix直接使用作業系統的使用者管理系統,一般使用root和informix作為超級操作員,對其他使用者進行管理。oracle有自己獨立的使用者管理系統,一般使用SYS和SYSTEM作為超級操作員,對其他使用者進行管理。
執行個體:由訪問資料庫所需的一部分電腦記憶體和輔助處理後台進程組成,這個概念對oracle和informix都是相同的。一台機器上可以起多個執行個體,各自使用自己分配的記憶體和後台進程,一般一台機器上只起一個執行個體。在對資料庫進行存取時實際上都是在這片共用記憶體進行操作,到達校正點時才真正將資料寫入硬碟。
資料庫:在每個執行個體上可以建立多個資料庫,共用同一個執行個體的資源,oracle和informix是相同的。
資料表空間:informix稱為dbspace,由裸裝置上建立的chunk組成,資料表空間本身沒有大小限制,但組成表的單個chunk最大不超過2G;由於直接使用原始磁碟和自己的I/O系統,不用作業系統的I/O系統及其開銷,資料存取更為高效。oracle使用作業系統的檔案系統,沒有大小的限制。
訪問資料庫的螢幕介面:informix支援dbaccess和isql,其中dbaccess時資料庫引擎的一部分,包含在informix的安裝中,isql是需要另外購買的獨立產品;其中只能寫sql語句和informix擴充的一些語句。oracle支援sqlplus和更為友好網頁介面,支援PL/SQL編程,包括SQL語句,感覺類似python。
資料庫特性:oracle是物件導向的關聯式資料庫系統(ORDBMS),支援物件導向的概念。informix是關係型資料庫管理系統(RDBMS)。
設定檔:informix在onconfig.std檔案中,每個執行個體一個。oracle初始化參數檔案在$ORACLE_HOME/admin/TEST/pfile/目錄下,名為:init.ora.615200511947(隨機產生的ID).
二、資料類型
oracle的資料類型:
CHAR 字元型,最長2000位元組
NCHAR 基於字元集的字元型,同上
VARCHAR2 變長字元型,最長4000位元組
NVARCHAR 基於字元集的變長字元型,同上
VARCHAR 同VARCHAR2
NUMBER(s,d) 數字型,總位元位s位,小數位為d位,總長最大為38位
DATE 日期型
LONG 變長字元型,最長為2 G位元組
RAW 純位元據類型,最長為2000位元組
LONG RAW 變長位元據類型,最長為2G位元組
BLOB 二進位大物件類型,最長為4 G位元組
NLOB 包含定寬的多位元字元大物件類型,最長為4 G位元組
CLOB 包含單個字元的字元大物件類型,最長4 G位元組
BFILE 資料庫外的大型二進位的輸入器類型,最大為4 G位元組
MLSLABLE 作業系統中二進位標籤類型
ROWID 姬路的物理地址類型

informix的資料類型:(見《Informix Guide to SQL 參考指南》:系統目錄表,資料類型,環境變數)
0=char(n) 定義寬度為n的字元欄位,最長255
1=smallint 短整型,-32767-32767
2=integer 整型,-2147483647-2147483648
3=float(x) 浮點型,最大有效位元16位
4=smallfloat 8位有效位元的浮點型
5=decimal(x,y) 產生x位精度的儲存體,x為有效位元。不指定時預設為16位。
6=serial 表中插入行時自動指定的數字值,指定值比前一個最大值大1,每個表只能有一個
7=date 日期型,預設MM/DD/YYYY,可自訂。這個值實際上是整數,表示從1899年12月31日算起的天數。
17=int8 儲存8個位元組的整數值,範圍從-(2^63-1)到(2^63-1)
8=money(x,y) 產生x位精度的儲存體,x為有效位元,y為小數點位元。不指定時x預設為16位,y預設為2位。
10=datetime a to b 日期時間型,可定義格式。a和b值表示要存放的值的細節。a值表示最大單位,預設為year,b值表示最小單位。時間單位包括MONTH,DAY,HOUR,MINUTE和FRACTION
11=byte 位元據,最大2的31次方位元組
12=text 文本型,最大2的31次方位元組
13=varchar 儲存變長字元型,最長255位元組
14=interval 表示時間跨度的值
15=nchar(n) 同char,但允許GLS應用程式的不同排序次序
16=nvarchar 同varchar,但允許GLS應用程式的不同排序次序
18=serial8 儲存範圍同INT8的大順序整數
19=set(e) 儲存元素的非排序集合,所有元素都具有同一類型e;不允許重複值
20=multiset(e) 儲存元素的非排序集合,所有元素都具有同一類型e;允許重複值
21=list(e) 儲存元素的排序集合,所有元素都具有同一類型e;允許重複值
22=row 儲存已命名或未命名行類型
40=Varying-length opaque type 儲存使用者定義的資料類型,其內部結構對於資料庫伺服器不透明,即不可存取
41=Fixed-length opaque type 儲存使用者定義的資料類型,其內部結構對於資料庫伺服器不透明,即不可存取
43=lvarchar 儲存變長字串,最大32739個位元組
44=boolean 儲存布爾值true和false
BLOB 以隨機存取塊的形式儲存位元據
CLOB 以隨機存取塊的形式儲存文本資料

三、oracle概念和術語

oracle資料庫系統是一個複雜的軟體系統。如果不瞭解其內部的結構原理及關係,就不可能設計和編寫出高品質的應用軟體系統,也不可能管理好一個複雜的應用系統。為了給以後章節的打好基礎,本章簡要給出 ORACLE 8 /ORACLE8i資料庫系統結構的描述。

1 術語

資料庫塊(BLOCK)
ORACLE 資料庫中的最小儲存和處理單位,包含塊本身的頭資訊資料或PL/SQL代碼。
ORACLE 塊的大小是可以在安裝時選擇“自訂安裝”來指定,也可以在CREATE DATABASE建立資料庫執行個體時指定。其最小為2K,最大可達為64K。

瓶頸(Bottleneck)
指限制系統效能的組件。

物件導向的關聯式資料庫
具有關聯式資料庫的全部功能,同時又支援物件導向的資料庫,稱作物件導向關聯式資料庫系統。Oracle7是一種功能完備的關聯式資料庫系統;oracle8是一種物件導向的關聯式資料庫系統。

資料線上分析處理(OLAP)
是一種能以快速、互動、方便的方式洞察資料情況的技術。如Oracle Express,Cognos(加拿大)的Power Play, Business Objects公司的Business Object 等。

多線程(MTS)
一個使用者可以同時運行多個程式對資料庫進行訪問,比如Visual C/C++可以提供同時啟動多個進程,而Visual Basic則不能。

資料倉儲(Data Warehouse)
支援大量資料資訊儲存的叫做支援資料倉儲或資料倉儲。當把幾個小型資料庫整合為一個大型資料庫,並為一個較廣泛的組織服務時,如果該資料庫儲存曆史資料,提供決策支援,提供資料匯總,提供唯讀資料,並且實質上充當所有向它提供資料的相關成品資料庫的資料接收器,那麼它通常被叫做資料倉儲。

執行個體(Instance)
是訪問Oracle資料庫所需的一部分電腦記憶體和輔助處理後台進程。

對象(Objects)
是實現世界實體的軟體表示,如表、索引、視圖、同義字、過程等。

資料庫檔案(Datafile)
Oracle系統中用於存放資料(應用系統資料)的檔案。(<>P14中的例子不準確,容易誤導讀者)。

控制檔案(Control File)
Oracle中存放系統用的一些資料的檔案。如資料檔案的路徑及檔案名稱,初始設定檔案路徑及 檔案名稱等都存放在控制檔案中。

記錄檔(Logs File)
也叫事務記錄檔案,該檔案記錄有事物對資料庫進行的一切修改操作或事務。

DBA(Database administrator-資料庫管理員)
是管理資料庫系統的技術工具或人員,在完備的資料庫系統中都提供DBA功能。

灰資料區塊(Dirty data block)
存放在記憶體中的未經處理資料已被修改,而修改後的資料還未寫入資料庫中。

熱資料區塊(Hot data block)
存放著那些經常被修改資料叫熱資料區塊。

LRU(Least Recently Used-最近最少用)
Oracle系統使用的一種演算法,對於在記憶體中但最近又不用的資料區塊(記憶體塊)叫做LRU,Oracle會根據那些資料屬於LRU而將其移出記憶體而騰出空間來載入另外的資料。

表(Table)
存放專門資料而建立和分配的空間。

資料表空間(Tablespace)
是一個或多個資料檔案的集合,所有的資料對象都存放在指定的資料表空間中,但主要存放的是表, 所以稱作資料表空間。

復原(Rollback)
將使用者(或者說事務)改變的資料恢複到上一次所處的狀態。

恢複資訊(Undo Information)
記錄用於恢複的資訊稱作恢複資訊。復原就是根據恢複資訊內容進行恢複的。

2 Oracle資料庫結構
Oracle資料庫結構是Oracle資料庫系統的主要部分,它是一些可以看得見的軟體,包括:

Oracle 資料字典
資料表空間與資料檔案
Oracle執行個體(Instance)

A Oracle 資料字典
Oracle資料庫的重要部分是資料字典。它存放有Oracle資料庫所用的有關資訊,對使用者來說是一組唯讀表。資料字典內容包括:

資料庫中所有模式對象的資訊,如表、視圖、簇、及索引等。
分配多少空間,當前使用了多少空間等。
列的預設值。
約束資訊的完整性。
Oracle使用者的名字。
使用者及角色被授與權限。
使用者訪問或使用的審計資訊。
其它產生的資料庫資訊。

資料庫資料字典是一組表和視圖結構。它們存放在SYSTEM資料表空間中。
資料庫資料字典不僅是每個資料庫的中心。而且對每個使用者也是非常重要的資訊。使用者可以用SQL語句訪問資料庫資料字典。

B 資料表空間與資料檔案
簡單說,資料表空間就是一個或多個資料檔案(物理檔案)的集合(邏輯檔案)。一般有下面的資料表空間:

1)系統資料表空間(System tablespace)
是各種不同版本的Oracle必備的部分,存放Oracle系統的一些資訊,一般只有一個SYSTEM資料表空間。

2)暫存資料表空間(Temporary tablespace )
由於Oracle工作時經常需要一些臨時的磁碟空間,這些空間主要用作查詢時帶有排序(Group by,Order by等)等演算法所用,當用完後就立即釋放,對記錄在磁碟區的資訊不再使用,因此叫暫存資料表空間。一般安裝之後只有一個TEMP暫存資料表空間。

3)工具資料表空間(Tools tablespace)
用於儲存Oracle資料庫工具所需的資料庫物件,這些工具資料表空間存放在工作時所用的專用表。舊的Oracle版本無此資料表空間。安裝之後的工具資料表空間是Tools。

4)使用者資料表空間(Users tablespace)
用於存放一些實驗例子用的空間,當然也可以用於存放應用系統的資料。舊版本無Users資料表空間。現在的使用者資料表空間為 USERS 。

5)資料及索引資料表空間
存放資料及索引的資料表空間,Oracle7以後都提倡在應用系統中,特別是具有大量資料的系統,要把資料和索引分開存放在不同的分區中,以便提高查詢速度。在安裝後索引資料表空間可能是INDX。資料資料表空間就是USERS。

6)復原段資料表空間(Rollback Segment)
Oracle資料庫系統在運行Insert、Update、Delete時都需要一個磁碟空間來存放恢複資訊(Undo Information),以便在進行恢複時能將原來資訊讀出來。安裝後的復原段資料表空間是RBS資料表空間。資料庫管理員也可根據應用的需要建立另外的復原段資料表空間。

Oracle 以資料表空間來儲存邏輯資料並以物理資料相連。
資料庫被分成一個或多個邏輯組件稱作資料表空間。而資料表空間又被分成稱作段(segment)的邏輯組件。這些段再細分就叫擴充(extents)。

C Oracle執行個體
Oracle執行個體(Instance)是由一組後台進程和記憶體結構組成。每個啟動並執行資料庫系統都與執行個體有關。所以,有時稱Oracle執行個體為資料庫作業系統。下面是Oracle執行個體的解釋。

Oracle 進程
Oracle有兩種類型的進程: 伺服器處理序和後台進程(server processes and background processes)。

伺服器處理序
Oracle 伺服器處理序是處理使用者與執行個體串連的事務。任務是:

分析和執行應用所發出的SQL語句。
從資料檔案讀必要的資料到SGA區的共用資料區。
返回必要資訊給應用。

後台進程
Oracle系統使用一些附加的進程來處理系統的必須的工作。這些進程叫後台進程:

資料庫寫 (DBW0 或DBWn)
日誌寫 (LGWR)
檢測點 (CKPT)
系統監視 (SMON)
進程監視 (PMON)
歸檔 (ARCn)
恢複 (RECO)
鎖(LCK0)
工作隊列 (SNPn)
隊列監視 (QMNn)
發布(Dispatcher) (Dnnn)
伺服器 (Snnn)

Oracle 的記憶體結構(SGA)

SGA 結構為:

資料高速緩衝區
重做日誌緩衝區
共用池
大的共用池(可選)
資料字典緩衝區
其它資料緩衝區

3 Oracle資料庫檔案
ORACLE 資料庫是一個複雜的資料庫作業系統,由一系列組件組成,主要有:1)初始化參數檔案、2)資料檔案、3)控制檔案、4)記錄檔等。

A 初始化參數檔案
初始化參數檔案(initialization parameter file) INITsid.ORA,是 ORALE RDBMS 主要的配置點,它是配置參數和數值的集合。每一個參數值都控制或修改資料庫和執行個體的某個方面。 早期的版本把參數都寫在 initsid.ora 檔案中,但在ORACLE8 之後,多數參數已不在該檔案中出現,需修改這些參數時只能在SQL>下用 SET SESSION 或 SET SYSTEM 來進行。 查看系統參數可用。例如:

SQL>select * from v$parameter;

來列出。
Oracle初始化參數檔案是一個可以編輯的文字檔。它是在資料庫執行個體啟動時被訪問,從而得到資料檔案、記錄檔、控制檔案等的路徑,此外,初始化參數檔案還提供執行個體所用的參數等。

初始化參數檔案在$ORACLE_HOME/admin/TEST/pfile/目錄下,名為:init.ora.615200511947(隨機產生的ID).

B 資料檔案
用於存放所有資料庫的資料檔案,Oracle安裝過程中自動建立多個必要的資料檔案。這些資料檔案用於存放Oracle系統的基本資料。在應用系統開發過程中,我們可根據需要另建立一些資料檔案。
如果資料檔案按它們存放的資料類型來分的話,可以分為:
使用者資料
存放應用系統的資料為使用者資料。

系統資料
系統管理使用者資料和資料庫系統本身的資料,如資料字典,使用者建立的表的名字,類型等都記錄在系統資料中。

C 控制檔案
控制檔案是由Oracle資料庫執行個體在啟動時被訪問的內部二進位檔案,它們所存放的路徑由參數檔案的control_files=參數來確定.Oracle一般有兩個或更多的控制檔案,每個控制檔案記錄有相同的資訊,在資料庫運行中如果某個控制檔案出錯時,Oracle會自動使用另外一個控制檔案。當所有的控制檔案都損壞時系統將不能工作。

Oracle資料庫至少有一個控制檔案;
一般資料庫系統安裝完成後,自動建立兩個以上控制檔案;
為了安全一般建議建立多個控制檔案;
控制檔案可用下面命令查到:

select name,value from v$parameter where name like 'control_files';

D 重做記錄檔
重做記錄檔是Oracle系統中一個很重要的檔案。特點是:

重做日誌是Oracle的日記帳,負責記錄所有使用者物件或系統變更的資訊;
安裝完成後有多個重做記錄檔,它們是幾個分為一組,組內的重做記錄檔大小要一樣;
為了使系統效能更好可以在建立多重做記錄檔組;
重做記錄檔可以名下面命令查到:

select * from v$logfile;

E 其它支援檔案
除了上面的三類檔案外,還有:
Sqlnet.ora檔案;
Tnsnames.ora檔案;
Listener.ora檔案等。

4 重做日誌和重做日誌工作模式
重做日誌、記錄檔及重做日工作模式是Oracle系統中很重要的概念,管理員要完全理解它們的原理和使用方法。下面只給簡單的概念,有關的管理在另外章節給出。
A 重做日誌
Oracle所作的一切操作都記錄在記錄檔中,Oracle系統在工作當中並不是每作一條記錄的修改就立即存檔(寫入資料檔案),而是只作修改記錄,聯機重做日誌就儲存所有這些改變的資訊。當所有的修改最後寫入資料檔案時,所有的修改仍記錄在聯機重做日誌中,這將有利於對這些事務記錄進行恢複操作。但如果不是聯機重做日誌,則只能恢複部分近期的操作。

B 重做日誌工作模式
Oracle可以在兩種模式之一來工作:
1)ARCHIVELOG模式(可恢複)
Oracle 一般至少有兩個記錄檔。它們輪流交替地被寫入所作的一切修改資訊。當系統設定為可復原模式,Oracle自動將每次即將被覆蓋(衝掉)的日誌資訊先作備份,然後再其上記錄所修改的資訊。這樣的方式,就可以利用備份與恢複工作進行某時期的資料恢複。

2)NOARCHIVELOG模式(有限的恢複)
預設情況下為NOARCHIVELOG,Oracle不保留舊的重做日誌資訊(可以在原來基礎覆蓋寫入)。因此一般情況下不可恢複的。

5 資料區塊、區間和段
A 資料區塊(data block)
Oracle的資料區塊也叫Oracle塊;
Oracle系統在建立資料表空間時將資料檔案格式化成若干個Oracle塊;
每個Oracle塊是Oracle系統處理的最小單位;
塊的大小在安裝系統時確定,可以選擇“自訂安裝”來設定大小;
塊的大小一旦確定下來就不能改動;
塊的大小可以從2k至64k不等;
塊的大小可以用下面命令查到:

select name,value from v$parameter where name like 'db_block_size';

B 區間(extent)
分配給對象(如表)的任何連續塊叫區間;
區間也叫擴充,因為當它用完已經分配的區間後,再有新的記錄插入就必須在分配新的區間(即擴充一些塊);
區間的大小由 next 決定;
一旦區間分配給某個對象(表、索引及簇),則該區間就不能再分配給其它的對象;
一個對象所用去多少區間可用下命令查到:

select segment_name,tablespace_name,count(*) from dba_extents
having count(*)>1 group by segment_name,tablespace_name;

C 段(segment)
段是指佔用資料檔案空間的通稱,或資料庫物件使用的空間的集合;
段可以有表段、索引段、復原段、臨時段和快取段等;
段使用同資料表空間中的若干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) 當開始的500k用完後就再分配256k; 此時段=500k+256k;
3) 如果所分配的區間又用完後,就再分配256k, …

6 Oracle資料庫進程
一般情況,當資料庫啟動完成後(Instance 啟動成功)就至少有六個後台進程在活動,這些進程根據資料庫的需要而分工不同。他們分別是:

1)資料庫寫入器(DBWR)
資料庫寫入器(Database Writer)的任務是將修改後的(在記憶體)資料區塊寫回資料庫檔案中。在某些作業系統中,Oracle可以有兩個BDWR進程。

2)校正點(CKPT)
是一個可選進程。在系統運行中當出現尋找資料請求時,系統從資料庫中找出這些資料並存入記憶體區,這樣使用者就可以對這些記憶體區資料進行修改等。當需要對被修改的資料寫回資料檔案時就產生重做日誌的交替寫(Switch),這時就出現校正點。系統要把記憶體中灰資料(修改過)塊中的資訊寫回磁碟的資料檔案中,此外系統還將重做日誌通知控制檔案。DBA可以改變參數檔案中CHECKPOINT_PROCESS TRUE來使能( 使有效或無效)該進程。

3)日誌寫入器(LGWR)
用於將SGA區中的日誌資訊寫入記錄檔的進程。一般是使用者所作的修改值先記入記錄檔。等到一定時才真正將修改結果寫回資料檔案。

4)系統監控器(SMON)
系統監控器(System monitor)是在資料庫系統啟動時執行恢複工作的強制性進程。比如在並行伺服器模式下(兩台伺服器共用一磁碟組),SMON可以恢複另一台處於失敗的資料庫。使系統切換到另一台正常的伺服器上。

5)進程監控器(PMON)
進程監控器(Process Monitor)用於終止那些失敗的使用者,釋放該使用者所佔用的資源等。

6)歸檔器(ARCH)
可選進程,當資料庫系統處于歸檔(ARCHIVELOG)模式時使用。

7)鎖(LCKn)
可選進程,當在並行伺服器模式可出現多個鎖定進程以利於資料庫通訊。

恢複器(RDCO)
分散式資料庫(不同地點有不同機器和不同的Oracle系統)模式下使用的可選進程,用於資料不一致時作的恢複工作。在RECO解決恢複前,所作的修改資料的標誌均標為“可疑”。

9)調度(Dnnn)
可選進程,在多線程下使用,即對每個在用(D000,...,Dnnn)的通訊協定至少建立一個調度進程,每個調度進程負責從所聯結的使用者進程到可用伺服器處理序的路由請求。把響應返回給合適的使用者進程。

10)快照進程(SNPn)
快照進程處理資料庫快照集的自動重新整理,並通過 DBMS_JOB 包運行預定的資料庫過程. INITsid.ORA 參數 JOB_QUEUE_PROCESS 設定快照進程數, 參數 JOB_QUEUE_INTERVAL 決定快照進程在被喚醒以處理掛起的作業或事務之前休眠的秒數。

11)並行查詢進程(Pnnn)
可根據資料庫的活動並行查詢選項的設定,ORACLE伺服器起動或停止查詢進程.這些進程涉及並行索引的建立,表的建立及查詢。 啟動的數量與參數 PARALLEL_MIN_SERVERS指定的數量相同,不能超出該參數指定的值。

7 Oracle記憶體結構
前面提到過Oracle的資料庫執行個體是一組後台進程和記憶體結構組成。而記憶體結構是包括:

系統全域區(System Global Area)
程式全域區(Program Global Area)

A 系統全域區
Oracle 系統用於存放系統資訊的一Block Storage地區,使用者進程和Oracle後台進程都可以使用SGA。在SGA中含有許多組件(不同的部分)。

資料高速緩衝區(Data Buffer Cache)

在資料高速緩衝區中存放著Oracle系統最近使用過的資料區塊(即使用者的高速緩衝區),當把資料寫入資料庫時,它以資料區塊為單位進行讀寫,當資料高速緩衝區填滿時,則系統自動去掉一些不常被用訪問的資料。如果使用者要查的資料不在資料高速緩衝區時,Oracle自動從磁碟中去讀取。資料高速緩衝區包括三個類型的區:

1) 髒的區(Dirty Buffers):包含有已經改變過並需要寫回資料檔案的資料區塊。
2) 自由區(Free Buffers):沒有包含任何資料並可以再寫入的區,Oracle可以從資料檔案讀資料區塊該區。
3) 保留區(Pinned Buffers):此區包含有正在處理的或者明確保留用作將來用的區。

Oracle8i以後將緩衝池分為三個區(使用多個緩衝池特性時):
1) KEEP 緩衝池(KEEP buffer pool):在記憶體中保留資料區塊,它們不會被從記憶體中擠掉;
2) RECYCLE緩衝池從不需要的記憶體將資料移掉;
3) DEFAULT緩衝池包含有被分配的塊。

重做日誌緩衝區(Rado Log Buffer)

任何事務(Transaction)在記錄到重做日誌(恢複工作需要使用聯機重做日誌)之前都必須首先放到重做日誌緩衝區(Redo Log Buffer)中。然後由日誌寫入進程(LGWR)定期將此緩衝區的內容寫入重做日誌中。

共用池(Shared Pool)

共用池是SGA保留的區,用於儲存如SQL、PL/SQL預存程序及包、資料字典、鎖、字元集資訊、安全屬性等。共用池包含有:
1) 庫快取(Library Cache);
2) 字典高速緩衝區(Dictionary Cache )。

庫快取(Library Cache)

該區包含有:
1) 共用SQL區(Shared Pool Area);
2) 私人SQL區(Private SQL Area);
3) PL/SQL預存程序及包(PL/SQL Procedure and Package);
4) 控制結構(Control Structure)。

也就是說該區存放有經過文法分析並且正確的SQL語句,並隨時都準備被執行。

字典高速緩衝區(Data Dictionary Cache)

用於存放Oracle系統管理自身需要的所有資訊,這些資訊是登入到Oracle的使用者名稱,這些使用者有那些資料庫物件以及這些資料庫物件的位置等。

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; 查詢當前執行個體的SGA。

大的池(Large Pool)

在SGA中大池是可選的緩衝區。它可以根據需要有管理權進行配置。它可以提供一個大的區以供象資料庫的備份與恢複等操作。

2)程式全域區(PGA)
PGA是Oracle使用的記憶體地區,該區同一時間只能被一單個進程存放資料和控制,用於存放會話變數及內部數組等。
B 程式全域區
PGA是Oracle使用的記憶體地區,該區同一時間只能被一單個進程存放資料和控制,用於存放會話變數及內部數組等。

8 Oracle執行個體
一個Oracle 執行個體(Instance) 是由SGA,後台進程以及資料檔案組成,每個資料庫有自己的SGA和獨立的Oracle進程集。
在分布情況下,為使不同的資料庫系統的名字不致混淆,Oracle使用了一個SID(System Identifer)來標識每個Oracle Server的名字,在UNIX環境中以變數Oracle_Sid來區分。

9 多線程伺服器 (MTS)
Oracle多線程伺服器(Multithreader Server )允許對資料庫進行多個串連以充分共用記憶體和資源,這使得可以用較少的記憶體來支援較多的使用者。
串連到Oracle資料庫的進程都需要佔用一定的記憶體空間,這樣如果有過多的進程串連到Oracle,則出現了一個效能瓶頸。
Oracle8可以允許一萬個以上使用者同時串連到Oracle,但並不是所有的使用者都使用MTS。目前的一些4GL工具並不支援MTS,象VB,PB等不支援MTS,象VC/C++可以支援MTS。 Oracle多線程伺服器有自己的串連池(即共用伺服器處理序)。由於使用者共用開放串連,這比原來的專用方法快的多(消除瓶頸)。

多線程對於一些專用的應用系統來說是非常合適的,比如訂單登記系統,顧客提交訂單,錄入員該訂單的資料;另外的錄入員在與顧客交涉,並不都在錄入資料(專用伺服器處理序閑著)。單這些終端被迫與系統連著,佔據了其他使用者的資源。
多線程伺服器則消除這些缺點。多線程伺服器只維護一個串連池,當某個終端需和系統對話則給其分配一個串連即可。不需要則可以去掉。這樣系統的資源被多個使用者平攤。
改變參數檔案中的相關參數來達到使系統成為多線程伺服器配置(重新啟動即可有效)。另外,資料庫執行個體必須提供使用者數目與所放置的一樣才行。

10 Oracle交易處理流程
銀行取款業務處理流程:
A. 發出查詢餘款的SQL語句,如:
Select account_balance From banktable
Where account_number='111222333'
And account_type='SAVINGS';

SQL語句通過SGA得到伺服器處理序;
伺服器處理序檢查共用池中有無該條語句,無該條語句則將放置共用池中並準備運行;
執行SQL語句,把存放有餘款的資料區塊從資料檔案中讀到SGA的資料高速緩衝區;
顯示結果,比如餘款為$325。

B. 取款$25:SQL語句為:
Update Bank_table set account_balanct=300
Where account_number='111222333'
And account_type='SAVINGS';

客戶進程通過SGA把SQL語句傳給伺服器處理序;
伺服器處理序尋找有無該條語句,有執行(;
分析SQL語句並存入共用池;
執行SQL語句;

要處理的資料在資料高速緩衝區嗎?是轉7;
從資料檔案中讀資料區塊到資料高速緩衝區;
在復原段中記錄原來的數值($325);
在重做日誌中產生該事務的一個拷貝;
將資料高速緩衝區中的餘額改為$300;
銀行櫃員機通過SGA發出工作完成訊號(提交):
在重做日誌中記錄已完成事務;
清除復原段中的恢複資訊(Undo Information);
顧客取錢完成。

11 ORACLE系統的SYS和SYSTEM模式
SYS和SYSTEM 是每個ORACLE 資料庫系統預設安裝的兩個帳戶。SYS 是所有內部資料庫表、結構、過程包、等擁有者,此外它還擁有 V$ 和資料字典視圖,並建立所有封裝的資料庫角色(DBA,CONNECT,RESOURCE)。 Sys是一個唯一能訪問特定內部資料字典的使用者。 System 也是在安裝ORACLE 時建立的使用者,用於 DBA 任務的管理。
SYS 安裝後的預設口令為 change_on_install; SYSTEM 預設口令為 manager。 為了安全,可在安裝完成後。 用 ALTER USER sys IDENTIFIED BY password; 命令修改這兩個特權帳戶的口令。

12 ORACLE系統追蹤檔案
所有ORACLE 資料庫都至少有一個檔案用於記錄系統資訊,錯誤及主要事件.這個檔案叫做ALERTsid.log(這裡的sid 為 oracle 的系統標識),儲存位置由INITsid.ORA 檔案的 BACKGROUND_DUMP_DEST 參數給出。
後台進程和使用者進程都可以建立各自的追蹤檔案,後台進程追蹤檔案位置由BACKGROUND_DUMP_DEST 參數給出, 而使用者追蹤檔案位置由 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

13 ORACLE系統資料字典
資料字典(data dictionary)是儲存在資料庫中的所有對象資訊的知識庫,ORACLE資料庫系統使用資料字典擷取對象資訊和安全資訊,而使用者和DBA用它來查閱資料庫資訊。資料字典儲存資料對象和段的資訊。如表、視圖、索引、包、過程以及使用者、許可權、角色、審計等的資訊。資料字典是唯讀對象,不允許任何人對其進行修改。

14 其它資料對象
ORACLE 除前面給出的資料對象外,還有包括視圖,序列,同義字,觸發器,資料庫鏈及程式包,過程和函數。下面是必要介紹。

A 視圖
視圖是儲存在資料庫中的查詢的SQL 陳述式,它主要出於兩種主要原因:
安全原因, 視圖可以隱藏一些資料,如:社會保險基金錶,可以用視圖只顯示姓名,地址,而不顯示社會保險號和工資數等,另一原因是可使複雜的查詢易於理解和使用.

B 序列
序列是用於產生唯一數位的資料庫物件,序列建立時帶有 初始值,增量值,最大值等,最大可達38 位整數。

C 觸發器
觸發器(trigger)是個特殊的預存程序,它的執行不是由程式調用,也不是手工啟動,而是由個事件來觸發,比如當對一個表進行操作( insert,delete, update)時就會啟用它執行。觸發器經常用於加強資料的完整性條件約束和商務規則等。 觸發器可以從 DBA_TRIGGERS ,USER_TRIGGERS 資料字典中查到。

D 同義字
同義字(synonym)是指向其它資料庫表的資料庫指標。同義字有兩種類型:私人(private)和公用(public)。私人的同義字是在指定的模式中建立並且只建立者使用的模式訪問。公用同義字是由public 指定的模式訪問,所有資料庫模式(使用者)都可以訪問它。

E 資料庫鏈
資料庫鏈( database link )是與遠端資料庫串連的儲存定義, 它們用於查詢分布資料庫環境的遠程者。 由於儲存在 DBA_DB_LINKS 資料字典中,所以可以把它們看作一種資料庫物件類型。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.