1. 程式人生 > >Oracle體系結構和用戶管理

Oracle體系結構和用戶管理

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體系結構和用戶管理