Oracle體系結構和用戶管理

1、oralce體系結構sql

一、概述數據庫

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

blob.png

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

1)實例服務器

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

blob.png


 

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

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

Oracle分爲單進程實例和多進程實例,如今廣泛都是多進程實例,多進程就是多用戶,不一樣用戶使用不一樣進程來執行oracle的不一樣部分。性能

 

2)數據庫學習

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

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

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

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

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

 

2、oracle存儲結構

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

blob.png

1、物理結構:

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

1)主要文件

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

 

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

 

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

 

 

2)其餘文件

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

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

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

 

二、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


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

blob.png

blob.png

案例4、如何查看錶空間

blob.png


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

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

 

案例9、查看操做系統最小存儲單元

blob.png


3、oracle的內存結構

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

程序代碼

關於已經鏈接的會話信息,包括當前全部活動會話和非活動會話

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

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

 

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

blob.png

1、系統全局區 ( SGA

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

blob.png

blob.png

二、PGA

PGA不是實例的一部分,包含單個服務器進程或者單個後臺進程所需的數據和控制信息。

PGA是在用戶進程鏈接到數據庫並建立一個會話時自動分配

該區域內保留每一個與oracle數據庫鏈接的用戶進程所需的內存

當一個用戶會話結束,PAG就會釋放

 

 

三、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

 

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

 

 

 

 

 

 

4、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

三、查看日誌進程LGWR

blob.png

5、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

 

二、建立自定義用戶

步驟:

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

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

blob.png

三、刪除用戶YDW

三、查詢oracle的全部用戶

相關文章
相關標籤/搜索