Oracle體系結構和用戶管理

一、oralce體系結構

1、概述

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

blob.png

實例和數據庫是oracle數據庫體系結構的核心組成部分,也是最重要的兩個概念,dba的主要工作就是維護實例和數據庫。

1)實例

實例是後臺進程和內存的集合,必須啓動實例才能訪問數據庫中的數據。

blob.png


 

Oracle啓動時,將分配一個系統全局區(SGA),並啓動一系列oracle後臺進程

一個實例只能打開並使用一個數據庫

Oracle分爲單進程實例和多進程實例,現在普遍都是多進程實例,多進程就是多用戶,不同用戶使用不同進程來執行oracle的不同部分。

 

2)數據庫

數據庫是一個數據的集合,該集合被視爲一個邏輯單元。

Oracle 數據庫由操作系統文件組成,這些文件爲數據庫信息提供實際物理存儲區

Oracle 數據庫包括邏輯結構和物理結構。

物理結構:是指存儲數據庫信息的一組操作系統文件,每個數據庫有一個邏輯結構和一個物理結構。物理結構是指構成數據庫的一組操作系統文件,主要由3種類型文件組成:數據文件,控制文件和重做日誌文件。

邏輯結構:是指數據庫數據的邏輯存儲結構,包括:表空間,數據段,表,視圖等。

 

二、oracle存儲結構

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

blob.png

1、物理結構:

物理結構就是oracle數據庫創建後使用的操作系統物理文件,分爲以下兩種:

1)主要文件

數據文件:數據文件是物理存儲數據庫的文件,數據文件的特點:每個數據文件只與一個數據庫相聯繫,一個表空間可以包含一個或多個數據文件,一個數據文件只能屬於一個表空間。數據文件包含數據庫的用戶或應用程序數據,以及元數據和數據字典。

 

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

 

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

 

 

2)其他文件

參數文件:用於定義實例啓動時的配置

口令文件:允許sysdbasysoper sysasm 遠程連接到實例並執行管理任務

歸檔日誌文件:使用這些文件和數據庫備份,可以恢復丟失的數據文件。也就是說,歸檔日誌能夠恢復還原的數據文件

 

2、oracle邏輯結構

Oracle的邏輯組件包括表空間、段、區、塊和模式等。

1)表空間

表空間是數據庫中最大的邏輯單位, SYSTEM SYSAUX 表空間是在創建數據庫時創建的必須存在的表空間,還會有TEMPUSERS等。

每個表空間是由一個或多個數據文件組成的,一個數據文件只能與一個表空間相關聯。

表空間的大小等於構成該表空間的所有數據文件大小之和。

表空間和數據文件是相對應的,如果沒有數據文件,表空間不可能獨立存在,如果只有表空間沒有數據文件也是不行的,就好比如果電腦沒有硬盤,你不能再邏輯上看到CD盤,在這裏硬盤就相當於是數據文件,而C盤就相當於是表空間。我們可以把多個數據文件組成一個表空間,然後在表空間裏面存儲數據,表空間和數據文件是對應的,一個表空間可以是由一個或多個數據文件組成的,但是一個數據文件只能在一個表空間當中

 

表空間的作用:

對於不同的用戶分配不同的表空間,對不同的模式對象分配不同的表空間,方便對用戶操作和模式對象的管理。

可以將不同數據文件創建到不同的磁盤中,有利於管理磁盤空間,提高i/o性能,備份和恢復數據等。

 

SYSTEM表空間:用於存放oracle系統內部表和數據字典的數據,如表明、列名、用戶名等。

SYSAUX表空間:作爲SYSTEM的輔助表空間,用於存放各種數據庫工具(如企業管理器、StasPacklogMiner等)用到的數據。用於存放各種模式的對象數據,如智能代理用戶DBSNMP、數據挖掘用戶ODM等。

USERS表空間:作爲用戶使用的表空間,可以在這個表空間上創建各種對象,如創建表,索引等。

TEMP表空間:存放臨時數據的特殊表空間,例如:當需要進行排序時,系統就將排序的數據臨時存放在該表空間,排序處理完成後,即可釋放排序數據所佔用的空間,稱之爲臨時表空間。

 

 

 

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

 

創建表空間的語法是:

CREATE TABLESPACE tablespacename

DATAFILE filename[SIZE integer [K|M]]

[AUTOEXTEND [OFF|ON]];

 

 

案例一:創建一個自動增長的表空間tbs_work

如果不能創建,說明數據庫沒有啓動,執行STARTUP命令之後再創建。

blob.png

如果空間不夠用了,可以調整表空間大小。

方法一:更改數據文件大小,並指明數據文件的存放路徑,使用RESIZE關鍵字執行調整後的表空間大小。

blob.png

方法二:向表空間內添加新的數據文件,當數據文件滿了之後自動存儲到新的數據文件。

blob.png


案例二:改變表空間的讀寫狀態,ONLY表示只讀,WRITE表示可讀寫。

blob.png


刪除表空間

blob.png


案例三、想查看系統中有多少個數據文件

blob.png

blob.png

案例四、如何查看錶空間

blob.png


案例五、查看錶空間和數據文件之間的對應關係

blob.png


2)

段存在於表空間中,是一種指定類型的邏輯存儲結構。

段由一組區組成

段分爲4類:數據段、索引段、回退段、臨時段。

 

3)

區是磁盤空間分配的最小單位。磁盤按區劃分,每次至少分配一個區。

區是由連續的數據塊組成。

段主要有一個或多個區構成,當創建段時,至少包含一個區。

區不能跨數據文件存在,只能存在於一個數據文件中。

 

4)數據塊

是數據中最小的數據組織單位與管理單位

Oracle數據中的數據存儲於數據塊中

數據塊是oracle服務器所能讀取或寫入的最小存儲單元

數據塊的取值範圍是2K-64KB,默認值與oracle版本有關

 

5)模式

模式是數據庫對象的集合。包括:表、視圖、索引、同義詞、序列、過程和程序包等。

當創建一個用戶時,oracle會自動創建一個與用戶名相同的模式,因此,模式又稱爲用戶模式。

用戶登錄後,默認訪問的是與自己的名稱相同的模式中的數量庫對象。

 

案例六:xx表空間DBA創建了一個名爲test的表,這張表表空間所佔用的空間,我們稱之爲段,查看數據段的命令

blob.png

 

顯示有5940個段

blob.png

案例七:查看EXAMPLE表空間的區和段的分佈情況

blob.png

案例八:查看塊

blob.png

 

案例九、查看操作系統最小存儲單元

blob.png


三、oracle的內存結構

內存是影響數據庫性能的第一要素,oracle內存存儲的主要內容如下:

程序代碼

關於已經連接的會話信息,包括當前所有活動會話和非活動會話

程序運行時必須的相關信息,如查詢計劃

Oracle進程之間通信和共享的信息,如鎖

 

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

blob.png

1、系統全局區 ( SGA

數據庫信息存儲於系統全局區,由多個數據庫進程共享,當數據庫實例啓動時SGA的內存本自動分配,SGA是數據庫中佔用服務器內存最大的一個區域,也是影響數據庫性能的一個重要指標,SGA按作用不同,分爲以下幾個部分。

blob.png

blob.png

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 cachedata dictionary cache(數據字典緩存)組成。Sql語句第一時間會進入library cache中,即library cache中會存放被編譯過的正確的sql語句,僅僅是sql語句而已。library cache中沒有緩存的sql語句需要進行硬解析(即需要耗費設備的I/0資源從硬盤讀取)。假設library cache中有這個sql語句,就不需要做硬解析,接着會查 data dictionary cachedata 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的相關信息

如果控制檯打不開,可以執行命令打開:


blob.png

blob.png

blob.png

blob.png

blob.png

 

可以從v$sgainfo中查看shared pool size

blob.png

測試語句執行時間:

SQL> set timing on

SQL> select * from scott.emp;第一次執行sql語句

 

已用時間:  00: 00: 00.05

 

SQL> /再次執行上一條命令所用的時間爲00: 00: 00.00

 

已用時間:  00: 00: 00.00

 

通過上面的測試發現,緩存提高了查詢的速度。

 

 

 

 

 

 

四、oracle進程結構

blob.png

Oracle5個後臺進程是必須啓動的,否則數據庫實例無法啓動成功,分別是:進程監控(PMON)進程、系統監控(SMON)進程、數據寫入(DBWR)進程、日誌寫入(LGWR)進程、檢查點(CKPT)進程。

blob.png

CKPT進程:確保數據緩衝區中所有修改過的數據塊都被寫入數據庫文件的機制。保證數據庫日誌文件和數據文件的同步。

 

 

相關命令:

1、查看用戶進程和數據庫進程

Ps elf | greporacleocl |grepv grep

 

blob.png

2守護進程

Ps elf |grep oha

blob.png

3、查看日誌進程LGWR

blob.png

五、oracle用戶管理

當創建一個新數據庫時,oracle將常見一些默認的數據庫用戶,如SYS,SYSTEMSCOTT等用戶。SYSSYSTEM用戶都是oracle管理用戶,而SCOTT用戶是oracle數據庫的一個示範用戶,SCOTT數據庫裏面包含一些測試展示用的示例表(用於學習交流)

1、默認數據庫用戶

1SYS

SYS用戶是oracle中的一個超級用戶,數據庫中所有數據字典和視圖都存在SYS模式中,數據字典存儲了用來管理數據庫對象的所有信息,是oracle數據庫中非常重要的系統信息。SYS用戶主要用來維護系統信息和管理實例。SYS用戶只能以SYSOPERSYSDBA角色登錄系統。

 

2SYSTEM

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

 

3SCOTT

SCOTT用戶是oracle數據庫的一個示範用戶,一般在數據庫安裝時創建。SCOTT用戶模式包含4個示例表,其中一個是EMP表,使用USERS表空間存儲模式對象。

通常出於安全考慮,對於不同用途的表需要不同的訪問權限,此時,就需要創建不同的用戶,oracle中的create user命令用於創建用戶,每個用戶都有一個默認表空間和一個臨時表空間。如果沒有指定,oracle就將USERS設爲默認表空間,將TEMP設爲臨時表空間。

 

4)Sysdbasysoper兩個系統權限區別  

sysdbasysoper屬於system privilege,也稱爲administrative privilege,擁有例如數據庫開啓關閉之類一些系統管理級別的權限。sysdbasysoper具體的權限如下:  

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 ]

blob.png

3、修改YDW用戶的密碼爲pwd123456

blob.png

3、刪除用戶YDW

3、查詢oracle的所有用戶


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