這里這個t.deptno = t1.deptno是連接條件,執(zhí)行時是循環(huán)比對的.找到t表中的一個deptno,然后拿這個deptno去跟t1表中的每一個deptno比對,如果相等就返回對應(yīng)的記錄.
創(chuàng)新互聯(lián)成立以來不斷整合自身及行業(yè)資源、不斷突破觀念以使企業(yè)策略得到完善和成熟,建立了一套“以技術(shù)為基點,以客戶需求中心、市場為導(dǎo)向”的快速反應(yīng)體系。對公司的主營項目,如中高端企業(yè)網(wǎng)站企劃 / 設(shè)計、行業(yè) / 企業(yè)門戶設(shè)計推廣、行業(yè)門戶平臺運營、app軟件開發(fā)公司、手機網(wǎng)站制作、微信網(wǎng)站制作、軟件開發(fā)、電信機房托管等實行標準化操作,讓客戶可以直觀的預(yù)知到從創(chuàng)新互聯(lián)可以獲得的服務(wù)效果。
中文的含義:甲骨文
Oracle 是一家大型的軟件公司(數(shù)據(jù)庫管理軟件的巨頭)它專注于做大型數(shù)據(jù)庫軟件它在數(shù)據(jù)庫軟件的開發(fā)上是最有實力的,就像MS在PC操作系統(tǒng)的地位一樣,占有統(tǒng)治的地位
除了Oracle公司,還有其他的軟件公司也開發(fā)數(shù)據(jù)庫軟件比如像微軟,IBM等公司也開發(fā)數(shù)據(jù)庫軟件,它們的產(chǎn)品名字叫SQL Server , DB2等數(shù)據(jù)庫軟件
什么是數(shù)據(jù)庫?
相信大家都知道也見過水庫,倉庫等現(xiàn)實中的這些東西。令我們驚喜的是,數(shù)據(jù)庫其實和它們的道理是一樣的。這正說明了那句話:來源于生活,而高于生活。
在我們的眼里數(shù)據(jù)和水,梯子,條幅,宣傳單一樣,它們都是我們的資源,我們把數(shù)據(jù)放到了數(shù)據(jù)庫,把水放到了水庫,把其他的雜物放到了倉庫。
再次看看什么是Oracle?
它是個開發(fā)數(shù)據(jù)庫管理軟件的公司,它開發(fā)的數(shù)據(jù)庫軟件我們叫簡稱叫它Oracle數(shù)據(jù)庫管理軟件,或則直接叫他Oracle。直呼Oracle更簡單,而且顯的更加的親切
什么是數(shù)據(jù)庫管理系統(tǒng)(它只是一個軟件而已)—— DBMS
我相信您一定理解了數(shù)據(jù)庫是什么樣的東西那么實際上現(xiàn)實中,比如水庫,您一定會找人來管理,否則會荒掉的;倉庫,您也一定會找個人來打理它,否則會有很多的問題
那么就像您想的一樣,數(shù)據(jù)庫管理系統(tǒng)就像是水庫的管理員,或者倉庫的管理員一樣---------管理數(shù)據(jù)庫
看懂了沒!?
這是我上課用的文檔!
1、 ORACLE 實例――包括內(nèi)存結(jié)構(gòu)與后臺進程 2、 ORACLE 數(shù)據(jù)庫――物理操作系統(tǒng)文件的集合 3、 了解內(nèi)存結(jié)構(gòu)的組成 4、 了解后臺進程的作用
1、 Oracle 實例――包括內(nèi)存結(jié)構(gòu)與后臺進程
2、 Oracle 數(shù)據(jù)庫――物理操作系統(tǒng)文件的集合
3、 了解內(nèi)存結(jié)構(gòu)的組成
4、 了解后臺進程的作用
5、 了解數(shù)據(jù)庫的物理文件
6、 解釋各種邏輯結(jié)構(gòu)
一、Oracle實例
1、Oracle 實例
System Global Area(SGA) 和 Background Process 稱為數(shù)據(jù)庫的實例。
2、Oracle 數(shù)據(jù)庫
一系列物理文件的集合(數(shù)據(jù)文件,控制文件,聯(lián)機日志,參數(shù)文件等)
3、系統(tǒng)全局共享區(qū)System Global Area(SGA)
System Global Area 是一塊巨大的共享內(nèi)存區(qū)域,他被看做是Oracle 數(shù)據(jù)庫的一個大緩沖池,這里的數(shù)據(jù)可以被Oracle的各個進程共用。其大小可以通過如下語句查看:
SQL select * from v$sga;
NAME VALUE
-------------------- ---------
Fixed Size 39816
Variable Size 259812784
Database Buffers 1.049E+09
Redo Buffers 327680
更詳細的信息可以參考V$sgastat、V$buffer_pool
主要包括以下幾個部分:
a、 共享池(Shared pool)
共享池是SGA中最關(guān)鍵的內(nèi)存片段,特別是在性能和可伸縮性上。一個太小的共享池會扼殺性能,使系統(tǒng)停止,太大的共享池也會有同樣的效果,將會消耗大量的CPU來管理這個共享池。不正確的使用共享池只會帶來災(zāi)難。共享池主要又可以分為以下兩個部分:
SQL語句緩沖(Library Cache)
當一個用戶提交一個SQL語句,Oracle會將這句SQL進行分析(parse),這個過程類似于編譯,會耗費相對較多的時間。在分析完這個SQL,Oracle會把他的分析結(jié)果給保存在Shared pool的Library Cache中,當數(shù)據(jù)庫第二次執(zhí)行該SQL時,Oracle自動跳過這個分析過程,從而減少了系統(tǒng)運行的時間。這也是為什么第一次運行的SQL 比第二次運行的SQL要慢一點的原因。
下面舉例說明parse的時間
SQL select count(*) fromscpass ;
COUNT(*)
----------
243
Elapsed: 00:00:00.08
這是在Share_pool 和Data buffer 都沒有數(shù)據(jù)緩沖區(qū)的情況下所用的時間
SQL alter system flush SHARED_POOL;
System altered.
清空Share_pool,保留Data buffer
SQL select count(*) from scpass ;
COUNT(*)
----------
243
Elapsed: 00:00:00.02
SQL select count(*) from scpass ;
COUNT(*)
----------
243
Elapsed: 00:00:00.00
從兩句SQL 的時間差上可以看出該SQL 的Parse 時間約為00:00:00.02
對于保存在共享池中的SQL語句,可以從V$Sqltext、v$Sqlarea中查詢到,對于編程者來說,要盡量提高語句的重用率,減少語句的分析時間。一個設(shè)計的差的應(yīng)用程序可以毀掉整個數(shù)據(jù)庫的Share pool,提高SQL語句的重用率必須先養(yǎng)成良好的變成習慣,盡量使用Bind變量。
數(shù)據(jù)字典緩沖區(qū)(Data Dictionary Cache)
顯而易見,數(shù)據(jù)字典緩沖區(qū)是Oracle特地為數(shù)據(jù)字典準備的一塊緩沖池,供Oracle內(nèi)部使用,沒有什么可以說的。
b、塊緩沖區(qū)高速緩存(Database Buffer Cache)
這些緩沖是對應(yīng)所有數(shù)據(jù)文件中的一些被使用到的數(shù)據(jù)塊。讓他們能夠在內(nèi)存中進行操作。在這個級別里沒有系統(tǒng)文件,,戶數(shù)據(jù)文件,臨時數(shù)據(jù)文件,回滾段文件之分。也就是任何文件的數(shù)據(jù)塊都有可能被緩沖。數(shù)據(jù)庫的任何修改都在該緩沖里完成,并由DBWR進程將修改后的數(shù)據(jù)寫入磁盤。
這個緩沖區(qū)的塊基本上在兩個不同的列表中管理。一個是塊的“臟”表(Dirty List),需要用數(shù)據(jù)庫塊的
書寫器(DBWR)來寫入,另外一個是不臟的塊的列表(Free List),一般的情況下,是使用最近最少使用 (Least Recently Used,LRU)算法來管理。塊緩沖區(qū)高速緩存又可以細分為以下三個部分(Default pool,Keep pool,Recycle pool)。如果不是人為設(shè)置初始化參數(shù)(Init.ora),Oracle將默認為Default pool。由于操作系統(tǒng)尋址能力的限制,不通過特殊設(shè)置,在32位的系統(tǒng)上,塊緩沖區(qū)高速緩存最大可以達到1.7G,在64位系統(tǒng)上,塊緩沖區(qū)高速緩存最大可以達到10G。
c、重做日志緩沖區(qū)(Redo log buffer)
重做日志文件的緩沖區(qū),對數(shù)據(jù)庫的任何修改都按順序被記錄在該緩沖,然后由LGWR進程將它寫入磁盤。這些修改信息可能是DML語句,如(Insert,Update,Delete),或DDL語句,如(Create,Alter,Drop等)。 重做日志緩沖區(qū)的存在是因為內(nèi)存到內(nèi)存的操作比較內(nèi)存到硬盤的速度快很多,所以重作日志緩沖區(qū)可以加快數(shù)據(jù)庫的操作速度,但是考慮的數(shù)據(jù)庫的一致性與可恢復(fù)性,數(shù)據(jù)在重做日志緩沖區(qū)中的滯留時間不會很長。所以重作日志緩沖區(qū)一般都很小,大于3M之后的重作日志緩沖區(qū)已經(jīng)沒有太大的實際意義。
d、Java程序緩沖區(qū)(Java Pool)
Java 的程序區(qū),Oracle 8I 以后,Oracle 在內(nèi)核中加入了對Java的支持。該程序緩沖區(qū)就是為Java 程序保留的。如果不用Java程序沒有必要改變該緩沖區(qū)的默認大小。
e、大池(Large Pool)
大池的得名不是因為大,而是因為它用來分配大塊的內(nèi)存,處理比共享池更大的內(nèi)存,在8.0開始引入。
下面對象使用大池:
MTS――在SGA的Large Pool中分配UGA
語句的并行查詢(Parallel Executeion of Statements)――允許進程間消息緩沖區(qū)的分配,用來協(xié)調(diào) 并行查詢服務(wù)器
備份(Backup)――用于RMAN磁盤I/O緩存
4、后臺進程(Background process)
后臺進程是Oracle的程序,用來管理數(shù)據(jù)庫的讀寫,恢復(fù)和監(jiān)視等工作。Server Process主要是通過他和user process進行聯(lián)系和溝通,并由他和user process進行數(shù)據(jù)的交換。在Unix機器上,Oracle后臺進程相對于操作系統(tǒng)進程,也就是說,一個Oracle后臺進程將啟動一個操作系統(tǒng)進程;在Windows機器上, Oracle后臺進程相對于操作系統(tǒng)線程,打開任務(wù)管理器,我們只能看到一個Oracle.EXE的進程,但是通過另外的工具,就可以看到包含在這里進程中的線程。
在Unix上可以通過如下方法查看后臺進程:
ps ?ef | grep ora_
# ps -ef | grep ora_ | grep XCLUAT
Oracle 29431 1 0 Sep 02 2:02 ora_dbwr_SID
Oracle 29444 1 0 Sep 02 0:03 ora_ckpt_SID
Oracle 29448 1 0 Sep 02 2:42 ora_smon_SID
Oracle 29442 1 0 Sep 02 3:25 ora_lgwr_SID
Oracle 29427 1 0 Sep 02 0:01 ora_pmon_SID
a、Oracle系統(tǒng)有5 個基本進程他們是
DBWR(數(shù)據(jù)文件寫入進程)
LGWR(日志文件寫入進程)
SMON(系統(tǒng)監(jiān)護進程)
PMON(用戶進程監(jiān)護進程)
CKPT(檢查點進程,同步數(shù)據(jù)文件, 日志文件,控制文件)
b、DBWR
將修改過的數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)寫入對應(yīng)數(shù)據(jù)文件
維護系統(tǒng)內(nèi)的空緩沖區(qū)
這里指出幾個容易錯誤的概念:
當一個更新提交后,DBWR把數(shù)據(jù)寫到磁盤并返回給用戶提交完成.
DBWR會觸發(fā)CKPT 后臺進程
DBWR不會觸發(fā)LGWR 進程
上面的概念都是錯誤的.
DBWR是一個很底層的工作進程,他批量的把緩沖區(qū)的數(shù)據(jù)寫入磁盤。和任何前臺用戶的進程幾乎沒有什么關(guān)系,也不受他們的控制。至于DBWR會不會觸發(fā)LGWR和CKPT進程,我們將在下面幾節(jié)里討論。
DBWR工作的主要條件如下
DBWR 超時
系統(tǒng)中沒有多的空緩沖區(qū)用來存放數(shù)據(jù)
CKPT 進程觸發(fā)DBWR 等
c、LGWR
將重做日志緩沖區(qū)的數(shù)據(jù)寫入重做日志文件,LGWR是一個必須和前臺用戶進程通信的進程。當數(shù)據(jù)被修改的時候,系統(tǒng)會產(chǎn)生一個重做日志并記錄在重做日志緩沖區(qū)內(nèi)。這個重做日志可以類似的認為是以下的一個結(jié)構(gòu):
SCN=000000001000
數(shù)據(jù)塊ID
對象ID=0801
數(shù)據(jù)行=02
修改后的數(shù)據(jù)=0011
提交的時候,LGWR必須將被修改的數(shù)據(jù)的重做日志緩沖區(qū)內(nèi)數(shù)據(jù)寫入日志數(shù)據(jù)文件,然后再通知前臺進程提交成功,并由前臺進程通知用戶。從這點可以看出LGWR承擔了維護系統(tǒng)數(shù)據(jù)完整性的任務(wù)。
LGWR 工作的主要條件如下
用戶提交
有1/3 重做日志緩沖區(qū)未被寫入磁盤
有大于1M 重做日志緩沖區(qū)未被寫入磁盤
超時
DBWR需要寫入的數(shù)據(jù)的SCN號大于LGWR 記錄的SCN號,DBWR 觸發(fā)LGWR寫入
d、SMON
工作主要包含
清除臨時空間
在系統(tǒng)啟動時,完成系統(tǒng)實例恢復(fù)
聚結(jié)空閑空間
從不可用的文件中恢復(fù)事務(wù)的活動
OPS中失敗節(jié)點的實例恢復(fù)
清除OBJ$表
縮減回滾段
使回滾段脫機
e、PMON
主要用于清除失效的用戶進程,釋放用戶進程所用的資源。如PMON將回滾未提交的工作,釋放鎖,釋放分配給失敗進程的SGA資源。
f、CKPT
同步數(shù)據(jù)文件,日志文件和控制文件,由于DBWR/LGWR的工作原理,造成了數(shù)據(jù)文件,日志文件,控制文件的不一至,這就需要CKPT進程來同步。CKPT會更新數(shù)據(jù)文件/控制文件的頭信息。
CKPT工作的主要條件如下
在日志切換的時候
數(shù)據(jù)庫用immediate ,transaction , normal 選項shutdown 數(shù)據(jù)庫的時候
根據(jù)初始話文件LOG_CHECKPOINT_INTERVAL、LOG_CHECKPOINT_TIMEOUT、FAST_START_IO_TARGET 的設(shè)置的數(shù)值來確定
用戶觸發(fā)
以下進程的啟動需要手工配置
g、ARCH
當數(shù)據(jù)庫以歸檔方式運行的時候,Oracle會啟動ARCH進程,當重做日志文件被寫滿時,日志文件進行切換,舊的重做日志文件就被ARCH進程復(fù)制到一個/多個特定的目錄/遠程機器。這些被復(fù)制的重做日志文件被叫做歸檔日志文件。
h、RECO
負責解決分布事物中的故障。Oracle可以連接遠程的多個數(shù)據(jù)庫,當由于網(wǎng)絡(luò)問題,有些事物處于懸而未決的狀態(tài)。RECO進程試圖建立與遠程服務(wù)器的通信,當故障消除后,RECO進程自動解決所有懸而未決的會話。
i、服務(wù)進程Server Process
服務(wù)進程的分類
專用服務(wù)進程(Dedicated Server Process)
一個服務(wù)進程對應(yīng)一個用戶進程
共享服務(wù)進程(MultiTreaded Server Process)
一個服務(wù)進程對應(yīng)多個用戶進程,輪流為用戶進程服務(wù)。
PGA UGA
PGA = Process Global Area
UGA = User Global Area
他保存了用戶的變量、權(quán)限、堆棧、排序空間等用戶信息,對于專用服務(wù)器進程,UGA在PGA中分配。對于多線程進程,UGA在Large pool中分配。
j、用戶進程User Process
在客戶端,將用戶的SQL 語句傳遞給服務(wù)進程
5、一個貫穿數(shù)據(jù)庫全局的概念----系統(tǒng)改變號SCN(System Change Number)
系統(tǒng)改變號,一個由系統(tǒng)內(nèi)部維護的序列號。當系統(tǒng)需要更新的時候自動增加,他是系統(tǒng)中維持數(shù)據(jù)的一致性和順序恢復(fù)的重要標志。
a. 查詢語句不會使SCN增加,就算是同時發(fā)生的更新,數(shù)據(jù)庫內(nèi)部對應(yīng)的SCN也是不同的。這樣一來就保證了數(shù)據(jù)恢復(fù)時候的順序。
b. 維持數(shù)據(jù)的一致性,當一
二、Oracle 數(shù)據(jù)庫
Oracle數(shù)據(jù)庫的組成――物理操作系統(tǒng)文件的集合。主要包括以下幾種。
1、控制文件(參數(shù)文件init.ora記錄了控制文件的位置)
控制文件包括如下主要信息
數(shù)據(jù)庫的名字,檢查點信息,數(shù)據(jù)庫創(chuàng)建的時間戳
所有的數(shù)據(jù)文件,聯(lián)機日志文件,歸檔日志文件信息
備份信息等
有了這些信息,Oracle就知道那些文件是數(shù)據(jù)文件,現(xiàn)在的重做日志文件是哪些,這些都是系統(tǒng)啟動和運行的基本條件,所以他是Oracle運行的根本。如果沒有控制文件系統(tǒng)是不可能啟動的??刂莆募欠浅V匾模话悴捎枚鄠€鏡相復(fù)制來保護控制文件,或采用RAID來保護控制文件。控制文件的丟失,將使數(shù)據(jù)庫的恢復(fù)變的很復(fù)雜。
控制文件信息可以從V$Controlfile中查詢獲得
2、數(shù)據(jù)文件(數(shù)據(jù)文件的詳細信息記載在控制文件中)
可以通過如下方式查看數(shù)據(jù)文件
SQL select name from v$datafile;
NAME
---------------------------------------------
/u05/dbf/PROD/system_01.dbf
/u06/dbf/PROD/temp_01.dbf
/u04/dbf/PROD/users_01.dbf
/u09/dbf/PROD/rbs_01.dbf
/u06/dbf/PROD/applsys_indx_01.dbf
/u05/dbf/PROD/applsys_data_01.dbf
從以上可以看出,數(shù)據(jù)文件大致可以分為以下幾類:
i. 系統(tǒng)數(shù)據(jù)文件(system_01.dbf)
存放系統(tǒng)表和數(shù)據(jù)字典,一般不放用戶的數(shù)據(jù),但是用戶腳本,如過程,函數(shù),包等卻是保存在數(shù)據(jù)字典中的。
名詞解釋:數(shù)據(jù)字典 數(shù)據(jù)字典是一些系統(tǒng)表或視圖,他存放系統(tǒng)的信息,他包括數(shù)據(jù)庫版本,數(shù)據(jù)文件信息,表與索引等段信息,系統(tǒng)的運行狀態(tài)等各種和系統(tǒng)有關(guān)的信息和用戶腳本信息。數(shù)據(jù)庫管理員可以通過對數(shù)據(jù)字典的查詢,就可以了解到Oracle的運行狀態(tài)。
ii. 回滾段文件(rbs_01.dbf)
如果數(shù)據(jù)庫進行對數(shù)據(jù)的修改,那么就必須使用回滾段,回滾段是用來臨時存放修改前的數(shù)據(jù)(Before Image)。回滾段通常都放在一個單獨的表空間上(回滾表空間),避免表空間碎片化,這個表空間包含的數(shù)據(jù)文件就是回滾數(shù)據(jù)文件。
iii. 臨時數(shù)據(jù)文件(temp_01.dbf)
主要存放用戶的排序等臨時數(shù)據(jù),與回滾段相似,臨時段也容易引起表空間碎片化,而且沒有辦法在一個永久表空間上開辟臨時段,所以就必須有一個臨時表空間,它所包含的數(shù)據(jù)文件就是臨時數(shù)據(jù)文件,主要用于不能在內(nèi)存上進行的排序操作。我們必須為用戶指定一個臨時表空間。
iv. 用戶數(shù)據(jù)文件(/applsys_data_01.dbf ,applsys_indx_01.dbf)
存放用戶數(shù)據(jù),這里列舉了兩類常見的用戶型數(shù)據(jù),一般數(shù)據(jù)和索引數(shù)據(jù),一般來說,如果條件許可的話,可以考慮放在不同的磁盤上。
3、重做日志文件(聯(lián)機重做日志)
用戶對數(shù)據(jù)庫進行的任何操作都會記錄在重做日志文件。在了解重做日志之前必須了解重做日志的兩個概念,重做日志組和重做日志組成員(Member),一個數(shù)據(jù)庫中至少要有兩個日志組文件,一組寫完后再寫另一組,即輪流寫。每個日志組中至少有一個日志成員,一個日志組中的多個日志成員是鏡相關(guān)系,有利于日志文件的保護,因為日志文件的損壞,特別是當前聯(lián)機日志的損壞,對數(shù)據(jù)庫的影響是巨大的。
聯(lián)機日志組的交換過程叫做切換,需要特別注意的是,日志切換在一個優(yōu)化效果不好的數(shù)據(jù)庫中會引起臨時的“掛起”。掛起大致有兩種情況:
在歸檔情況下,需要歸檔的日志來不及歸檔,而聯(lián)機日志又需要被重新利用
檢查點事件還沒有完成(日志切換引起檢查點),而聯(lián)機日志需要被重新利用
解決這種問題的常用手段是:
i.增加日志組
ii.增大日志文件成員大小
通過v$log可以查看日志組,v$logfile可以查看具體的成員文件。
4、歸檔日志文件
Oracle可以運行在兩種模式之中,歸檔模式和不歸檔模式。如果不用歸檔模式,當然,你就不會有歸檔日志,但是,你的系統(tǒng)將不會是一個實用系統(tǒng),特別是不能用于生產(chǎn)系統(tǒng),因為你可能會丟失數(shù)據(jù)。但是在歸檔模式中,為了保存用戶的所有修改,在重做日志文件切換后和被覆蓋之間系統(tǒng)將他們另外保存成一組連續(xù)的文件系列,該文件系列就是歸檔日志文件。
有人或許會說,歸檔日志文件占領(lǐng)我大量的硬盤空間,其實,具體想一想,你是愿意浪費一點磁盤空間來保護你的數(shù)據(jù),還是愿意丟失你的數(shù)據(jù)呢?顯而義見,我們需要保證我們的數(shù)據(jù)的安全性。其實,歸檔并不是一直占領(lǐng)你的磁盤空間,你可以把她備份到磁帶上,或則刪除上一次完整備份前的所有日志文件。
5、初始化參數(shù)文件
initSID.ora或init.ora文件,因為版本的不一樣,其位置也可能會不一樣。在8i中,通常位于$Oracle_HOME/admin//Pfile下,初始化文件記載了許多數(shù)據(jù)庫的啟動參數(shù),如內(nèi)存,控制文件,進程數(shù)等,在數(shù)據(jù)庫啟動的時候加載(Nomount時加載),初始化文件記錄了很多重要參數(shù),對數(shù)據(jù)庫的性能影響很大,如果不是很了解,不要輕易亂改寫,否則會引起數(shù)據(jù)庫性能下降。
6、其他文件
i . 密碼文件
用于Oracle 的具有sysdba權(quán)限用戶的認證.
ii. 日志文件
報警日志文件(alert.log或alrt.ora)
記錄數(shù)據(jù)庫啟動,關(guān)閉和一些重要的出錯信息。數(shù)據(jù)庫管理員應(yīng)該經(jīng)常檢查這個文件,并對出現(xiàn)的問題作出即使的反應(yīng)。你可以通過以下SQL 找到他的路徑select value from v$PARAMETER where name ="background_dump_dest";
后臺或用戶跟蹤文件
系統(tǒng)進程或用戶進程出錯前寫入的信息,一般不可能讀懂,可以通過Oracle的TKPROF工具轉(zhuǎn)化為可以讀懂的格式。對于系統(tǒng)進程產(chǎn)生的跟蹤文件與報警日志文件的路徑一樣,用戶跟蹤文件的路徑,你可以通過以下SQL找到他的路徑select value from v$PARAMETER where name ="user_dump_dest";
三、Oracle邏輯結(jié)構(gòu)
1、 表空間(tablespace)
表空間是數(shù)據(jù)庫中的基本邏輯結(jié)構(gòu),一系列數(shù)據(jù)文件的集合。一個表空間可以包含多個數(shù)據(jù)文件,但是一個數(shù)據(jù)文件只能屬于一個表空間。
2、 段(Segment)
段是對象在數(shù)據(jù)庫中占用的空間,雖然段和數(shù)據(jù)庫對象是一一對應(yīng)的,但段是從數(shù)據(jù)庫存儲的角度來看的。一個段只能屬于一個表空間,當然一個表空間可以有多個段。
表空間和數(shù)據(jù)文件是物理存儲上的一對多的關(guān)系,表空間和段是邏輯存儲上的一對多的關(guān)系,段不直接和數(shù)據(jù)文件發(fā)生關(guān)系。一個段可以屬于多個數(shù)據(jù)文件,關(guān)于段可以指定擴展到哪個數(shù)據(jù)文件上面。
段基本可以分為以下四種
數(shù)據(jù)段(Data Segment)
索引段(Index Segment)
回滾段(Rollback Segment)
臨時段(Temporary Segment)
3、區(qū)間(Extent)
關(guān)于Extent的翻譯有多種解釋,有的譯作擴展,有的譯作盤區(qū),我這里通常譯為區(qū)間。在一個段中可以存在多個區(qū)間,區(qū)間是為數(shù)據(jù)一次性預(yù)留的一個較大的存儲空間,直到那個區(qū)間被用滿,數(shù)據(jù)庫會繼續(xù)申請一個新的預(yù)留存儲空間,即新的區(qū)間,一直到段的最大區(qū)間數(shù)(Max Extent)或沒有可用的磁盤空間可以申請。 在Oracle8i以上版本,理論上一個段可以無窮個區(qū)間,但是多個區(qū)間對Oracle卻是有性能影響的,Oracle建議把數(shù)據(jù)分布在盡量少的區(qū)間上,以減少Oracle的管理與磁頭的移動。
4、Oracle數(shù)據(jù)塊(Block)
Oracle最基本的存儲單位,他是OS數(shù)據(jù)塊的整數(shù)倍。Oracle的操作都是以塊為基本單位,一個區(qū)間可以包含多個塊(如果區(qū)間大小不是塊大小的整數(shù)倍,Oracle實際也擴展到塊的整數(shù)倍)。
5、基本表空間介紹
a. 系統(tǒng)表空間
主要存放數(shù)據(jù)字典和內(nèi)部系統(tǒng)表基表
查看數(shù)據(jù)數(shù)據(jù)字典的SQL
select * from dict
查看內(nèi)部系統(tǒng)表的SQL
select * from v$fixed_view_definition
DBA對系統(tǒng)的系統(tǒng)表中的數(shù)據(jù)字典必須有一個很深刻的了解,他們必須準備一些基礎(chǔ)的SQL語句,通過這些SQL可以立即了解系統(tǒng)的狀況和數(shù)據(jù)庫的狀態(tài),這些基本的SQL包括
系統(tǒng)的剩余空間
系統(tǒng)的SGA
狀態(tài)系統(tǒng)的等待
用戶的權(quán)限
當前的用戶鎖
緩沖區(qū)的使用狀況等
在成為DBA 的道路上我們不建議你過分的依賴于OEM/Quest 等優(yōu)秀的數(shù)據(jù)庫管理工具,因為他們不利于你對數(shù)據(jù)數(shù)據(jù)字典的理解,SQL語句可以完成幾乎全部的數(shù)據(jù)庫管理工作。
大量的讀少量的寫是該表空間的一個顯著的特點。
b. 臨時表空間.
臨時表空間顧名思義是用來存放臨時數(shù)據(jù)的,例如排序操作的臨時空間,他的空間會在下次系統(tǒng)啟動的時候全部被釋放。
c. 回滾段表空間
i. 回滾段在系統(tǒng)中的作用
當數(shù)據(jù)庫進行更新插入刪除等操作的時候,新的數(shù)據(jù)被更新到原來的數(shù)據(jù)文件,而舊的數(shù)據(jù)(Before Image)就被放到回滾段中,如果數(shù)據(jù)需要回滾,那么可以從回滾段將數(shù)據(jù)再復(fù)制到數(shù)據(jù)文件中。來完成數(shù)據(jù)的回滾。在系統(tǒng)恢復(fù)的時候, 回滾段可以用來回滾沒有被commit 的數(shù)據(jù),解決系統(tǒng)的一至性。
回滾段在什么情況下都是大量的寫,一般是少量讀,因此建議把回滾段單獨出來放在一個單獨的設(shè)備(如單獨的磁盤或RAID),以減少磁盤的IO爭用。
ii. 回滾段的工作方式
一個回滾表空間可以被劃分成多個回滾段.
一個回滾段可以保存多個會話的數(shù)據(jù).
回滾段是一個圓形的數(shù)據(jù)模型
假設(shè)回滾段由4 個區(qū)間組成,他們的使用順序就是區(qū)間1à區(qū)間2à區(qū)間3à區(qū)間4à區(qū)間1。也就是說,區(qū)間是可以循環(huán)使用的,當區(qū)間4到區(qū)間1的時候,區(qū)間1里面的會話還沒有結(jié)束, 區(qū)間4用完后就不能再用區(qū)間1,這時系統(tǒng)必須分配區(qū)間5,來繼續(xù)為其他會話服務(wù)服務(wù)。
我們分析一個Update 語句的完成
①. 用戶提交一個Update 語句
②. Server Process 檢查內(nèi)存緩沖.
如果沒有該數(shù)據(jù)塊的緩沖,則從磁盤讀入
i. 如果沒有內(nèi)存的有效空間,DBWR被啟動將未寫入磁盤的臟緩沖寫入磁盤
ii. 如果有有效空間,則讀入
③. 在緩沖內(nèi)更新數(shù)據(jù)
i. 申請一個回滾段入口,將舊數(shù)據(jù)寫如回滾段
ii. 加鎖并更新數(shù)據(jù)
iii. 并在同時將修改記錄在Redo log buffer中
個人認為應(yīng)該是“語法集”的意思。
即符合加密或驗證語法規(guī)則的全部符號空間。
如定義Public-Key-Request-Oracle為128位的二進制消息,則表示用公鑰加密的請求信息的Oracle為長度為128位符合格式要求的比特集合。
知道Oracle攻擊者才能進行有效的攻擊
以上也是我看論文總結(jié)出來的意思,可能不太準確,網(wǎng)上也沒有太好的解釋。
1、oracle,女祭司。讀音:美/?r?kl/;英/??r?kl/。
2、釋義:GRE n.神諭;預(yù)言;神諭處;圣人。
3、例句:This building is the place where the Greek oracle used to live.這座建筑是希臘女祭司曾經(jīng)居住過的地方。
Oracle是世界領(lǐng)先的信息管理軟件開發(fā)商,因其復(fù)雜的關(guān)系數(shù)據(jù)庫產(chǎn)品而聞名。Oracle數(shù)據(jù)庫產(chǎn)品為財富排行榜上的前1000家公司所采用,許多大型網(wǎng)站也選用了Oracle系統(tǒng)。Oracle的關(guān)系數(shù)據(jù)庫是世界第一個支持SQL語言的數(shù)據(jù)庫。1977年,Lawrence J.Ellison領(lǐng)著一些同事成立了Oracle公司,他們的成功強力反擊了那些說關(guān)系數(shù)據(jù)庫無法成功商業(yè)化的說法?,F(xiàn)在,Oracle公司的財產(chǎn)凈值已經(jīng)由當初的2000美元增值到了現(xiàn)在的年收入超過97億美元。