1. 程式人生 > 資料庫 >Oracle入門(1)-Oracle 11g體系結構

Oracle入門(1)-Oracle 11g體系結構

一、邏輯儲存結構

    1、資料塊是邏輯儲存結構中的最小邏輯單位,一般預設是8K(相當於MySQL的頁),檢視資料塊大小:
select name,value from v$parameter where name='db_block_size';

2、資料區(Extent)是Oracle儲存分配的最小單位,也是資料增長的基本單位。一個數據區包含多個數據塊。

3、 段(Segmemt)是由一個或多個數據區構成,它不是儲存空間的分配單位,而是一個獨立的邏輯儲存結構,用於儲存表、索引或簇等佔用空間的資料物件,Oracle也把這種佔用空間的資料物件統一稱為段。   3.1、當建立一個表時,系統自動建立一個以該表名字命名的資料段
。   3.2、建立索引時,系統自動建立一個以該索引名字命名的索引段。   3.3、考慮調整sort_area_size(預設64K)來增大排序區,從而使排序操作儘量在記憶體中完成。這屬於臨時段      

二、物理儲存結構

1、資料檔案

  檢視資料檔案資訊
set linesize 32767;  
col file_name for a50;
col tablespace_name for a100;
select file_name,tablespace_name from dba_data_files;  #或者v$datafile

2、控制檔案

  Oracle例項啟動過程:訪問初始化引數檔案SPFILE  => 為系統全域性區(SGA)分配記憶體   =>   從控制檔案中讀出所有資料檔案和日誌檔案資訊   =>   開啟當前資料庫中所有的資料檔案和日誌檔案供使用者訪問。   檢視控制檔案位置:
set linesize 32767;  
col name for a50;
select name from v$controlfile;

  系統自動建立兩個或三個控制檔案,每個控制檔案記錄相同,如果某個控制檔案損壞,Oracle會自動使用另外一個控制檔案,如果所有控制檔案都損壞Oracle則無法工作。

3、日誌檔案

  3.1、重做日誌

  日誌  =>  SGA的重做日誌快取區  =>  事務提交或日誌緩衝區超1/3或超3秒  =>  Redo log(由LGWR程序負責)

  3.2、歸檔日誌

  非歸檔模式下,事務日誌直接覆蓋輪詢,歸檔模式下,事務日誌被覆蓋前先由歸檔(ARCH)程序把日誌檔案讀出,然後寫入歸檔日誌檔案。   預設情況下,Oracle系統不採用歸檔模式執行。   檢視是否歸檔模式:
set linesize 32767;  
col name for a50;
col value for a50;
select dbid,name,log_mode from v$database;

  如果在歸檔模式下,通過下面語句確定歸檔日誌檔案所在路徑:

set linesize 32767;  
col name for a50;
col value for a50;
show parameter log_archive_dest;

4、伺服器引數檔案

  伺服器引數檔案SPFILE(Server Parameter File)是二進位制檔案,由Oracle自動維護,如果要修改則通過alter system命令來修改,引數修改後會自動寫到SPFILE。
set linesize 32767;  
col name for a50;
col value for a50;
select name,value,ismodified from v$parameter;

  修改引數:例如修改shared_pool_size的大小為30M:

set linesize 32767;  
col name for a50;
col value for a50;
select name,ismodified from v$parameter where name='sort_area_size';
alter system set shared_pool_size=30m;

  如果報:“ORA-02095: specified initialization parameter cannot be modified”說明不能直接修改,需要加上scope=spfile然後重啟oracle:

alter system set sort_area_size=16777216 scope=spfile;

  檢視日誌位置:

--查警告日誌
select name,ismodified from v$parameter where name = 'background_dump_dest'; 
--檢視跟蹤檔案
select name,ismodified from v$parameter where name='user_dump_dest'; 

  跟蹤檔案檔案命名格式:<sid>_<processname>_<spid>.trc,如orcl_cjq0_5172.trc

   

三、Oracle 11g伺服器結構

  

1、修改共享池的記憶體為30M

alter system set shared_pool_size=30m;

2、大型池(Large pool)

  以下情況需使用大型池來減輕共享池的訪問壓力:       (1)使用恢復管理器進行備份和恢復操作時,大型池將作為I/O緩衝區使用。     (2)使用I/O Slave模擬非同步I/O功能時,大型池將被作為I/O緩衝區使用。     (3)執行具有大量排序操作的SQL語句。     (4)當使用並行查詢時,大型池作為並行查詢程序彼此交換資訊的地方。   修改大型池快取區大小為16MB(預設0):
set linesize 32767;  
col name for a50;
col value for a50;
select name,ismodified from v$parameter where name='large_pool_size';
alter system set large_pool_size=16m;

3、後臺程序

  3.1、資料寫入程序(DBWR)

    在以下幾種情況,DBWR程序會將“髒”資料塊寫入資料檔案:            (1)緩衝區無空間,又有新資料寫入       (2)檢查點啟動       (3)髒資料在緩衝區超3秒

  3.2、檢查點程序(CKPT)

    當發生日誌切換時就會啟動檢查點程序。

  3.3、日誌寫入程序(LGWR)

     事務提交 或 日誌緩衝區超1/3 或 超3秒,即把日誌緩衝區日誌寫入日誌檔案。    

四、資料字典

Oracle11g常用資料字典

Oracle資料字典的名稱由字首和字尾組成,使用_連線,含義說明如下:

  dba_:包含資料庫例項的所有物件資訊

  v$_:當前例項的動態檢視,包含系統管理和系統優化等所使用的檢視

    user_:記錄使用者的物件資訊

  gv_:分散式環境下所有例項的動態檢視,包括系統管理和系統優化使用的檢視

  all_:記錄使用者的物件資訊機被授權訪問的物件資訊  

 

基本資料字典

  描述邏輯儲存結構和物理儲存結構的資料表,還包括描述其他資料物件資訊的表:

資料字典名稱  說明 
dba_tablespaces 關於表空間的資訊
dba_ts_quotas 所有使用者表空間限額
dba_free_space 所有表空間中的自由分割槽
dba_segments   描述資料庫中所有段的儲存空間
dba_extents 資料庫中所有分割槽的資訊
dba_tables 資料庫中所有資料表的描述
dba_tab_columns 所有表、檢視以及簇的列
dba_views 資料庫中所有檢視的資訊
dba_synonyms 關於同義詞的資訊
dba_sequences 所有使用者序列資訊
dba_constraints 所有使用者表的約束資訊
dba_indexs 資料表中所有索引的描述
dba_ind_columns 所有表及簇上壓縮索引的列
dba_triggers 所有使用者的觸發器資訊
dba_source 所有使用者儲存過程資訊
dba_data_files 查詢關於資料庫檔案的資訊
dba_tab_grants/privs 查詢關於物件授權的資訊
dba_objects 資料庫所有物件
dba_users 關於資料庫中所有使用者的資訊

 

常用動態效能檢視

  提供了關於記憶體和磁碟的執行情況,使用者只能進行只讀而不能修改它們

資料字典名稱   說明
v$database 描述關於資料庫的相關資訊
v$datafile 資料庫使用的資料檔案資訊
v$log 從控制檔案中提取有關重做日誌組的資訊
v$logfile 有關例項重置日誌組檔名及其位置的資訊
v$archived_log 記錄歸檔日誌檔案的基本資訊
v$archived_dest 記錄歸檔日誌檔案的路徑資訊
v$controlfile 描述控制檔案的相關資訊
v$instance 記錄例項的基本資訊
v$system_parameter 顯示例項當前有效的引數資訊
v$sga 顯示例項的SGA區大小
v$sgastat 統計SGA使用情況的資訊
v$parameter   記錄初始化引數檔案中所有項的值
v$lock 通過訪問資料庫會話,設定物件鎖的所有資訊
v$session 有個會話的資訊
v$sql 記錄SQL語句的詳細資訊
v$sqltext 記錄SQL語句的語句資訊
v$bgprocess 顯示後臺程序資訊
v$process 當前程序的資訊