一、 ORACLE 實例 —— 包括內存結構與后臺進程
內存結構:
1、系統全局區:System Global Area(SGA) 是一塊巨大的共享內存區域,他被看做是Oracle 數據庫的一個大緩沖池,這里的數據可以被ORACLE的各個進程共用。其大小可以通過如下語句查看: select * from v$sga;
a、 共享池(Shared pool)
包括SQL語句緩沖(Library Cache)和數據字典緩沖區(Data Dictionary Cache)
b、塊緩沖區高速緩存(Database Buffer Cache)
c、重做日志緩沖區(Redo log buffer)
d、Java程序緩沖區(Java Pool)
Java 的程序區,Oracle 8I 以后,Oracle 在內核中加入了對Java的支持。該程序緩沖區就是為Java 程序保留的。如果不用Java程序沒有必要改變該緩沖區的默認大小。
e、大池(Large Pool)
大池的得名不是因為大,而是因為它用來分配大塊的內存,處理比共享池更大的內存,在8.0開始引入。
2、后臺進程(Background process)
a、Oracle系統5個基本進程和其他進程
DBWR(數據文件寫入進程)
LGWR(日志文件寫入進程)
SMON(系統監護進程)
PMON(用戶進程監護進程)
CKPT(檢查點進程,同步數據文件, 日志文件,控制文件)
(1)DBWR(數據文件寫入進程):負責將更改的數據從數據庫緩沖區高速緩存寫入數據文件
(2)LGWR(日志文件寫入進程):將重做日志緩沖區中的更改寫入在線重做日志文件
(3)SMON(系統監護進程):檢查數據庫的一致性如有必要還會在數據庫打開時啟動數據庫的恢復
(4)PMON(用戶進程監護進程):負責在一個Oracle 進程失敗時清理資源
(5)CKPT(檢查點進程,同步數據文件, 日志文件,控制文件):
負 責在每當緩沖區高速緩存中的更改永久地記錄在數據庫中時,更新控制文件和數據文件中的數據庫狀態信息。該進程在檢查點出現時,對全部數據文件的標題進行修 改,指示該檢查點。在通常的情況下,該任務由LGWR執行。然而,如果檢查點明顯地降低系統性能時,可使CKPT進程運行,將原來由LGWR進程執行的檢 查點的工作分離出來,
由CKPT進程實現。對于許多應用情況,CKPT進程是不必要的。只有當數據庫有許多數據文件,LGWR在檢查點時明顯地降 低性能才使CKPT運行。CKPT進程不將塊寫入磁盤,該工作是由DBWR完成的。 init.ora文件中 CHECKPOINT_PROCESS 參數控制CKPT進程的使能或使不能。缺省時為FALSE,即為使不能。
(6)歸檔進程:在每次日志切換時把已滿的日志組進行備份或歸檔
(7)服務進程:用戶進程服務。
(8)用戶進程:在客戶端,負責將用戶的SQL語句傳遞給服務進程,并從服務器段拿回查詢數據。
二、ORACLE 數據庫的組成——物理操作系統文件的集合。
主要包括以下幾種。
1、控制文件(參數文件init.ora記錄了控制文件的位置)
2、數據文件(數據文件的詳細信息記載在控制文件中)
可以通過如下方式查看數據文件
select name from v$datafile;
i. 系統數據文件(system_01.dbf)
ii. 回滾段文件(rbs_01.dbf)
iii. 臨時數據文件(temp_01.dbf)
iv. 用戶數據文件(/applsys_data_01.dbf ,applsys_indx_01.dbf)
3、重做日志文件(聯機重做日志)
i. 增加日志組
ii. 增大日志文件成員大小
通過v$log可以查看日志組,v$logfile可以查看具體的成員文件。
(1)查看數據文件: SQL> select * from v$datafile;
(2)查看控制文件: SQL> select * from v$controlfile;
(3)查看日志文件: SQL> select * from v$logfile;
4、歸檔日志文件
5、初始化參數文件
6、其他文件
i . 密碼文件
用于Oracle 的具有sysdba權限用戶的認證.
ii. 日志文件
報警日志文件(alert.log或alrt.ora)
后臺或用戶跟蹤文件
三、ORACLE 邏輯結構
1、 表空間(tablespace)
表空間是數據庫中的基本邏輯結構,一系列數據文件的集合。一個表空間可以包含多個數據文件,但是一個數據文件只能屬于一個表空間。
2、 段(Segment)
段是對象在數據庫中占用的空間,雖然段和數據庫對象是一一對應的,但段是從數據庫存儲的角度來看的。一個段只能屬于一個表空間,當然一個表空間可以有多個段。
表空間和數據文件是物理存儲上的一對多的關系,表空間和段是邏輯存儲上的一對多的關系,段不直接和數據文件發生關系。一個段可以屬于多個數據文件,關于段可以指定擴展到哪個數據文件上面。
段基本可以分為以下四種
數據段(Data Segment)
索引段(Index Segment)
回滾段(Rollback Segment)
臨時段(Temporary Segment)
3、區間(Extent)
關于Extent的翻譯有多種解釋,有的譯作擴展,有的譯作盤區,我這里通常譯為區間。在一個段中可以存在多個區間,區間是為數據一次性預留的一個較大的存儲空間,直到那個區間被用滿,數據庫會繼續申請一個新的預留存儲空間,即新的區間,一直到段的最大區間數(Max Extent)或沒有可用的磁盤空間可以申請。 在ORACLE8i以上版本,理論上一個段可以無窮個區間,但是多個區間對ORACLE卻是有性能影響的,ORACLE建議把數據分布在盡量少的區間上,以減少ORACLE的管理與磁頭的移動。
4、Oracle數據塊(Block)
ORACLE最基本的存儲單位,他是OS數據塊的整數倍。ORACLE的操作都是以塊為基本單位,一個區間可以包含多個塊(如果區間大小不是塊大小的整數倍,ORACLE實際也擴展到塊的整數倍)。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

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