与Oracle配套组件,oracle 组件和体系结构
1、用戶相關的進程
用戶相關的進程包括用戶進程和服務器進程。
一個用戶進程只能連接到一個服務器進程
但是在某些oracle配置中,多個用戶進程可以共享同一個服務器進程。
PAG也被創(chuàng)建,每一個服務器進程有一個PGA
2、邏輯內存結構,被集中稱為oracle實例
一個oracle實例是被一個oracle的主要內存結構組成的,稱為SGA(system global area),和服務器后臺進程。
用戶訪問數據庫中的數據時,服務器進程負責和SGA內存塊通信。
一個oracle instance 包括三個組件:
1)必須的組件:
共享池:緩存最近被數據庫用戶使用的SQL語句;
數據庫緩存:最近被數據庫用戶使用的信息;
redo日志:保存恢復為目標的事務信息。
可選的內組件:
java pool:當java虛擬機被使用的時候,緩存最近被使用的java目標
large pool:換數據和大的操作,比如 恢復管理,備份和恢復活動,共享服務器組件
streams pool:緩存數據庫相關的隊列請求信息,當oracle高級隊列選項被打開的時候
SGA 最進最少使用算法管理內存。
2)背景進程
有很多個背景進程,每一個都執(zhí)行一個特殊的任務來幫助管理oracle instance。其中,5個背景進程是必須得,包括:
1、系統(tǒng)監(jiān)視進程,執(zhí)行進程的災難恢復,合并數據庫的自由空間,管理用來排序的內存空間;
2、進程監(jiān)視進程,清除失敗的數據庫用戶;
3、數據庫寫進程,從SGA的數據庫緩存區(qū)把數據庫塊寫入到磁盤上的數據庫文件中;
4、日志寫進程,從SGA中的REDO日志緩存區(qū)把恢復信息寫到磁盤上的在線redo日志文件上;
5、檢查點進程,緊跟在檢查點事件后,更新數據庫文件。
3、物理文件架構被集中稱為數據庫
數據庫主要是有駐留在主機服務器磁盤驅動器上的物理文件構成。這些文件可以被稱作,數據文件,控制文件和日志文件,另外的一些文件也和數據庫相關,
但是不屬于數據庫,比如密碼文件和數據庫文、配置文件(pfile,spfile)和歸檔redo日志文件(archived redo log files)。
一、控制文件
是數據庫的關鍵部分,他們存儲著重要的信息,這些信息其他地方并不提供。包括:
數據庫的名字;
數據文件和redo日志文件的名字、位置、和大小;
在磁盤失敗或者用戶錯誤的情況下用來恢復數據庫的信息。
控制文件當數據庫創(chuàng)建時刻,就已經按照參數的文件 control_files參數描述的位置創(chuàng)建了,因為控制文件的丟失,會負面的影響恢復數據庫的能力。
大部分數據庫產品都提供多個數據庫文件和并發(fā)把他們保存在多個位置。當需要的時候,CKPT也會動態(tài)的更新每一個數據庫的控制文件,并且保持控制文件內容一致性。
可以用下面的示例來查看控制文件的位置和名字等詳細信息:
SQL> select name from v$controlfile;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/nihao/control01.ctl
/u01/app/oracle/flash_recovery_area/nihao/control02.ctl
SQL>
二、數據文件
數據文件是實際保存被插入到數據庫數據表中的中數據的物理文件。數據文件的大小和他儲存數據的表的量直接相關。數據文件是稱為表空間的數據庫存儲區(qū)域的物理結構
表空間在數據庫中是邏輯存儲結構。表空間邏輯的組織相關的段,例如一個應收賬戶可能被一起保存在一個叫做AR_TAB的表空間中,而這些表的索引則被保存在名字叫做AR_IDX的表空間中。默認的oracle10g至少有3個表空間。
SQL> select tablespace_name
2 from dba_tablespaces;
TABLESPACE_NAME
------------------------------
SYSTEM
SYSAUX
UNDOTBS1
TEMP
USERS
EXAMPLE
HR01
7 rows selected.
SQL>
當一個用戶通過SQL操作一張表以后,用戶服務器進程把數據文件中受過影響的數據,拷貝到SGA中的數據庫二級緩存中。如果用戶執(zhí)行了提交事務命令來修改數據庫,那么數據庫寫進程(DBWn)把被修改過的數據寫入到數據文件。
三、redo日志文件
每當用戶在數據庫中執(zhí)行一個事務,在數據庫故障時需要的重現這些事物的信息,會被自動記錄在重做日志緩沖區(qū)。重做日志緩存區(qū)的內容最后被LGWR背景進程寫入到redo日志文件。
因為在oracle恢復機制中,扮演者重要的角色,redo日志被重復拷貝多份或者記錄在好幾個地方。這也就意味著,每一個重做日志都有好幾個拷貝,以防止系統(tǒng)損壞或者硬件故障造成他們之中的一個或者幾個的損壞。每個組內的復用文件被稱為重做日志組的成員。oracle自動寫入每一個redo日志文件以保持他們之間的同步。每一個redo日志組必須有多個成員。每個重做日志組必須由一個或多個成員。每個數據庫必須至少有兩個重做日志組,因為重做日志是在一個循環(huán)的方式使用。
日志讀寫進程在下面幾種事件發(fā)生時候記錄日志:
每隔三秒;
一個用戶提交事務;
redo日志緩存已用三分之一;
redo日志緩存容納1M的游泳redo信息;
前一個數據庫檢查點發(fā)生時DBWn進程。對檢查站的更多信息,請參見第10章。(未完待續(xù))
當用戶執(zhí)行對數據庫的DML活動,本次事務的恢復信息被用戶的服務器進程寫入到重做日志緩沖區(qū)中。LGWR進程最終寫入此恢復信息到活動的日志組,直到該重做日志寫滿。一旦當前日志填寫交易信息寫滿,LGWR將切換到下一個重做日志,直到該日志組填寫滿事務信息,并依此類推,直至所有可用的重做日志使用完。當最后一個重做日志被使用完時,LGWR開始循環(huán)并開始使用的第一個重做日志組。這樣最早的redo日志文件就被覆蓋了。因此不能在提供恢復的信息。一個可以考慮的解決辦法是歸檔redo日志。
如果系統(tǒng)處于歸檔日志模式,那么將要被重寫的日志在被LGWR進程重寫之前,它的內容會被后臺的歸檔進程復制到另外一個位置,也就是歸檔文件所在的位置。這些舊的redo日志實體的拷貝文件叫做歸檔日志
ps:1、大部分數據庫產品都運行在歸檔模式下,因為一旦數據庫由于在硬件故障和造成的毀壞需要重做所有的事務。
2、如果LGWR必須寫入redo日志組,但是ARCn要試圖拷貝redo日志,但是ARCn的目標位置磁盤滿了,數據庫會掛起直到磁盤驅動器上的空間足夠。
已經全部寫完了。所以,大家可以參考了。
總結
以上是生活随笔為你收集整理的与Oracle配套组件,oracle 组件和体系结构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: verilog找不到模块_工欲善其事,必
- 下一篇: c语言课本第八章答案,c语言第八章字符串