Oracle入門(1)-Oracle 11g體系結構
阿新 • • 發佈:2020-02-22
一、邏輯儲存結構
1、資料塊是邏輯儲存結構中的最小邏輯單位,一般預設是8K(相當於MySQL的頁),檢視資料塊大小:
select name,value from v$parameter where name='db_block_size';
2、資料區(Extent)是Oracle儲存分配的最小單位,也是資料增長的基本單位。一個數據區包含多個數據塊。
3、 段(Segmemt)是由一個或多個數據區構成,它不是儲存空間的分配單位,而是一個獨立的邏輯儲存結構,用於儲存表、索引或簇等佔用空間的資料物件,Oracle也把這種佔用空間的資料物件統一稱為段。 3.1、當建立一個表時,系統自動建立一個以該表名字命名的資料段二、物理儲存結構
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 | 當前程序的資訊 |