Oracle體系結構和用戶管理

在使用oracle之前,我們一定要對oracle的體系結構有深入的理解,與之前我們學習過的sqlserver體系結構是不一樣的,所以對於我們來說是一個全新的內容。

一、oralce體系結構

1、概述
Oracle的體系結構是數據庫的組成,工作過程,以及數據庫中數據的組織與管理機制,要了解oracle數據庫的體系結構,就必須要理解oracle的主要組件和重要的概念。Oracle體系結構包含一系列組件,包括實例、用戶進程、服務進程、數據文件及其他文件,如參數文件、口令文件和歸檔日誌文件等。如下圖所示:
Oracle體系結構和用戶管理

實例和數據庫是oracle數據庫體系結構的核心組成部分,也是最重要的兩個概念,dba的主要工作就是維護實例和數據庫。
1)實例
實例是後臺進程和內存的集合,必須啓動實例才能訪問數據庫中的數據。

Oracle體系結構和用戶管理
Oracle啓動時,將分配一個系統全局區(SGA),並啓動一系列oracle後臺進程
一個實例只能打開並使用一個數據庫
Oracle分爲單進程實例和多進程實例,現在普遍都是多進程實例,多進程就是多用戶,不同用戶使用不同進程來執行oracle的不同部分。

2)數據庫
數據庫是一個數據的集合,該集合被視爲一個邏輯單元。
Oracle 數據庫由操作系統文件組成,這些文件爲數據庫信息提供實際物理存儲區
Oracle 數據庫包括邏輯結構和物理結構。
物理結構:是指存儲數據庫信息的一組操作系統文件,每個數據庫有一個邏輯結構和一個物理結構。物理結構是指構成數據庫的一組操作系統文件,主要由3種類型文件組成:數據文件,控制文件和重做日誌文件。
邏輯結構:是指數據庫數據的邏輯存儲結構,包括:表空間,數據段,表,視圖等。

二、oracle存儲結構

Oracle的存儲結構分爲物理結構和邏輯結構,這兩種存儲結構既相互獨立又相互聯繫。
Oracle體系結構和用戶管理

1、物理結構:
物理結構就是oracle數據庫創建後使用的操作系統物理文件,分爲以下兩種:
1)主要文件
數據文件:數據文件是物理存儲數據庫的文件,數據文件的特點:每個數據文件只與一個數據庫相聯繫,一個表空間可以包含一個或多個數據文件,一個數據文件只能屬於一個表空間。數據文件包含數據庫的用戶或應用程序數據,以及元數據和數據字典。

重做日誌文件:它記錄了對數據的所有更改信息,並提供一種數據恢復機制,如果數據庫服務器發生崩潰,但未丟失任何數據文件,那麼實例便可使用這些文件中的信息恢復數據庫。

控制文件:當數據庫讀取時,要根據控制文件的信息查找數據文件。控制文件存儲了數據文件和重做日誌文件的名稱和位置。一個數據庫至少有兩份控制文件,oracle11g默認包括3個控制文件,各個控制文件內容相同,可以避免因爲一個控制文件的損壞導致無法啓動數據庫。控制文件記錄了以下關鍵信息:數據文件的位置和大小、重做日誌文件的位置及大小、數據庫名稱及創建時間、日誌序列號。控制文件對數據庫至關重要。沒有這些文件,就無法打開數據文件以訪問數據庫中的數據。

2)其他文件
參數文件:用於定義實例啓動時的配置
口令文件:允許sysdba、sysoper 和sysasm 遠程連接到實例並執行管理任務
歸檔日誌文件:使用這些文件和數據庫備份,可以恢復丟失的數據文件。也就是說,歸檔日誌能夠恢復還原的數據文件

2、oracle邏輯結構
Oracle的邏輯組件包括表空間、段、區、塊和模式等。
1)表空間
表空間是數據庫中最大的邏輯單位, SYSTEM 和SYSAUX 表空間是在創建數據庫時創建的必須存在的表空間,還會有TEMP,USERS等。
每個表空間是由一個或多個數據文件組成的,一個數據文件只能與一個表空間相關聯。
表空間的大小等於構成該表空間的所有數據文件大小之和。
表空間和數據文件是相對應的,如果沒有數據文件,表空間不可能獨立存在,如果只有表空間沒有數據文件也是不行的,就好比如果電腦沒有硬盤,你不能再邏輯上看到C盤D盤,在這裏硬盤就相當於是數據文件,而C盤就相當於是表空間。我們可以把多個數據文件組成一個表空間,然後在表空間裏面存儲數據,表空間和數據文件是對應的,一個表空間可以是由一個或多個數據文件組成的,但是一個數據文件只能在一個表空間當中。

表空間的作用:
對於不同的用戶分配不同的表空間,對不同的模式對象分配不同的表空間,方便對用戶操作和模式對象的管理。
可以將不同數據文件創建到不同的磁盤中,有利於管理磁盤空間,提高i/o性能,備份和恢復數據等。

SYSTEM表空間:用於存放oracle系統內部表和數據字典的數據,如表明、列名、用戶名等。
SYSAUX表空間:作爲SYSTEM的輔助表空間,用於存放各種數據庫工具(如企業管理器、StasPack、logMiner等)用到的數據。用於存放各種模式的對象數據,如智能代理用戶DBSNMP、數據挖掘用戶ODM等。
USERS表空間:作爲用戶使用的表空間,可以在這個表空間上創建各種對象,如創建表,索引等。
TEMP表空間:存放臨時數據的特殊表空間,例如:當需要進行排序時,系統就將排序的數據臨時存放在該表空間,排序處理完成後,即可釋放排序數據所佔用的空間,稱之爲臨時表空間。

以上表空間我們不能創建,系統安裝好之後自動創建好了,我們也可以根據需要自己創建。

創建表空間的語法是:
CREATE TABLESPACE tablespacename
DATAFILE ‘filename’ [SIZE integer [K|M]]
[AUTOEXTEND [OFF|ON]];
Oracle體系結構和用戶管理Oracle體系結構和用戶管理Oracle體系結構和用戶管理Oracle體系結構和用戶管理Oracle體系結構和用戶管理

2)段
段存在於表空間中,是一種指定類型的邏輯存儲結構。
段由一組區組成
段分爲4類:數據段、索引段、回退段、臨時段。

3)區
區是磁盤空間分配的最小單位。磁盤按區劃分,每次至少分配一個區。
區是由連續的數據塊組成。
段主要有一個或多個區構成,當創建段時,至少包含一個區。
區不能跨數據文件存在,只能存在於一個數據文件中。

4)數據塊
是數據中最小的數據組織單位與管理單位
Oracle數據中的數據存儲於數據塊中
數據塊是oracle服務器所能讀取或寫入的最小存儲單元
數據塊的取值範圍是2K-64KB,默認值與oracle版本有關

5)模式
模式是數據庫對象的集合。包括:表、視圖、索引、同義詞、序列、過程和程序包等。
當創建一個用戶時,oracle會自動創建一個與用戶名相同的模式,因此,模式又稱爲用戶模式。
用戶登錄後,默認訪問的是與自己的名稱相同的模式中的數量庫對象。

Oracle體系結構和用戶管理Oracle體系結構和用戶管理Oracle體系結構和用戶管理
Oracle體系結構和用戶管理

三、oracle的內存結構

內存是影響數據庫性能的第一要素,oracle內存存儲的主要內容如下:
程序代碼
關於已經連接的會話信息,包括當前所有活動會話和非活動會話
程序運行時必須的相關信息,如查詢計劃
Oracle進程之間通信和共享的信息,如鎖

按照內存的使用方法不同,oracle數據庫的內存又可分爲系統全局區(SGA)、程序全局區(PGA)、用戶全局區(UGA)

Oracle體系結構和用戶管理Oracle體系結構和用戶管理

2、PGA
PGA不是實例的一部分,包含單個服務器進程或者單個後臺進程所需的數據和控制信息。
PGA是在用戶進程連接到數據庫並創建一個會話時自動分配
該區域內保留每個與oracle數據庫連接的用戶進程所需的內存
當一個用戶會話結束,PAG就會釋放

3、UGA
用戶全局區(UGA)爲用戶進程存儲會話狀態
UGA可以作爲SGA或者PGA的一部分。具體位置取決於如何連接Oracle:
如果通過一個共享服務器連接,UGA包含在SAG中
如果通過一個專有服務器連接,UGA就包含在專有服務器的PGA中

案例一:驗證內存結構工作的原理(select語句是如何被執行的?)

當用戶執行語句select * from scott.emp的時候,工作原理分爲四步,如下:

第一步:先做編譯,編譯包含了語法的檢查和語義的檢查。

第二步:如果編譯沒有問題會進入shared pool(共享池 )中,而shared pool 是由library cache和data dictionary cache(數據字典緩存)組成。Sql語句第一時間會進入library cache中,即library cache中會存放被編譯過的正確的sql語句,僅僅是sql語句而已。library cache中沒有緩存的sql語句需要進行硬解析(即需要耗費設備的I/0資源從硬盤讀取)。假設library cache中有這個sql語句,就不需要做硬解析,接着會查 data dictionary cache。data dictionary cache中緩存了權限和對象數據及屬性,所有data dictionary cache檢查用戶是否對scott.emp表是否具有訪問權限,如果有權限繼續往下執行,如果沒有權限,直接給用戶返回一個結果。如果一條語句從來都沒有被執行過,這條語句首先被緩存在share pool中的library cache中,下一次被執行的時候直接從share pool中取sql語句。存放sql語句也需要佔用空間,share pool的空間也是有限的,爲了防止share pool空間不夠用,採用先進先出的規則即後執行的sql語句會覆蓋先執行的sql語句來釋放空間,當然share pool的空間越大越好。

第三步:data buffer cache現在hr用戶可以訪問scott.emp表了,data buffer cache的作用就是從磁盤或存儲中將數據塊調入內存,緩存在buffer cache中。總結:buffer cache緩存數據本身,library cache緩存sql語句本身。

第四步:redo log buffer<重做日誌緩衝區>當用戶執行insert,update,delete,create,alter等操作後,數據發生了變化,這些變化了的數據寫入數據緩衝區(buffer cache)之前,先寫入重做日誌緩衝區,同時變化之前的數據也放入重做日誌緩存中,這樣做,是爲了保證在數據恢復時oracle就知道哪些事務需要提交,哪些事務需要撤回。

可以通過企業管理器來查看share pool的相關信息
如果控制檯打不開,可以執行命令打開:
Oracle體系結構和用戶管理
Oracle體系結構和用戶管理Oracle體系結構和用戶管理Oracle體系結構和用戶管理Oracle體系結構和用戶管理Oracle體系結構和用戶管理

四、oracle進程結構

Oracle體系結構和用戶管理
Oracle有5個後臺進程是必須啓動的,否則數據庫實例無法啓動成功,分別是:進程監控(PMON)進程、系統監控(SMON)進程、數據寫入(DBWR)進程、日誌寫入(LGWR)進程、檢查點(CKPT)進程。

Oracle體系結構和用戶管理
CKPT進程:確保數據緩衝區中所有修改過的數據塊都被寫入數據庫文件的機制。保證數據庫日誌文件和數據文件的同步。

相關命令:
1、查看用戶進程和數據庫進程
Ps –elf | greporacleocl |grep–v grep
Oracle體系結構和用戶管理
Oracle體系結構和用戶管理

五、oracle用戶管理

當創建一個新數據庫時,oracle將常見一些默認的數據庫用戶,如SYS,SYSTEM和SCOTT等用戶。SYS和SYSTEM用戶都是oracle管理用戶,而SCOTT用戶是oracle數據庫的一個示範用戶,SCOTT數據庫裏面包含一些測試展示用的示例表(用於學習交流)
1、默認數據庫用戶
1)SYS
SYS用戶是oracle中的一個超級用戶,數據庫中所有數據字典和視圖都存在SYS模式中,數據字典存儲了用來管理數據庫對象的所有信息,是oracle數據庫中非常重要的系統信息。SYS用戶主要用來維護系統信息和管理實例。SYS用戶只能以SYSOPER或SYSDBA角色登錄系統。

2)SYSTEM
SYSTEM用戶是oracle中默認的數據庫管理員,它擁有DBA權限。該用戶模式中存儲了oracle管理工具使用的內部表和視圖。通常通過SYSTEM用戶管理數據庫的用戶、權限和存儲等。不建議在SYSTEM模式中創建用戶表。SYSTEM不能以SYSOPER和SYSDBA角色登錄系統,只能以默認方式登錄。

3)SCOTT
SCOTT用戶是oracle數據庫的一個示範用戶,一般在數據庫安裝時創建。SCOTT用戶模式包含4個示例表,其中一個是EMP表,使用USERS表空間存儲模式對象。
通常出於安全考慮,對於不同用途的表需要不同的訪問權限,此時,就需要創建不同的用戶,oracle中的create user命令用於創建用戶,每個用戶都有一個默認表空間和一個臨時表空間。如果沒有指定,oracle就將USERS設爲默認表空間,將TEMP設爲臨時表空間。

4)Sysdba和sysoper兩個系統權限區別
sysdba和sysoper屬於system privilege,也稱爲administrative privilege,擁有例如數據庫開啓關閉之類一些系統管理級別的權限。sysdba和sysoper具體的權限如下:
【SYSOPER】權限,即數據庫操作員權限,權限包括:
打開數據庫服務器
關閉數據庫服務器
備份數據庫
恢復數據庫
日誌歸檔
會話限制
【SYSDBA】權限,即數據庫管理員權限,權限包括:
打開數據庫服務器
關閉數據庫服務器
備份數據庫 恢復數據庫
日誌歸檔
會話限制
管理功能
創建數據庫

【sysdba】擁有最高的系統權限,登陸後是sys。
【sysoper】主要用來啓動、關閉數據庫,sysoper 登陸後用戶是public。

2、創建自定義用戶
步驟:
1)選擇用戶名和密碼
2)識別用戶需用於存儲對象的表空間
3)決定每個表空間的限額
4)分配缺省表空間和臨時表空間
5)創建用戶
6)向用戶授予權限和角色

語法:
CREATE USER user
IDENTIFIED BY password
[DEFAULT TABLESPACE tablespace]
[TEMPORARY TABLESPACE tablespace]
[QUOTA {integer [K|M] | UNLIMITED}ON tablespace
[QUOTA {integer [K|M] | UNLIMITED}ON tablespace ] ...]
[PASSWORD EXPIRE ]

案例1:創建用戶YDW
CREATE USER YDW --用戶名爲YDW
IDENTIFIED BY pwd123 --密碼爲martinpwd
DEFAULT TABLESPACE tbs_work --默認表空間爲tbs_work
TEMPORARY TABLESPACE temp --臨時表空間爲temp
QUOTA UNLIMITED ON tbs_work --對tbs_work表空間的使用沒有限制
PASSWORD EXPIRE; --第一次登錄需要修改密碼

Oracle體系結構和用戶管理Oracle體系結構和用戶管理Oracle體系結構和用戶管理Oracle體系結構和用戶管理

六、oracle數據庫權限管理

權限指的是執行特定命令或訪問數據庫對象的權利
權限有兩種類型,系統權限和對象權限
系統權限允許用戶執行某些數據庫操作,如創建表就是一個系統權限
對象權限允許用戶對數據庫對象(如表、視圖、序列等)執行特定操作
角色是一組相關權限的組合,可以將權限授予角色,再把角色授予用戶,以簡化權限管理

1、使用系統權限
系統權限是指在數據庫中執行某種系統級別的操作,或者針對某一類對象執行某種操作的權利,例如:在數據庫中創建表空間的權利,或者創建表的權利,都屬於系統權限,具體如下圖:
Oracle體系結構和用戶管理
常用的系統權限如下:
CREATE SESSION:連接到數據庫
CREATE TABLE:創建表
CREATE VIEW:創建視圖
CREATE SEQUENCE:創建序列

2、對象權限
對象權限是指針對某個特定模式對象執行操作的權利,只能針對模式對象來設置管理對象權限,包括:表、視圖、序列、存儲過程等。
Oracle體系結構和用戶管理
3、授權
Oracle數據庫用戶有兩種途徑獲得權限
1)直接向用戶授予權限
2)將權限授予給角色,再將角色授予給一個或者多個用戶
使用角色能更高效,方便地對權限進行管理,所以數據庫管理員通常使用角色向用戶授予權限,而不是直接向用戶授予權限。
Oracle中常用系統預定義角色有以下種類:
1)CONNECT:擁有連接數據庫權限
2)RESOURCE:擁有創建表、觸發器、過程等權限
3)DBA:數據庫管理員,擁有管理數據庫最高權限

新用戶必須授予一定的權限才能進行相關數據庫操作,授權通過grant語句,取消授權通過revoke語句

授權的語法:
1)GRANT CONNECT TO MARTIN;
授予授予CONNET角色給MARTIN

2)GRANT CONNECT,RESOURCE TO MARTIN;
同時授予CONNET,RESOURCE這2個角色給MARTIN

3)GRANT SELECT ON SCOTT.emp TO MARTIN;
允許用戶MARTIN查詢 SCOTT.emp表的記錄

4)GRANT UPDATE ON SCOTT.emp TO MARTIN;
允許用戶MARTIN更新 SCOTT.emp表中的記錄

5)GRANT ALL ON SCOTT.emp TO MARTIN;
允許用戶MARTIN插入、刪除、更新和查詢SCOTT.emp表中的記錄

4、撤銷權限的語法:
使用REVOKE命令撤銷用戶分配的權限或角色

1)REVOKE CONNECT,RESOURCE FROM MARTIN;
撤銷CONNET,RESOURCE這2個角色

2)REVOKE SELECT FROM SCOTT.emp TO MARTIN;
撤銷MARTIN查詢 SCOTT.emp表的記錄的權限
Oracle體系結構和用戶管理Oracle體系結構和用戶管理Oracle體系結構和用戶管理Oracle體系結構和用戶管理Oracle體系結構和用戶管理Oracle體系結構和用戶管理Oracle體系結構和用戶管理Oracle體系結構和用戶管理

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章