一、 ORACLE 實例 —— 包括內(nèi)存結(jié)構(gòu)與后臺進程
內(nèi)存結(jié)構(gòu):
1、系統(tǒng)全局區(qū):System Global Area(SGA) 是一塊巨大的共享內(nèi)存區(qū)域,他被看做是Oracle 數(shù)據(jù)庫的一個大緩沖池,這里的數(shù)據(jù)可以被ORACLE的各個進程共用。其大小可以通過如下語句查看: select * from v$sga;
a、 共享池(Shared pool)
包括SQL語句緩沖(Library Cache)和數(shù)據(jù)字典緩沖區(qū)(Data Dictionary Cache)
b、塊緩沖區(qū)高速緩存(Database Buffer Cache)
c、重做日志緩沖區(qū)(Redo log buffer)
d、Java程序緩沖區(qū)(Java Pool)
Java 的程序區(qū),Oracle 8I 以后,Oracle 在內(nèi)核中加入了對Java的支持。該程序緩沖區(qū)就是為Java 程序保留的。如果不用Java程序沒有必要改變該緩沖區(qū)的默認(rèn)大小。
e、大池(Large Pool)
大池的得名不是因為大,而是因為它用來分配大塊的內(nèi)存,處理比共享池更大的內(nèi)存,在8.0開始引入。
2、后臺進程(Background process)
a、Oracle系統(tǒng)5個基本進程和其他進程
DBWR(數(shù)據(jù)文件寫入進程)
LGWR(日志文件寫入進程)
SMON(系統(tǒng)監(jiān)護進程)
PMON(用戶進程監(jiān)護進程)
CKPT(檢查點進程,同步數(shù)據(jù)文件, 日志文件,控制文件)
(1)DBWR(數(shù)據(jù)文件寫入進程):負(fù)責(zé)將更改的數(shù)據(jù)從數(shù)據(jù)庫緩沖區(qū)高速緩存寫入數(shù)據(jù)文件
(2)LGWR(日志文件寫入進程):將重做日志緩沖區(qū)中的更改寫入在線重做日志文件
(3)SMON(系統(tǒng)監(jiān)護進程):檢查數(shù)據(jù)庫的一致性如有必要還會在數(shù)據(jù)庫打開時啟動數(shù)據(jù)庫的恢復(fù)
(4)PMON(用戶進程監(jiān)護進程):負(fù)責(zé)在一個Oracle 進程失敗時清理資源
(5)CKPT(檢查點進程,同步數(shù)據(jù)文件, 日志文件,控制文件):
負(fù) 責(zé)在每當(dāng)緩沖區(qū)高速緩存中的更改永久地記錄在數(shù)據(jù)庫中時,更新控制文件和數(shù)據(jù)文件中的數(shù)據(jù)庫狀態(tài)信息。該進程在檢查點出現(xiàn)時,對全部數(shù)據(jù)文件的標(biāo)題進行修 改,指示該檢查點。在通常的情況下,該任務(wù)由LGWR執(zhí)行。然而,如果檢查點明顯地降低系統(tǒng)性能時,可使CKPT進程運行,將原來由LGWR進程執(zhí)行的檢 查點的工作分離出來,
由CKPT進程實現(xiàn)。對于許多應(yīng)用情況,CKPT進程是不必要的。只有當(dāng)數(shù)據(jù)庫有許多數(shù)據(jù)文件,LGWR在檢查點時明顯地降 低性能才使CKPT運行。CKPT進程不將塊寫入磁盤,該工作是由DBWR完成的。 init.ora文件中 CHECKPOINT_PROCESS 參數(shù)控制CKPT進程的使能或使不能。缺省時為FALSE,即為使不能。
(6)歸檔進程:在每次日志切換時把已滿的日志組進行備份或歸檔
(7)服務(wù)進程:用戶進程服務(wù)。
(8)用戶進程:在客戶端,負(fù)責(zé)將用戶的SQL語句傳遞給服務(wù)進程,并從服務(wù)器段拿回查詢數(shù)據(jù)。
二、ORACLE 數(shù)據(jù)庫的組成——物理操作系統(tǒng)文件的集合。
主要包括以下幾種。
1、控制文件(參數(shù)文件init.ora記錄了控制文件的位置)
2、數(shù)據(jù)文件(數(shù)據(jù)文件的詳細(xì)信息記載在控制文件中)
可以通過如下方式查看數(shù)據(jù)文件
select name from v$datafile;
i. 系統(tǒng)數(shù)據(jù)文件(system_01.dbf)
ii. 回滾段文件(rbs_01.dbf)
iii. 臨時數(shù)據(jù)文件(temp_01.dbf)
iv. 用戶數(shù)據(jù)文件(/applsys_data_01.dbf ,applsys_indx_01.dbf)
3、重做日志文件(聯(lián)機重做日志)
i. 增加日志組
ii. 增大日志文件成員大小
通過v$log可以查看日志組,v$logfile可以查看具體的成員文件。
(1)查看數(shù)據(jù)文件: SQL> select * from v$datafile;
(2)查看控制文件: SQL> select * from v$controlfile;
(3)查看日志文件: SQL> select * from v$logfile;
4、歸檔日志文件
5、初始化參數(shù)文件
6、其他文件
i . 密碼文件
用于Oracle 的具有sysdba權(quán)限用戶的認(rèn)證.
ii. 日志文件
報警日志文件(alert.log或alrt.ora)
后臺或用戶跟蹤文件
三、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ù)庫存儲的角度來看的。一個段只能屬于一個表空間,當(dāng)然一個表空間可以有多個段。
表空間和數(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ù)倍)。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
