標籤:oracle 體繫結構 使用者管理
資料庫體繫結構
定義:
資料庫的組成,工作過程,資料庫中的資料的組成與管理機制。
組成:
執行個體、使用者進程、伺服器處理序、資料庫檔案、
其他檔案(參數檔案、口令檔案、歸檔檔案)。
oracle的概念:
程式全域區(PGA):
定義:
伺服器處理序使用的一塊包含資料和控制資訊的記憶體地區,
PGA是非共用的記憶體,在伺服器處理序啟動或建立時分配的
(在系統運行時,排序,串連等操作也需要對PGA分配)。
用命令查看:
SQL> show parameter area_size
oracle執行個體:
後台進程和記憶體結構的集合。
系統全域區(SGA):
定義:
執行個體啟動時,oracle為執行個體分配的一個記憶體塊, 這個記憶體塊稱為SGA。
是一個龐大的記憶體空間,會分配一個SGA,
系統全域區並啟動一些oracle的後台進程(守護進程)。
組成:
共用池:
緩衝一些"程式"資料的地方。
資料緩衝區:
資料在寫到磁碟之前或從磁碟讀取資料之後,
這些資料存放區在塊緩衝區快取中。
日誌緩衝區:
資料需寫到線上重做日誌中,在寫到磁碟之前
要在重做緩衝區中臨時緩衝這些資料。提高訪問速度。
JAVA池:
資料中運行java代碼會用到。
大池:
用於大塊記憶體配置。共用池不處理。
查看:
SQL> select pool,sum(bytes)bytes from v$sgastat group by pool;
oracle中記憶體=SGA+PGA
一個執行個體中只能有一個SGA,所有的伺服器處理序和後台進程都共用一個SGA。
資料庫:
資料的集合,
物理上指儲存資料庫資訊的一組作業系統檔案。
物理結構:
構成資料庫的一組作業系統檔案(3種檔案):
資料檔案,控制檔案,重做記錄檔。
邏輯結構:
資料庫資料的邏輯儲存結構(資料表空間,段)和模式對象(表,視圖等)。
SQL語句的執行過程:
1、編譯,文法、語義檢查。
2、共用池:
library cache:
緩衝正確的SQL語句。
data dictionary cache(資料字典緩衝):
緩衝許可權和對象資料及屬性。
防止共用池不夠用,採用先進先出的規則:
後執行的sql語句會覆蓋先執行的SQL語句。
3、data buffer cache :
從磁碟或儲存中將資料區塊調入記憶體,緩衝在buffer cache中。
4、redo log buffer(重做日誌緩衝區):
執行增刪改查操作之後,變化後的資料先寫入重做日誌緩衝區,
變化之前的資料放入重做日誌緩衝中。
最後再將變化後的資料寫入資料緩衝區。
保證在資料恢複時,事務需要提交還是撤回。
查看:
SQL> show parameter shared_pool_size;
//顯示0表示自動化管理。
SQL> select name,bytes/1024/1024||‘MB‘ from v$sgainfo;
// 查看共用池的大小。
SQL> set timing on
//啟動時間。
SQL> select * from scott.emp;
//查詢scott.emp表。
SQL> show parameter db_cache_size;
//查詢緩衝區的大小。
oracle進程:
使用者進程:
資料庫使用者請求串連伺服器啟動。
伺服器處理序:
使用者建立會話並串連執行個體時啟動。
後台進程:
啟動執行個體時啟動。
後台進程(5個進程):
DBWn進程:
資料寫入進程(DBWR)
將buffer cache中的髒資料寫入到硬碟中資料檔案中。
髒資料:
修改過的資料存放在記憶體緩衝區中,事務沒有提交,
修改過還沒有寫入硬碟資料檔案的資料。
SQL> col description for a40;
SQL> select paddr,name,description from v$bgprocess where name like ‘DBW%‘;
進程監控進程(PMON):
系統管理使用者會話,會在某個會話出現問題時執行適當的操作。
系統監控進程(SMON):
執行個體啟動時SMON進程會檢查所有資料檔案的同步資訊與控制檔案中
記錄的檢查點資訊是否一致,不一致就啟動執行個體恢複操作。
CKPT進程是給SMON進程使用的。
日誌寫入進程(LGWR):
只有一個。
使用者提交事務時觸發lgwr進程。
red log buffer空間的三分之一空間被使用完時會觸發lgwr進程。
髒資料寫入磁碟之前,該LGWR進程將日誌資訊先寫入到記錄檔中,
每隔3秒中執行這樣的操作。
LGWR進程不能有多個,日誌順序是串列寫入,不能做並行寫入,
否則無法做資料恢複。
$ ps -elf | grep ora_ |grep lgwr
//查看LGWR進程。
SQL> select paddr,name,description from v$bgprocess where name like ‘LG%‘;
檢查點進程(CKPT):
檢查所有資料檔案和控制檔案的頭部是否一致,時確保資料完整性的機制。
CKPT進程負責更新資料檔案和控制檔案的頭部資訊,並儲存檢查點資訊,
保證資料庫記錄檔和資料檔案的同步。
原理:
在資料庫恢複時,只需找到CKPT儲存的最後一次檢查點,
可根據它確定在記錄檔中恢複資料的起始位置,
重新執行之後的日誌資訊即可。
SQL> select paddr,name,description from v$bgprocess;
//查詢所有後台進程。
SQL> select * from v$bgprocess where paddr< >‘00‘;
//檢索paddr是00的進程。
SQL> select * from v$bgprocess where paddr=‘00‘;
oracle的儲存結構
物理結構:
主要檔案:
資料檔案:
實體儲存體資料庫資料的檔案.dbf。
特點:
每一個資料檔案只與一個資料庫相聯絡。
一個資料表空間可包含一個或多個資料檔案。
一個資料庫檔案只屬於一個資料表空間。
重做記錄檔:
副檔名是.log,記錄了對資料的所有更改資訊,
並提供了一種資料恢複機制,
確保在系統崩潰和其他意外出現後重新恢複資料庫。
控制檔案:
副檔名.ctl, 是一個二進位檔案,
包括資料檔案和重做記錄檔的名稱和位置。
是資料庫啟動及運行所必須的檔案。
其他檔案:
參數檔案,歸檔記錄檔,密碼檔案。
邏輯結構:
包括資料表空間,段,區,塊和模式等。
資料表空間:
永久資料表空間,暫存資料表空間,撤銷資料表空間。
系統資料表空間:
SYSTEM,SYSAUX,USERS和TEMP。
oracle使用者管理
SYS :
oracle中的超級使用者,資料庫中所有資料字典和視圖都儲存在SYS模式中,
SYS使用者只能以SYSOPER或SYSDBA角色登入系統。
SYSTEM:
oracle中預設的資料庫管理員,擁有DBA的許可權。
SCOTT :
oracle資料庫的一個示範使用者,在資料庫安裝時建立。
要訪問資料庫:必須通過oracle身分識別驗證(2種方法):
配置應用程式要求每個需要進行訪問的個體都具有不同的資料庫賬戶。
配置應用程式自身作為公用使用者串連資料庫並在內部處理應用程式層級的許可權。
注意:
在資料庫內部必須建立一個或多個允許操作資料的使用者。
SQL> select * from dba_users;
//查看資料庫裡面所有使用者。有dba許可權的帳號才可以。
SQL> select * from all_users;
//查看你能管理的所有使用者。
SQL> select * from user_users;
//查看目前使用者資訊。
本文出自 “安然一笑” 部落格,請務必保留此出處http://liyuanjie.blog.51cto.com/12877605/1963955
Oracle體繫結構和使用者管理