1. 用戶進程java
Ps –elf | greporacleocl |grep–v grepsql
2. 數據庫進程數據庫
Ps –elf |greporacleorcl緩存
3. 守護進程服務器
Ps –elf |grep ohasession
大池:在SGA中,大池是一個可選的緩衝區域,管理員能夠根據須要對其進行配置,在大規模輸入輸出及備份過程當中須要大池做爲緩存空間,例如,大數據操做、數據庫備份與恢復之類的操做。oracle
Java池:Java池是一個可選的緩衝區,可是在安裝java或者java程序時必須設置Java池,它用於編譯Java語言編寫指令。異步
六大核心進程:ide
DBWn進程:用來將buffer cache中的髒數據寫入到硬盤中數據文件中。測試
什麼是髒數據,例如我執行以下語句
SQL> update emp set sal=sal+100;
此時修改過的數據存放在內存中,並無保存到硬盤上的數據文件中,這些數據緩存在buffer cache中,該事務尚未提交(commit),這樣修改過尚未寫入硬盤數據文件的數據咱們稱之爲髒數據。其實此時在打開一個會話,使用SCOTT用戶鏈接查看emp表中數據是未修改過的數據。因此在oracle中這樣的操做是異步寫入,多個進程能夠同時寫入,多個帳戶就會有多個DBWn進程,其實進程名叫DMW,後面的n是產生的進程標識
SQL> update scott.emp set sal=sal+100;
已更新14行。
SQL>
LGWR:日誌寫入進程只有一個
當用戶commit(提交事務)時觸發lgwr進程
當red log buffer空間的三分之一空間被使用完時會觸發lgwr進程
把髒數據寫入磁盤以前,該LGWR進程將日誌信息先寫入到日誌文件中,每隔3秒中執行這樣的動做。
LGWR進程不能有多個,由於日誌是順序是寫入的,不能作並行寫入,不然沒法作數據恢復。
CKPT進程:檢查全部數據文件和控制文件的頭部是否一致,是確保在數據緩衝區中全部修改過的數據塊都被寫入到數據文件中的一種機制,就是確保數據完整性的一種機制。但檢查點完成後,CKPT進程負責更新數據文件和控制文件的頭部信息,並保存檢查點信息,以保證數據庫日誌文件和數據文件的同步。其原理是在數據庫恢復時,只需找到CKPT保存的最後一次檢查點,就能夠根據它肯定在日誌文件中恢復數據的起始位置,從新執行以後的日誌信息便可。
SMON進程:若是數據文件和控制文件頭部不一致,就會觸發SMON進程。在實例啓動時SMON進程會檢查全部數據文件的同步信息與控制文件中記錄的檢查點信息是否一致,不一致就啓動實例恢復操做。其實CKPT進程是給SMON進程使用的。
PMON進程:進程監控進程,PMON進程管理用戶會話,這個進程會在某個會話出現問題時執行的適當的操做。例如用戶的我的計算機在登陸到數據庫時從新啓動,PMON就能可以檢測到這個問題,並且還會整理用戶正在進行的任何操做。
數據文件相關知識
想查看系統中有多少個數據文件咱們能夠經過動態數據字典或靜態數據字典來查看:經過靜態數據字典查看數據文件
經過動態數據字典來查看數據文件
直接查看數據文件的內容是看不到的,必須經過一個邏輯的結構即表空間來查看數據文件的內容。表空間是一個邏輯存儲結構,而數據文件是一個物理的結構。
如何查看錶空間
也能夠經過dba_tablespaces查看錶空間
數據字典是一個邏輯的存儲結構,而數據文件是一個真實的存儲結構,若是有了表空間,而沒有數據文件是不能夠,表空間和數據文件是相對應的,若是沒有數據文件,表空間不可能獨立存在,若是隻有表空間沒有數據文件也是不行的,就比如若是電腦沒有硬盤,你不能再邏輯上看到C盤D盤,在這裏硬盤就至關因而數據文件,而C盤就至關因而表空間。咱們能夠把多個數據文件組成一個表空間,而後在表空間裏面存儲數據,表空間和數據文件是對應的,一個表空間能夠是由一個或多個數據文件組成的,可是一個數據文件只能在一個表空間當中,咱們如何查看錶空間和數據文件之間的對應關係呢?
也能夠查看錶空間的大小
也能夠在上述的表空間中建立新的數據文件。若是表空間不夠用了,只需建立相應的數據文件便可。表空間大小就是組成數據文件的大小的總和,最終數據文件存放在硬盤裏的,可是咱們能夠把數據文件存放在不一樣的硬盤裏面,只要在一個表空間便可,這樣就解決了硬盤大小對文件的限制,能夠將多個硬盤中的數據文件組成一個表空間。
因此在表空間中DBA會存放不少的表,視圖,索引,同義詞等對象。
段:例如在xx表空間DBA建立了一個名爲test的表,這張表表空間所佔用的空間,咱們稱之爲段。根據段中存儲的對象的不一樣分爲了數據段,索引段,回退段,臨時段等
能夠查看段的信息
對於段又有個更小的單位,稱之爲「區」
區(extent):區是磁盤空間分配的最小單位,磁盤按區劃分,每次至少分配一個區,區由連續的數據塊組成,段主要由一個或多個區構成,當段建立時,它至少包含一個區,當段中全部空間已經使用完成時,系統自動爲該段分配一個新區,區不能跨數據文件存在,只能存在於一個數據文件中。
段是由區組成的,段必須是區的整數倍,假如一張表是25MB,一個區大小是4MB,那麼段的大小是28MB,若是在表裏添加了3MB的數據,此時段的空間還能容納表,如今表的大小是28MB,若是又添加了1MB,此時29MB,那麼段的空間是32MB.
查看EXAMPLE表空間的區和段的分佈狀況
在oracle數據庫中最小的存儲單位是塊(block)--8KB,oracle數據庫中的數據存儲於數據塊中。數據塊是oracle服務器所能讀取或寫入的最小存儲單元,oracle服務器以數據塊爲單位管理數據文件的存儲空間,數據塊的取值範圍爲2-64KB,其默認大小與oracle版本有關。
查看操做系統的最小存儲單元
[root@orclsrv ~]# tune2fs -l /dev/sda1
建立表空間和數據文件
SQL> create tablespace xx datafile '/u01/xx.dbf' size 100m autoextend on
2 next 5m maxsize 200m;
表空間已建立。
修改表空間的名字爲yy
爲了好管理,咱們但願表空間的名字和數據文件的名字一致。
解決辦法:
1. 使用操做系統命令將數據文件拷貝一份
2. 把表空間offline
3. 而後對數據文件重命名
將表空間offline
對數據文件重命名
查看修改狀況
將表空間online
提示須要恢復/u01/yy.dbf
將表空間online
如何擴展表空間大小
1. 直接改變數據文件大小
2. 給表空間增長數據文件
若是表空間所在的分區的空間不夠用了
刪除表空間
建立臨時表空間
建立臨時表空間
刪除臨時表空間與刪除表空間的命令是同樣的。
若是想查看oracle系統中存在用戶能夠查看dba_users視圖
若是使用sqlplus查詢須要提早格式化
SQL> col username for a20
SQL> col account_status for a20
SQL> col default_tablespace for a20
SQL> set linesize 120
SQL> set pagesize 120
SQL> select username,account_status,default_tablespace from dba_users;
USERNAME ACCOUNT_STATUS DEFAULT_TABLESPACE
-------------------- -------------------- --------------------
MGMT_VIEW OPEN SYSTEM
SYSOPENSYSTEM
SYSTEM OPENSYSTEM
DBSNMP OPENSYSAUX
SYSMAN OPENSYSAUX
SCOTTOPENUSERS
OUTLN EXPIRED & LOCKED SYSTEM
FLOWS_FILES EXPIRED & LOCKED SYSAUX
MDSYS EXPIRED & LOCKED SYSAUX
ORDSYS EXPIRED & LOCKED SYSAUX
EXFSYS EXPIRED & LOCKED SYSAUX
Oracle 用戶管理---
要想訪問數據庫,任何人都必須成爲可以經過oracle身份驗證的有效數據庫用戶,咱們能夠配置應用程序要求每一個須要進行訪問的個體都具備不一樣的數據庫帳戶,也能夠配置應用程序自身做爲公共用戶鏈接數據庫並在內部處理應用程序級別的權限。不管選用哪一種方法,在數據庫內部都須要建立一個或多個容許操做數據的用戶。
建立用戶的語法:
Create user用戶名 identified by 密碼 default tablespace表空間 quota 大小 on 表空間;
注意:在建立用戶的時候雖然用戶名寫的時小寫的,可是存儲到數據字典的時候倒是大寫的,好比create user tom.若是非要使用小寫的話,用戶名須要使用雙引號括起來 create user 「tom」
建立的用戶沒有任何權限,連登錄數據庫的權限都沒有。
若是沒有設置用戶對某個表空間的配額,那麼即便這個用戶對該表空間有寫權限,也是沒法寫入的。
舉例說明:
查看HR用戶的狀態
修改HR用戶的密碼爲oracle
手工設置過時;
解鎖用戶
舉例說明oracle的授予權限和撤銷權限
在建立用戶以前,建立一個表空間xxx
建立一個表空間xxx
createtablespace xxx datafile '/u01/xxx.dbf' size 100m autoextend on next 10m maxsize unlimited;
建立用戶tom
create user tom identified by oracle;
查詢建立的用戶tom
雖然建立的時是小寫tom,但存儲到數據字典中的是大寫,因此查詢時也須要寫大寫
刪除tom用戶
Drop user tom;
create user"tom" identified by oracle;
刪除tom用戶
正確的刪除方式應該是:
drop user"tom";
建立用戶tom,默認的表空間是」XXX」,並無指定配額,因此tom用戶也沒法在xxx表空間上建立對象
使用tom用戶鏈接數據庫的結果
SQL>conn sys/oracle as sysdba
Drop user tom; 刪除tom用戶
建立tom用戶的同時指定默認的表空間是xxx,tom用戶的磁盤配額是10m
可使用dba_ts_quotas視圖查看每一個用戶的磁盤配額
剛纔咱們測試建立的tom用戶連建立會話的權限都
爲tom用戶授予session權限
SQL>conn sys/oracle as sysdba
SQL> grant create session to tom;
受權成功。
測試一下鏈接
測試tom用戶是否可以建立表
爲tom用戶授予建立表的權限
建立aa表
測試tom用戶可否爲表插入記錄,能夠插入記錄了。
查看tom用戶當前擁有的權限
撤銷tom用戶的create table 權限
測試tom用戶可以查看SCOTT用戶下的emp表
使用sys用戶鏈接數據庫
爲tom用戶受權select scott用戶下的emp表的權限
使用tom用戶鏈接數據庫