oracle軟體結構:oracle 「例項」
在啟動oracle資料庫伺服器時,實際上是在伺服器的記憶體中建立乙個oracle例項,然後由這個例項來訪問和控制硬碟中的資料庫檔案
oracle資料庫伺服器主要由兩個部分組成-----資料庫和例項:
資料庫:oracle用於儲存資料的一系列物理結構和邏輯結構
例項:作業系統中的記憶體結構和一系列程序所組成。
啟動資料庫時首先需要在記憶體中建立它的乙個例項,然後由例項載入並開啟資料庫。當使用者連線資料庫時,實際上是連到例項中,然後由例項負責與資料庫通訊,再將處理結果返回給使用者。
* 例項的組成:
例項的記憶體結構:分為sga區與pga區兩大部分
例項的程序結構:包括服務程序與後台程序等
* sga區的記憶體結構:例項的主要組成之一
資料庫快取 資料檔案中的資料塊複製到快取快中
重做日誌快取 快取重做記錄
共享池 快取sql或pl/sql語句、資料字典
資料字典快取
大型池 資料庫備份或恢復操作
* pga區:不屬於例項的記憶體結構
pga的內容與結構和資料庫的操作模式有關。在專用伺服器模式下和共享伺服器模式下,pga有著不同的結構和記憶體。一般情況下,pga區都由私有sql工作區和會話記憶體區組成。
游標(cursors):命名的資料庫連線資源
* 資料庫後台程序:
dbwr(資料庫寫程序):
資料庫寫程序負責將資料庫快取中的髒快取快成批寫入到資料庫檔案中。
將髒快取快寫入資料檔案的情況
lgwr(日誌寫程序): 乙個迴圈結構
lgwr程序將快取資料寫入重做日誌檔案情況:
使用者通過committee語句提交當前事務
重做日誌快取被寫滿三分之一
dbwr程序開始將髒快取快寫入資料檔案之前
@ 資料庫模式物件
模式的概念:
模式是一系列邏輯資料結構或物件的集合,乙個模式只能夠被乙個資料庫使用者所擁有,並且模式的名稱與這個使用者的名稱相同。
* 表:
資料庫儲存null值的方式與字段的位置有關。如果null值欄位位於非null值欄位中間,將需要使用1位元組的空間來儲存null值字段的長度;如果null值欄位位於一條記錄的末尾,將不需要任何儲存空間來儲存null值。因此,在定義表的時候,應當將可能包含null值的字段放在字段列表的末尾,這樣可以節省儲存空間。
rowid:oracle中的一種資料型別,用於在oracle內部儲存表中每條記錄的實體地址。在oracle內部,是通過使用rowid來定位所需記錄的。在塊中儲存記錄時,oracle也會將記錄的rowid儲存在記錄頭中。
* 檢視:檢視的定義語句儲存在資料字典檢視中
檢視是從乙個或多個表或檢視中提取出來的資料的一種表現方式。或者可以認為檢視就是乙個查詢語句的結果,只不過是以類似表的形式儲存在資料庫中。
檢視與基礎表不同,它是乙個「虛」表,也就是說檢視實際上並不是像表一樣將其中的資料儲存在資料庫中,在資料庫中只儲存檢視的定義。在查詢檢視時,資料庫通過檢視的定義從相關的基礎表中獲取資料並返回給使用者。
* 索引:
關於sga
sga (system global area)是oracle instance的 基本組成部分,在例項啟動時分配。是一組包含乙個oracle例項的資料和控制資訊的共享記憶體結構。主要是用於儲存資料庫資訊的記憶體區,該資訊為資料庫程序所共享(pga不能共享的)。它包含oracle 伺服器的資料和控制資訊,它是在oracle伺服器所駐留的計算機的實際記憶體中得以分配,如果實際記憶體不夠再往虛擬記憶體中寫。
sga幾個很重要的特性:
1、sga的構成——資料和控制資訊,我們下面會詳細介紹;
2、sga是共享的,即當有多個使用者同時登入了這個例項,sga中的資訊可以被它們同時訪問(當涉及到互斥的問題時,由latch和enquence控制);
3、乙個sga只服務於乙個例項,也就是說,當一台機器上有多個例項執行時,每個例項都有乙個自己的sga儘管sga來自於os的共享記憶體區,但例項之間不能相互訪問對方的sga區。
它主要包括:
1.資料庫快取記憶體(the database buffer cache),
2.重演日誌快取(the redo log buffer)
3.共享池(the shared pool)
4.資料字典快取(the data dictionary cache)以及其它各方面的資訊。
1.資料高速緩衝區(data buffer cache)
在資料高速緩衝區中存放著oracle系統最近使用過的資料塊(即使用者的高速緩衝區),當把資料寫入資料庫時,它以資料塊為單位進行讀寫,當資料高速緩衝區填滿時,則系統自動去掉一些不常被用訪問的資料。如果使用者要查的資料不在資料高速緩衝區時,oracle自動從磁碟中去讀取。資料高速緩衝區包括三個型別的區:1) 髒的區(dirty buffers):包含有已經改變過並需要寫回資料檔案的資料塊。
2) 自由區(free buffers):沒有包含任何資料並可以再寫入的區,oracle可以從資料檔案讀資料塊該區。
3) 保留區(pinned buffers):此區包含有正在處理的或者明確保留用作將來用的區。
2.redo log buffer cache快取對於資料塊的所有修改。
主要用於恢復其中的每一項修改記錄都被稱為redo 條目。利用redo條目的資訊可以重做修改。
3. shared pool用於快取最近被執行的sql語句和最近被使用的資料定義。
它主要由兩個記憶體結構構成:library cache和data dictionary cache
修改共享池的大小:alter system set shared_pool_size = 64m;
libray cache快取最近被執行的sql和pl/sql的相關資訊。實現常用語句的共享,使用lru演算法進行管理,由以下兩個結構構成:shared sql area、shared pl/sql area、data dictionary cache、data dictionary cache快取最近被使用的資料庫定義。它包括關於資料庫檔案、表、索引、列、使用者、許可權以及其它資料庫物件的資訊。在語法分析階段,server process訪問資料字典中的資訊以解析物件名和對訪問操作進行驗證。資料字典資訊快取在記憶體中有助於縮短響應時間。
4.資料字典快取(the data dictionary cache)
它包括的資訊有:資料庫檔案,表,索引,列,使用者,許可權和其他資料物件,在解析間段,伺服器程序檢視資料字典來決定物件名稱和有效的訪問的資訊,快取資料字典資訊來提高請求反應時間,大小是由共享池的大小來決定的。
文章分類:資料庫
概述:pga區是使用者程序連線到資料庫並建立對應的會話時,由oracle為伺服器程序分配的專用於當前使用者會話的記憶體
區。這個區時非共享的,不可寫的,只有伺服器程序本身才能訪問。當會話終止時,oracle會自動釋放pga區所
佔的記憶體。
pga區可以分為如下幾個部分
1.排序區
1)用於存放排序操作所存放的臨時資料,它是影響pga大小的主要因素。大小由sort_area_size指定。
sort_area_retained_size的值決定了排序操作結束後排序區保留的大小。
2)排序過程:假如要排序的資料在排序區中放不下,oracle就將資料分割成較小的塊放到排序去中,然後對
每一小塊進行排序。排序過程中產生的臨時資料將先放到臨時表空間的臨時段中。當每個小塊都排序玩之後,
再將這些排完序的小塊合併在一起,產生最終的結果。
2.會話區
儲存會話所具有的許可權,角色,效能統計資訊。
3.游標狀態區
使用到游標時,oracle會在共享池中為語句分配上下文區,游標實際上是指向該上下文區的指標。通過設定
open_cursors,可以限制使用者能夠同時開啟的游標數目。
游標狀態區儲存了會話中當前使用的各個游標所處的狀態。
4.堆疊區
儲存會話區中的繫結變數,會話變數,及sql語句執行時的記憶體結構等資訊。
對專用伺服器模式來說,「排序區」和「私有sql區」在pga中,對共享伺服器模式來說,在sga區。
oracle軟體遷移
遷移目標 因為許可權原因需要替換oracle軟體目錄 許可權不對的話可能會影響psu公升級等操作 遷移環境 11.2.0.3 11.2.0.3 如果版本有不同應該選擇其他遷移方式,比如upgrade,資料幫浦,dg等等。只有小版本不同可以這樣替換 遷移思路 替換軟體目錄只需要替換db home。安裝...
軟體的結構
軟體就是程式 文件 資料的乙個集合。軟體的型別,主要分為系統軟體 如作業系統 工具軟體 如瀏覽器 應用軟體等 1.1 軟體的組成 前端 客戶端 給使用者提供了乙個視覺化的互動介面,分為前台 使用者端 和後台 管理員端 後端 服務端 由程式 資料庫 伺服器軟體 伺服器軟體的作用 提供埠號用於訪問程式 ...
Oracle邏輯結構
oracle的邏輯結構包括表空間 tablespace 段 segment 資料塊 data block 以及模式物件 schema 一 表空間 1.什麼是表空間?查詢表空間的檔案資訊 select from dba data files。查詢表空間的空閒空間資訊 select from dba f...