oracle 用戶管理

1. 用戶進程java

Ps elf | greporacleocl |grepv grepsql

wKioL1kBuvWQMunRAAA3kCTRqlM179.png-wh_50 

2. 數據庫進程數據庫

Ps elf |greporacleorcl緩存

wKiom1kBuxTQ-3euAAEpI2cJoPs611.png-wh_50 

3. 守護進程服務器

Ps elf |grep ohasession

wKioL1kBuy_Ca3MgAAAVU-Q93kc640.png-wh_50 

大池: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>

wKiom1kBu4Hyg3L9AABX5AtNq4g762.png-wh_50 

LGWR:日誌寫入進程只有一個

wKioL1kBu7bTyLR2AAAXSqeQs2Y597.png-wh_50 

當用戶commit(提交事務)時觸發lgwr進程

red log buffer空間的三分之一空間被使用完時會觸發lgwr進程

把髒數據寫入磁盤以前,該LGWR進程將日誌信息先寫入到日誌文件中,每隔3秒中執行這樣的動做。

LGWR進程不能有多個,由於日誌是順序是寫入的,不能作並行寫入,不然沒法作數據恢復。

CKPT進程:檢查全部數據文件和控制文件的頭部是否一致,是確保在數據緩衝區中全部修改過的數據塊都被寫入到數據文件中的一種機制,就是確保數據完整性的一種機制。但檢查點完成後,CKPT進程負責更新數據文件和控制文件的頭部信息,並保存檢查點信息,以保證數據庫日誌文件和數據文件的同步。其原理是在數據庫恢復時,只需找到CKPT保存的最後一次檢查點,就能夠根據它肯定在日誌文件中恢復數據的起始位置,從新執行以後的日誌信息便可。

SMON進程:若是數據文件和控制文件頭部不一致,就會觸發SMON進程。在實例啓動時SMON進程會檢查全部數據文件的同步信息與控制文件中記錄的檢查點信息是否一致,不一致就啓動實例恢復操做。其實CKPT進程是給SMON進程使用的。

PMON進程:進程監控進程,PMON進程管理用戶會話,這個進程會在某個會話出現問題時執行的適當的操做。例如用戶的我的計算機在登陸到數據庫時從新啓動,PMON就能可以檢測到這個問題,並且還會整理用戶正在進行的任何操做。


1.1. oracle存儲結構

數據文件相關知識

想查看系統中有多少個數據文件咱們能夠經過動態數據字典或靜態數據字典來查看:經過靜態數據字典查看數據文件

 wKiom1kBvECzgXEhAACyCluDSZI004.png-wh_50

經過動態數據字典來查看數據文件

 

wKioL1kBvF3wg4vnAACpsw4Q6JE053.png-wh_50

 

直接查看數據文件的內容是看不到的,必須經過一個邏輯的結構即表空間來查看數據文件的內容。表空間是一個邏輯存儲結構,而數據文件是一個物理的結構。

如何查看錶空間

wKiom1kBvHqD-hLWAACoGGSWKzE975.png-wh_50 

也能夠經過dba_tablespaces查看錶空間

wKioL1kBvLjScUsBAACuyMcPiBM079.png-wh_50 

數據字典是一個邏輯的存儲結構,而數據文件是一個真實的存儲結構,若是有了表空間,而沒有數據文件是不能夠,表空間和數據文件是相對應的,若是沒有數據文件,表空間不可能獨立存在,若是隻有表空間沒有數據文件也是不行的,就比如若是電腦沒有硬盤,你不能再邏輯上看到CD盤,在這裏硬盤就至關因而數據文件,而C盤就至關因而表空間。咱們能夠把多個數據文件組成一個表空間,而後在表空間裏面存儲數據,表空間和數據文件是對應的,一個表空間能夠是由一個或多個數據文件組成的,可是一個數據文件只能在一個表空間當中,咱們如何查看錶空間和數據文件之間的對應關係呢?

wKiom1kBvNHgPJ8MAACXJoBskx8115.png-wh_50 

也能夠查看錶空間的大小

wKiom1kBvPDxXttlAACb3KDP5RM321.png-wh_50 

也能夠在上述的表空間中建立新的數據文件。若是表空間不夠用了,只需建立相應的數據文件便可。表空間大小就是組成數據文件的大小的總和,最終數據文件存放在硬盤裏的,可是咱們能夠把數據文件存放在不一樣的硬盤裏面,只要在一個表空間便可,這樣就解決了硬盤大小對文件的限制,能夠將多個硬盤中的數據文件組成一個表空間。

因此在表空間中DBA會存放不少的表,視圖,索引,同義詞等對象。

段:例如在xx表空間DBA建立了一個名爲test的表,這張表表空間所佔用的空間,咱們稱之爲段。根據段中存儲的對象的不一樣分爲了數據段,索引段,回退段,臨時段等

能夠查看段的信息

wKiom1kBvTThQg6ZAADEk1zeUFY988.png-wh_50 

對於段又有個更小的單位,稱之爲「區」

區(extent):區是磁盤空間分配的最小單位,磁盤按區劃分,每次至少分配一個區,區由連續的數據塊組成,段主要由一個或多個區構成,當段建立時,它至少包含一個區,當段中全部空間已經使用完成時,系統自動爲該段分配一個新區,區不能跨數據文件存在,只能存在於一個數據文件中。

段是由區組成的,段必須是區的整數倍,假如一張表是25MB,一個區大小是4MB,那麼段的大小是28MB,若是在表裏添加了3MB的數據,此時段的空間還能容納表,如今表的大小是28MB,若是又添加了1MB,此時29MB,那麼段的空間是32MB.

wKiom1kBvVDAosBsAAC0zgzgK7A956.png-wh_50 

查看EXAMPLE表空間的區和段的分佈狀況

wKiom1kBvWiTnlNcAAD8GOcduXM227.png-wh_50 

oracle數據庫中最小的存儲單位是塊(block--8KBoracle數據庫中的數據存儲於數據塊中。數據塊是oracle服務器所能讀取或寫入的最小存儲單元,oracle服務器以數據塊爲單位管理數據文件的存儲空間,數據塊的取值範圍爲2-64KB,其默認大小與oracle版本有關。

wKiom1kBvYWxn0DLAADL9Pat-LA467.png-wh_50 

查看操做系統的最小存儲單元

[root@orclsrv ~]# tune2fs -l /dev/sda1

經過OEM也能夠查看這些信wKioL1kBvZryqy9CAAEPx8vWER8182.png-wh_50

 

建立表空間和數據文件

SQL> create tablespace xx datafile '/u01/xx.dbf' size 100m autoextend on

2  next 5m maxsize 200m;

 

表空間已建立。

wKioL1kBvenTDpS8AABvHDU827A708.png-wh_50 

修改表空間的名字爲yy

wKiom1kBvf6yz8-aAAAL__AikeY772.png-wh_50 

wKiom1kBvhXSFIf2AABqzUsk88E678.png-wh_50 

爲了好管理,咱們但願表空間的名字和數據文件的名字一致。

解決辦法:

1. 使用操做系統命令將數據文件拷貝一份

2. 把表空間offline

3. 而後對數據文件重命名

wKioL1kBvjGArsjcAAAHOxDW_Fs605.png-wh_50wKioL1kBvkmTQhZrAAAPbwz_lxI358.png-wh_50 

將表空間offline

wKiom1kBvmDzbBQ_AAAOqjyCnX8631.png-wh_50 

wKiom1kBvn-DhkQJAABfXwnBklQ752.png-wh_50 

對數據文件重命名

wKioL1kBvp_y9wagAAAOsf1lwCA850.png-wh_50 

查看修改狀況

wKiom1kBvraSp1UpAABpabhQeuc228.png-wh_50 

將表空間online

wKioL1kBvtHxYEWQAAAkGRdru_k555.png-wh_50 

提示須要恢復/u01/yy.dbf

wKiom1kBvuywGYpwAAAO6TCy-6k997.png-wh_50 

將表空間online

wKiom1kBv4mQyjlyAAANsV4965o089.png-wh_50 

wKiom1kBv6LSAQLnAABdgFFWHlk951.png-wh_50 

如何擴展表空間大小

1. 直接改變數據文件大小

wKioL1kBv7iSL3AIAAAOFDaR1EA137.png-wh_50 

wKiom1kBv8mAenoJAABorXGMMjA164.png-wh_50 

2. 給表空間增長數據文件

若是表空間所在的分區的空間不夠用了

wKiom1kBv-WwEA3NAAAPxvT9HGs437.png-wh_50 

wKioL1kBv_3xmup2AAAOLqneuK4080.png-wh_50 

wKioL1kBwBjyfGyZAABtZjfNSM0398.png-wh_50 

刪除表空間

wKioL1kBwDSydI-wAAAQ1zkDXSg899.png-wh_50 

建立臨時表空間

wKioL1kBwFjwjUdOAABiUw5IenA783.png-wh_50 

wKioL1kBwHHCm_R4AAA0VF8QhN4261.png-wh_50 

建立臨時表空間

wKiom1kBwIeDQA0UAAAVOGwgtvg549.png-wh_50 

wKiom1kBwJqyihQqAABDI3gywQo433.png-wh_50 

刪除臨時表空間與刪除表空間的命令是同樣的。

wKioL1kBwLHxyymIAAAQyg5E1OM570.png-wh_50 

1.2. oracle 用戶管理

若是想查看oracle系統中存在用戶能夠查看dba_users視圖

wKioL1kBwMfwsj5iAABxcnqljVk235.png-wh_50 

若是使用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身份驗證的有效數據庫用戶,咱們能夠配置應用程序要求每一個須要進行訪問的個體都具備不一樣的數據庫帳戶,也能夠配置應用程序自身做爲公共用戶鏈接數據庫並在內部處理應用程序級別的權限。不管選用哪一種方法,在數據庫內部都須要建立一個或多個容許操做數據的用戶。

1.3. 用戶與模式(schema

建立用戶的語法:

Create user用戶名 identified by 密碼 default tablespace表空間 quota 大小 on 表空間;

注意:在建立用戶的時候雖然用戶名寫的時小寫的,可是存儲到數據字典的時候倒是大寫的,好比create user tom.若是非要使用小寫的話,用戶名須要使用雙引號括起來 create user tom

建立的用戶沒有任何權限,連登錄數據庫的權限都沒有。

若是沒有設置用戶對某個表空間的配額,那麼即便這個用戶對該表空間有寫權限,也是沒法寫入的。

舉例說明:

查看HR用戶的狀態

wKiom1kBwQnT1vTeAAAWYdWy6AY619.png-wh_50 

修改HR用戶的密碼爲oracle

wKiom1kBwRzS2uOZAAAf5iEwRjg161.png-wh_50 

手工設置過時;

wKiom1kBwTigKdYPAAAiCFBFlG0140.png-wh_50 

解鎖用戶

wKioL1kBwVbSNSaRAAAcdayoa1o157.png-wh_50 

舉例說明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

wKioL1kBwYDQfuh4AABkprvjMhE617.png-wh_50 

雖然建立的時是小寫tom,但存儲到數據字典中的是大寫,因此查詢時也須要寫大寫

wKiom1kBwZbzx3vUAABcI01mvJY188.png-wh_50 

刪除tom用戶

Drop user tom;

create user"tom" identified by oracle;

wKiom1kBwayysI5IAABbgviXZdQ826.png-wh_50 

刪除tom用戶

wKioL1kBwcKyqtcoAABfKQhbENg365.png-wh_50 

正確的刪除方式應該是:

drop user"tom";

建立用戶tom,默認的表空間是XXX,並無指定配額,因此tom用戶也沒法在xxx表空間上建立對象

wKioL1kBwdyxScfiAAApbEryfZk341.png-wh_50 

使用tom用戶鏈接數據庫的結果

wKiom1kBwfSgIEUmAAApubc9W9I979.png-wh_50 

SQL>conn sys/oracle as sysdba

Drop user tom; 刪除tom用戶

建立tom用戶的同時指定默認的表空間是xxxtom用戶的磁盤配額是10m

可使用dba_ts_quotas視圖查看每一個用戶的磁盤配額

wKiom1kBwkGzzXHgAAA_tC8uuKo488.png-wh_50 

wKioL1kBwl2D1a4HAABe24hdPpU289.png-wh_50 

剛纔咱們測試建立的tom用戶連建立會話的權限都

wKioL1kBwnuxcb4KAAApubc9W9I242.png-wh_50 

1.4. 爲用戶授予權限34

tom用戶授予session權限

SQL>conn sys/oracle as sysdba

SQL> grant create session to tom;

 

受權成功。

測試一下鏈接

wKiom1kBwuLgOBt-AAALJJZeuzg508.png-wh_50 

測試tom用戶是否可以建立表

wKioL1kBwvyTAVaLAAAZPZQawbM355.png-wh_50 

tom用戶授予建立表的權限

wKiom1kBwySh9BqFAAAYblOEvgA133.png-wh_50 

建立aa

wKioL1kBwzqS-NmOAAAMH6OecOw392.png-wh_50 

測試tom用戶可否爲表插入記錄,能夠插入記錄了。

wKioL1kBw1izIJ8AAAAYbtrpurE716.png-wh_50 

1.5. 撤銷權限

查看tom用戶當前擁有的權限

wKiom1kBw3eBaWCBAAAuJCta_64399.png-wh_50 

撤銷tom用戶的create table 權限

wKiom1kBw4_A4-qJAAAfg5ljICQ079.png-wh_50 

測試tom用戶可以查看SCOTT用戶下的emp

wKioL1kBw73zItxjAAAhddnqNCw112.png-wh_50 

使用sys用戶鏈接數據庫

wKiom1kBw9KQ9lBjAAALYQ90ZS4659.png-wh_50 

tom用戶受權select scott用戶下的emp表的權限

wKioL1kBw-iTGPcGAAANcQCk_zQ166.png-wh_50 

使用tom用戶鏈接數據庫

wKioL1kBxAWjS9xLAAAzW73lMSc553.png-wh_50

相關文章
相關標籤/搜索