ORACLE体系结构

发布 2021-05-02 13:53:28 阅读 1454

1、 oracle 實例――包括記憶體結構與後臺進程。

2、 oracle 資料庫――物理作業系統檔的集合。

3、 瞭解記憶體結構的組成。

4、 瞭解後臺進程的作用。

5、 瞭解資料庫的物理檔。

6、 解釋各種邏輯結構。

1、oracle 實例。

system global area(sga) 和 background process 稱為資料庫的實例。

2、oracle 資料庫。

一系列物理檔的集合(資料檔案,控制檔,連線日誌,參數檔等)

select * from v$datafile / v$logfile / v$controlfile / v$parameter;

與實例有關的文件

參數文件(parameter file) sid,數據庫主要文件位置,sga等通常是init.ora

跟蹤文件(trace file)

警告文件(alert file)

構成數據庫的文件。

數據文件(data file ) 存放數據的地方,至少有一個數據文件。

臨時文件(temp file)

控制文件(control file) 標識物理文件和數據庫結構的二進制文件

重做日誌文件(redo log file) 事務日誌,用于恢復數據庫, 最少兩組。

密碼文件(password file)

專用服務器共享服務器。

3、系統全域共用區system global area(sga)

system global area 是一塊巨大的共用記憶體區域,他被看做是oracle 資料庫的一個大緩衝集區,這裡的資料可以被oracle的各個進程共用。其大小可以通過如下語句查看:

更詳細的資訊可以參考v$sgastat、v$buffer_pool

4、後臺進程(background process)

後臺進程是oracle的程式,用來管理資料庫的讀寫,恢復和監視等工作。server process主要是通過他和user process進行聯繫和溝通,並由他和user process進行資料的交換。

oracle系統有5 個基本進程他們是。

dbwr(資料檔案寫入進程)

lgwr(日誌檔寫入進程)

smon(系統監護進程)

pmon(使用者進程監護進程)

ckpt(檢查點進程,同步資料檔案, 日誌檔,控制檔)

4.1、dbwr (資料檔案寫入進程)

將修改過的資料緩衝區的資料寫入對應資料檔案。

維護系統內的空緩衝區。

這裡指出幾個容易錯誤的概念:

當一個更新提交後,dbwr把資料寫到磁片並返回給使用者提交完成。

dbwr會觸發ckpt 後臺進程。

dbwr不會觸發lgwr 進程。

上面的概念都是錯誤的。

dbwr是一個很底層的工作進程,他批量的把緩衝區的資料寫入磁片。和任何前臺使用者的進程幾乎沒有什麼關係,也不受他們的控制。

dbwr工作的主要條件如下:

dbwr 超時。

系統中沒有多的空緩衝區用來存放資料。

ckpt 進程觸發dbwr 等。

4.2、lgwr (日誌檔寫入進程)

將重做日誌緩衝區的資料寫入重做日誌檔,lgwr是一個必須和前臺使用者進程通信的進程。當資料被修改的時候,系統會產生一個重做日誌並記錄在重做日誌緩衝區內。這個重做日誌可以類似的認為是以下的一個結構:

scn=000000001000

資料塊id對象id=0801

數據行=02

修改後的資料=0011

提交的時候,lgwr必須將被修改的資料的重做日誌緩衝區內資料寫入日誌資料檔案,然後再通知前臺進程提交成功,並由前臺進程通知使用者。從這點可以看出lgwr承擔了維護系統資料完整性的任務。

lgwr 工作的主要條件如下。

用戶提交。有1/3 重做日誌緩衝區未被寫入磁片。

有大於1m 重做日誌緩衝區未被寫入磁片。

超時。dbwr需要寫入的資料的scn號大於lgwr 記錄的scn號,dbwr 觸發lgwr寫入。

4.3、smon (系統監護進程)

工作主要包含。

清除臨時空間。

在系統啟動時,完成系統實例恢復。

聚結空閒空間。

從不可用的檔中恢復事務的活動。

ops中失敗節點的實例恢復。

清除obj$表。

縮減回滾段。

使回滾段離線。

4.4、pmon (使用者進程監護進程)

主要用於清除失效的使用者進程,釋放使用者進程所用的資源。如pmon將回滾未提交的工作,釋放鎖,釋放分配給失敗進程的sga資源。

4.5、ckpt (檢查點進程,同步資料檔案, 日誌檔,控制檔)

同步資料檔案,日誌檔和控制檔,由於dbwr/lgwr的工作原理,造成了資料檔案,日誌檔,控制檔的不一至,這就需要ckpt進程來同步。ckpt會更新資料檔案/控制檔的頭資訊。

ckpt工作的主要條件如下。

在日誌切換的時候。

資料庫用immediate ,transaction , normal 選項shutdown 資料庫的時候。

根據初始話檔log_checkpoint_interval、log_checkpoint_timeout、fast_start_io_target 的設置的數值來確定。

用戶觸發。以下進程的啟動需要手工配置。

4.6、arch

當資料庫以歸檔方式運行的時候,oracle會啟動arch進程,當重做日誌檔被寫滿時,日誌檔進行切換,舊的重做日誌檔就被arch進程複製到一個/多個特定的目錄/遠端機器。這些被複製的重做日誌檔被叫做歸檔日誌檔。

4.7、reco

負責解決分佈事務中的故障。oracle可以連接遠端的多個資料庫,當由於網路問題,有些事物處於懸而未決的狀態。reco進程試圖建立與遠端伺服器的通信,當故障消除後,reco進程自動解決所有懸而未決的會話。

二、oracle 資料庫。

oracle資料庫的組成――物理作業系統檔的集合。主要包括以下幾種。

1、控制文件(參數文件記錄了控制檔的位置)

控制檔包括如下主要資訊。

資料庫的名字,檢查點資訊,資料庫創建的時間戳記。

所有的資料檔案,連線日誌檔,歸檔日誌檔資訊。

備份信息等

有了這些資訊,oracle就知道那些檔是資料檔案,現在的重做日誌檔是哪些,這些都是系統啟動和運行的基本條件,所以他是oracle運行的根本。如果沒有控制檔案系統是不可能啟動的。控制檔是非常重要的,一般採用多個鏡相複製來保護控制檔,或採用raid來保護控制檔。

控制檔的丟失,將使資料庫的恢復變的很複雜。

控制檔資訊可以從v$controlfile中查詢獲得。

2、資料檔案(資料檔案的詳細資訊記載在控制檔中)

可以通過如下方式查看資料檔案。

sql> select name from v$datafile;

3、重做日誌檔(連線重做日誌)

使用者對資料庫進行的任何操作都會記錄在重做日誌檔。在瞭解重做日誌之前必須瞭解重做日誌的兩個概念,重做日誌組和重做日誌組成員(member),一個資料庫中至少要有兩個日誌組檔,一組寫完後再寫另一組,即輪流寫。每個日誌組中至少有一個日誌成員,一個日誌組中的多個日誌成員是鏡相關係,有利於日誌檔的保護,因為日誌檔的損壞,特別是當前連線日誌的損壞,對資料庫的影響是巨大的。

連線日誌組的交換過程叫做切換,需要特別注意的是,日誌切換在一個優化效果不好的資料庫中會引起臨時的“掛起”。掛起大致有兩種情況:

在歸檔情況下,需要歸檔的日誌來不及歸檔,而連線日誌又需要被重新利用。

檢查點事件還沒有完成(日誌切換引起檢查點),而連線日誌需要被重新利用。

解決這種問題的常用手段是:

i.增加日誌組。

ii.增大日誌檔成員大小。

通過v$log可以查看日誌組,v$logfile可以查看具體的成員檔。

4、歸檔日誌檔。

oracle可以運行在兩種模式之中,歸檔模式和不歸檔模式。如果不用歸檔模式,當然,你就不會有歸檔日誌,但是,你的系統將不會是一個實用系統,特別是不能用於生產系統,因為你可能會丟失資料。但是在歸檔模式中,為了保存使用者的所有修改,在重做日誌檔切換後和被覆蓋之間系統將他們另外保存成一組連續的檔系列,該檔系列就是歸檔日誌檔。

有人或許會說,歸檔日誌檔佔領我大量的硬碟空間,其實,具體想一想,你是願意浪費一點磁碟空間來保護你的資料,還是願意丟失你的資料呢?顯而義見,我們需要保證我們的資料的安全性。其實,歸檔並不是一直佔領你的磁碟空間,你可以把她備份到磁帶上,或則刪除上一次完整備份前的所有日誌檔。

5、初始化參數文件。

或檔,因為版本的不一樣,其位置也可能會不一樣。在8i中,通常位於$oracle_home/admin//pfile下,初始設定檔案記載了許多資料庫的啟動參數,如記憶體,控制檔,進程數等,在資料庫啟動的時候載入(nomount時載入),初始設定檔案記錄了很多重要參數,對資料庫的性能影響很大,如果不是很瞭解,不要輕易亂改寫,否則會引起資料庫性能下降。

6、其他文件。

i . 密碼檔。

用於oracle 的具有sysdba許可權用戶的認證。

ii. 日誌檔。

報警日誌檔(或。

記錄資料庫啟動,關閉和一些重要的出錯資訊。資料庫管理員應該經常檢查這個檔,並對出現的問題作出即使的反應。你可以通過以下sql 找到他的路徑select value from v$parameter where name ="background_dump_dest";

後臺或用戶跟蹤檔。

系統進程或使用者進程出錯前寫入的資訊,一般不可能讀懂,可以通過oracle的tkprof工具轉化為可以讀懂的格式。對於系統進程產生的跟蹤檔與報警日誌檔的路徑一樣,使用者跟蹤檔的路徑,你可以通過以下sql找到他的路徑select value from v$parameter where name ="user_dump_dest";

Oracle体系结构

课后测试。单选题。1.哪个不是数据库的物理组件 a表空间 b物理文件 c控制文件 d日志文件 正确答案 a 2.最小的数据库逻辑结构是什么?a操作系统块 b数据库块 c表空间 d表 e区 正确答案 b 3.在数据库启动的mount阶段,可以进行什么操作 a查询用户scott下的表 b建立表空间 c创...

Oracle体系结构

簇 cluster 经常被频繁引用的表可以在物理位置上被存储在一起,簇就是用来管理这种集中存储的。集中存储可以减少i o次数,以达到性能的改善和提高。散列簇 hash cluster 簇的另一种形式,这种簇中的数据要通过散列函数计算得出物理位置,它可以极大程度的提高等值查询的效率。视图 view 可...

oracle体系结构

meta data 描述 说明 数据的数据。ctl 文件描述了 记录了 dbf 文件和log文件的位置,大小,一致性,checkpoint等信息。参数文件 oracle instance启动时,实例的参数由参数文件决定。d oracle product 10.2.0 db 1 dbs 密码文件 d ...