您好,登錄后才能下訂單哦!
1. 用戶進程
Ps –elf | greporacleocl |grep–v grep
2. 數據庫進程
Ps –elf |greporacleorcl
3. 守護進程
Ps –elf |grep oha
大池:在SGA中,大池是一個可選的緩沖區域,管理員可以根據需要對其進行配置,在大規模輸入輸出及備份過程中需要大池作為緩存空間,例如,大數據操作、數據庫備份與恢復之類的操作。
Java池:Java池是一個可選的緩沖區,但是在安裝java或者java程序時必須設置Java池,它用于編譯Java語言編寫指令。
六大核心進程:
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
通過OEM也可以查看這些信
創建表空間和數據文件
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用戶連接數據庫
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。