共計 10601 個字符,預計需要花費 27 分鐘才能閱讀完成。
本篇內容主要講解“Oracle 的體系結構和物理、邏輯存儲結構介紹”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓丸趣 TV 小編來帶大家學習“Oracle 的體系結構和物理、邏輯存儲結構介紹”吧!
1.Oracle 體系結構
說到 Oracle,Oracle 是什么呢?接觸過 Mysql,SQL Server 的人可能下意識就認為不就一個關系型數據庫么?其實不然,太籠統的概念不能讓我們清醒的看懂 Oracle 的結構,從嚴格意義上來講 Oracle 由兩部分組成:
實例是數據庫啟動時初始化的一組進程和內存結構,數據庫則是指用戶存儲數據的一些文件。實例是伴隨著數據庫的啟動而存在的,它的存在是為了高效訪問和處理數據庫中的文件,以及保證故障時數據零丟失。正是如此,才會有啟動和關閉實例、加載卸載數據庫這些術語。
如果上面那些讓你對 Oracle 有了一點淺顯的認知,那么請看下圖:
如你所見,以中間空白的為線,上面粉嫩嫩的部分便是 Oracle 實例部分,下面的便是數據庫部分,那接下來我們便逐個進行剖析。
2.Oracle 物理存儲結構
顧名思義,物理存儲結構就是一些能看得見,實際存在的東西,大白話就是一群文件組成了 Oracle 的物理存儲結構。如圖
黃黃的部分代表著 Oracle 的核心組成,分別是數據文件、控制文件以及重做日志文件。除此之外,物理存儲結構還包括著一些其他文件,例如參數文件、密碼文件以及歸檔日志文件等等。下面將主要介紹這些文件。
數據文件(Data files)
數據文件是指存儲數據庫中數據的文件,這些“xxxx.dbf”存儲著系統數據、數據字典數據、索引數據以及用戶存儲的數據,所以這部分也是數據庫最核心的部分。數據文件大小是靈活的,可以通過設置讓它自動擴展,避免了數據量過大但是數據文件空間有限這種狀況;數據文件是專屬于一個數據庫的,也專屬于一個表空間的,但是一個表空間卻可以擁有多個數據文件。如果用戶讀取的數據不在緩沖區內,便會從數據文件中將相對應的數據放到緩沖區中,再進行讀取。這部分內容會在之后詳細分析。
控制文件(Control files)
控制文件是一個很小的二進制文件,這些“xxx.CTL”中存放的數據庫的”物理結構信息”, 這些物理結構信息包括: 數據庫的名字、數據文件和聯機日志文件的名字及位置.、創建數據庫時的時間戳。數據庫在啟動的時候需要訪問控制文件,從中讀取數據文件、日志文件的信息;隨著 Oracle 的運行,數據庫將不斷更新控制文件;相對應的一旦控制文件損壞,數據庫便會發生運行故障。所以為了更好的保護數據庫, 我們可以鏡像控制文件,特別是在數據庫結構發生變化時,要對其進行備份,保持控制文件的一致性。
重做日志文件(Redo Log files)
重做日志文件用于記錄數據庫所有修改信息 的文件,小名叫做日志文件,這些“.log”文件既可以保證數據庫的安全,又可以實現數據庫的備份和恢復。為了防止數據出現意外丟失,oracle 也允許鏡像日志文件,一個日志與其鏡像出來的文件構成一個日志文件組,但是鏡像文件數量不能超過 5 個。正所謂所有的雞蛋不要放在一個籃子里,同一組的文件最好保存在不同的磁盤中,防止物理損壞造成不必要的麻煩。
參數文件(Parameter file)
參數文件記錄了 Oracle 數據庫的基本參數信息,主要包括數據庫名、控制文件所在路徑等。參數文件包括文本參數文件(PFILE)和服務器參數文件(SPFILE),前者為 init.ora, 后者為 spfile.ora 或 spfile.ora 的二進制文件。在數據庫啟動的時候就會讀取參數文件, 然后根據參數文件中的參數來分配 SGA 并啟動一系列的后臺進程。
歸檔日志文件(Archived Log files)
歸檔日志文件用來對寫滿的日志文件進行保存復制。其目的是為了長期保存日志以便于恢復。
3.Oracle 邏輯存儲結構
在 oracle 數據庫中,對數據庫操作會涉及邏輯存儲結構,它是從邏輯角度分析數據庫的構成,描述的是數據庫內部數據的組織與管理方式,與操作系統沒有關系。
如圖,可以明顯的看出數據庫邏輯結構主要包括表空間、段、區和數據塊,所有的結構都是一對多的關系,一個數據庫可以擁有多個表空間,一個表空間擁有多個段等等。
表空間
表空間是 Oracle 最大的邏輯存儲結構,與物理上的數據文件相對應,但是一個表空間可以擁有多個數據文件,這里就不一一贅述了。
段
段是一組盤區,它是一個獨立的邏輯存儲結構,用于存儲具有獨立存儲結構對象的全部數據。段一般是數據庫終端用戶處理最小的存儲單位,當段的數據區已滿,Oracle 為其分配另一個數據區,段的數據區在磁盤上可能是不連續的。根據段所存儲的特征,可將其分為 5 種類型:
數據段:用來存儲表中所有數據;在 Oracle 中,每當用戶創建一個表時,系統將自動在默認表空間里分配一個與表名稱相同的數據段,方便存儲該表的所有數據。
索引段:用來存儲表中索引的所有數據;在 Oracle 中,每當用戶創建索引時,系統將自動在默認表空間創建一個與索引名稱相同的索引段,方便存儲該索引的所有數據。
臨時段:用于存儲表排序或匯總時產生的臨時數據;每當用戶:
臨時表空間進行 Order by 進行排列或匯總時,系統在該用戶的臨時表空間自動創建一個臨時段,在操作結束時自動消除。
LOB 段:LOB 用來存儲表中大型數據對象,例如 CLOB 與 BLOB
回退段:用于存儲用戶數據被修改之前的位置和值;當與要對用戶的數據進行回退操作時,就要使用回退段。
區
區是 Oracle 存儲分配的最小單位,它是由一個或多個數據塊組成的。一個或多個區組成一個段,也就是說段的大小都是由區的個數來決定。當一個段的空間使用完之后,Oracle 會自動為該字段分配成一個新的區。
塊
塊是用來管理存儲空間的最基本的單位,也是最小的邏輯存儲單位。塊的大小由初始化參數 db_block_size 來決定,不同的 Oracle 版本的大小是不同的,但是數據庫一旦創建,其大小便不可更改。雖然每個數據塊可以存儲不同類型的數據,但是每個數據塊都具有一個相同的結構,如圖:
1. 塊頭
包含了該數據塊一般的屬性信息,如數據塊的物理地址、所屬段類型等
2. 表目錄
如果數據塊中存儲的數據時某個表的數據,則這里存放該表的信息
3. 行目錄
用來存儲數據塊中有效的行信息
4. 空余空間
指數據塊還沒有使用的存儲空間
5. 行空間
表或者索引的數據存儲在行空間中,所以行空間是數據塊中已經使用的存儲空間。
所以從描述就可以看出來,一個數據塊的容量其實就是行空間與空余空間的容量總和。
4.Oracle 實例內存結構與相對應的后臺進程
如圖所示,Oracle 實例結構分為左右兩部分,一個叫做 SGA,稱作系統全局區;一個叫做 PGA,稱作程序全局區。SGA 是系統分配的一組共享的內存結構,用來實現對數據庫數據的管理和操作;PGA 是用戶會話專有的內存區域,每個服務進程、后臺進程都有一個 PGA。其實從上圖可以看出,實例和數據庫本來是八竿子打不到一起的兩個東西,但是正好中間出來一個媒婆:實例的后臺進程,也就是圖中示例部分橢圓形一塊一塊的那個將兩者溝通到了一起。下面先對 SGA 進行分析描述,其中也會涉及到相對應的進程也將進行分析:
如圖:
數據庫緩沖區緩存(database buffer cache)
-database buffer cache 又叫 buffer cache,它用來存儲從數據文件中讀取到的數據塊的鏡像。在這塊區域 Oracle 將進行執行 sql 的工作,所以當更新數據時,用戶會話先會掃描緩沖區,不會去直接在磁盤上操作,這樣就會減少磁盤的 IO,從而大幅度提升系統的性能。
舉個例子
select user_id,date from customer where user——id
當 oracle 在執行這個 SQL 語句的時候,首先由對應的用戶進程發送給服務器,監聽收到請求后,便創建一個相對應的服務器進程,然后該進程便會先掃描緩沖區是否存在 user_id 10 的數據塊,如果存在,相關信息便會傳到 PGA 中處理,最后顯示給用戶;如果沒有命中,該進程便會將磁盤上對應的數據塊復制到緩沖區中,再執行剩余的操作。
但是有些人會想,如果一直查緩存中不存在的數據塊,那磁盤上的數據塊不全都要復制到緩沖區了么,那不是更快?其實當你把數據塊復制到緩沖區中,無形中增加了緩沖區的負荷,而緩沖區的存在意義便是提高系統的性能,所以便會用 LRU 這個算法管理著緩沖區內存空間,使其在維持在合理的區間內擁有最高的性能。
在執行一些 DML 語句的情況下,例如 update 一個 XXX,緩沖區也是如上操作,先掃描緩沖區,緩存命中,便直接更新;緩存沒命中,便把磁盤相對應的數據塊復制到緩沖區進行更新。這時候問題就來了,更新完緩沖區數據,磁盤數據不是沒變么?
這個時候就輪到關鍵人物出場了:DBWn。
DBWn
DBWn 又稱數據庫寫進程,他負責的就是將更新完的緩沖區數據寫入磁盤中。也就是數據庫中的數據文件中。但是這個進程是公認的懶進程,它不是每當緩沖區寫入數據的時候便會自動的將其寫入磁盤中當下面這些情況發生時,這個懶進程將會執行寫的任務:
沒有可以寫入的緩存空間
臟緩存達到限制(會導致搜索時間過長)1/ 4 滿
最晚三秒鐘:最晚三秒會執行一次寫入
遇到檢查點:遇到這個 checkpoint 便會執行寫程序。
表空間熱備份的時候
表空間離線、只讀狀態
執行 Drop 操作的時候
從以上這些時機更能明確的看出,DBWn 不是隨時隨地的執行,并且跟 commit 操作沒任何關系。其實這種懶進程更是能體現緩沖區存在的意義,減少磁盤 IO 對系統的壓力,所以“懶”還是有“懶”的好處的。
如果在 DBWn 在未執行的時候,大量的臟數據還在緩沖區并沒有寫入磁盤的時候,突然天降橫禍,打雷斷電了,數據就丟了?這時候就要引出重做日志和其相對應的后臺進程來解決這個問題。
日志緩沖區(Redo log buffer)
當我們在執行一些 DML 操作時,產生的變更向量會寫到重做日志文件中去,一旦上面提到的情況發生,例如打雷啊、斷電啊使系統突然宕掉,database buffer cache 中的臟數據還沒等到 DBWn 將它寫入磁盤的時候;當系統重新啟動,這時候就會有一個實例恢復的過程,而重做日志中的那些變更向量便會發揮作用,使數據庫保持與宕機前的一瞬間的數據一致;常用的一些備份恢復操作原理和這個一樣:提取備份集— 應用重做日志文件中的變更記錄。
日志文件用于記錄對數據庫的更改,所以為了減少磁盤 IO,減少用戶等待時間,數據庫的修改操作信息要先寫到日志緩沖區中,當日志緩沖區達到一定的限度時,會被日志寫入進程 LGWR 寫入磁盤中。相對 database buffer cache 來說,這個日志緩沖區對數據庫的性能影響較小。
LGWR
LGWR 又稱作日志寫入器。顧名思義,日志寫入器就是將日志緩沖區的臟數據寫進磁盤中,相對于 DBWn 這種“懶”進程,LGWR 可是相對“勤快”的多
commit 寫入
日志緩沖區占用率 1 /3
DBWn 要寫入臟緩沖區前
數據庫緩沖區緩存和日志緩沖區都是為了提高性能,避免頻繁 IO 而存在的。日志緩沖區相比數據庫緩沖區緩存要小的多,并且不能進行自動管理,對于日志緩沖區的修改需要重啟實例,數據庫緩沖區緩存可進行自動管理。作用在數據庫緩沖區緩存上的 DBWn 進程,為了避免頻繁的磁盤 IO 導致系統性能下降,會盡可能少地執行寫入,且 DBWn 的寫入和 commit 操作沒有任何關系;
而作用在日志緩沖區上的 LGWR 進程,則會非常積極地進行寫入,一般情況下,它幾乎是實時地將重做日志記錄轉儲到磁盤中去。LGWR 是 Oracle 體系結構中最大的瓶頸之一。DML 的速度不可能超過 LGWR 將變更向量寫入磁盤的速度。
共享池
共享池是最復雜的 SGA 結構,它有許多子結構,我們來看看常見的幾個共享池組件:
庫緩存(library cache):Oracle 引入庫緩存的目的是共享 SQL 和 PL/SQL 代碼。服務器進程執行 SQL 和 PL/SQL 時,首先會進入庫緩存查找是否有相同的 SQL,如果有,就不再進行后續的編譯處理,直接使用已經編譯的 SQL 和執行計劃。Oracle 通過比較兩條 SQL 語句的正文來確定兩條 SQL 是否相同,所以如果想共享 SQL 語句,必須使用綁定變量的方式。如:
select * from emp where sal 100 和 select * from emp where sal 101 是不同的,而使用綁定變量時, 即使 v_sal 的值不同,Oracle 認為 select * from emp where sal v_sal 也是相同的。Oracle 使用 LRU 隊列和算法來管理庫緩存,最近使用過的 SQL 會放在隊首,長時間沒有使用的 SQL 放在隊尾,當庫緩存需要內存空間而又沒有空閑的內存空間時,隊尾內存中的 SQL 會被清除,放入最新的 SQL,并且隊首會指向次段內存。Oracle 沒有提供直接修改庫緩存大小的方法,只能通過修改共享池的大小來間接修改庫高速緩存的大小。
數據字典緩存 (dictionary cache):當 Oracle 執行 SQL 時,會將相關的數據文件、表、索引、列、用戶、其他的數據對象的定義和權限信息存放到數據字典緩存中。在此之后,如果需要相同的相關數據,Oracle 會從數據字典緩存中提取。Oracle 沒有提供直接修改 數據字典緩存大小的方法,只能通過修改共享池的大小來間接修改 數據字典緩存的大小。
那修改共享池的方法是什么?alter system set shared_pool_size= xxx m;共享池的大小受限制于 SGA_MAX_SIZE 參數的大小。
大池
大池是個可選的內存區域,可提供一個大的緩沖區供數據庫的備份與恢復操作過程使用。需要大池的實際需要一般有以下三種:
數據庫的備份恢復
具有大量排序操作的 SQL 語句
并行化的數據庫操作
JAVA 池
JAVA 池在數據庫中支持 JAVA 的運行,存放 JAVA 代碼和 JAVA 語句的語法分析表;JAVA 池的大小一般不小于 20M,便于安裝 JAVA 虛擬機。
流池
從重做日志中提取變更記錄的進程 和 應用變更記錄的進程會用到流池(如實例不正常關閉,譬如斷電導致實例關閉,在重啟時,Oracle 會自動執行實例恢復過程,在此過程需要提取重做日志記錄和應用重做日志兩個動作)
以上列舉了 Oracle 常見的內存結構,要注意的是,上面列舉的內存區域,除了日志緩沖區是固定的,不能動態調整也不能進行自動管理外,其他內存區域都可以進行動態調整,也可以進行自動管理。
5.Oracle 程序全局區
PGA 包含單個用戶或者服務器數據和控制信息,是 oracle 分配給一個進程的私有內存區域,每當有用戶進程連接到數據庫并創建一個會話時,便會由 Oracle 自動分配相對應的空間。
在上面我們介紹了 DBWn、LGWR 這兩個進程,下面將介紹其他的進程信息:
SMON
SMON(System Monitor)又稱作系統監控進程,當數據庫實例出現故障或者系統崩潰的時候,執行恢復操作。它還定期合并字典管理的表空間中的空閑空間;并且,在系統重啟期間,他還可以清理表空間所有臨時段。安裝和打開數據庫,也是由此進程完成的。SOMN 會被有規律的喚醒執行,并在其他進程需要時也可以進行調用。
PMON
PMON(process monitor)又稱進程監視器。用戶進程出現故障時執行的恢復操作,負責清理內存存儲區和釋放該進程所使用的資源;除此之外,PMON 還會周期的檢查調度進程和服務器進程的狀態,對已死的進程進行重啟。POMN 會被有規律的喚醒執行,并在其他進程需要時也可以進行調用。
CKPT
CKPT(checkpoint process)檢查點進程。該進程負責發起檢查點信號,讓 DBWn 開始工作;并更新控制文件以及數據文件頭。
ARCn
ARCn(Archive)歸檔進程,主要負責將日志文件復制到歸檔日志文件中,來避免日志文件組的循環使用覆蓋到已有的日志文件中。只有當數據庫在 ARCHIVELOG 模式下,且自動歸檔開啟的時候,系統便會啟動 ARCn 進程;ARCn 包括歸檔方式和非歸檔方式。只有在歸檔方式下,才會存在 ARCn 進程,當它進行歸檔操作時,任何進程都不能訪問被操作的日志文件。
以上進程除了 ARCn 之外,全部都是系統必要的進程。對維持物理和內存之間的聯系起了重大作用。
6. 數據字典
數據字典是 Oracle 數據庫重要的組成部分,由 Oracle 自動創建并更新,用來存儲數據庫實例信息的一組表,以表和視圖的方式組織其擁有的信息。數據字典中的表是不能直接被訪問的,但是可以訪問數據字典中的視圖。數據字典的擁有者是 SYS 用戶,并存儲在默認表空間 SYSTEM 表空間中。數據字典主要存儲以下信息:
數據庫中所有模式對象的信息,如表、視圖、簇、及索引等。
存儲空間的分配信息,分配多少空間,當前使用了多少空間等。
安全信息
實例運行時的性能和統計信息
其他數據庫本身的基本信息
Oracle 中的數據字典有靜態和動態之分;靜態數據字典,在用戶訪問數據字典時不會發生改變,zhelei 動態數據字典是依賴數據庫運行的性能的,反映數據庫運行的一些內在信息,所以在訪問這類數據字典時往往不是一成不變的。
靜態數據字典中的視圖分為三類,它們分別由三個前綴夠成:user_*、all_*、dba_*。
user 視圖
user 視圖的名稱以 user_為前綴,用來記錄用戶對象的信息。user 視圖可以看作是 all 視圖的自己,每個用戶都可以查詢 user 視圖。使用 DESC 可以了解視圖結構。
all 視圖
all 視圖的名稱以 all_為前綴,用來記錄用戶對象的信息以及可以訪問的所有對象信息,包括該用戶自己的方案對象,也包括被授權可以訪問其他用戶的方案對象。all 視圖是 user 視圖的擴展。
dba 視圖
dba 視圖以 dba_為前綴,用來記錄數據庫實例所有對象的信息。一般只有 dba 角色可以訪問 dba 視圖,如果普通用戶被授予 Select any dictionary 系統權限的用也可以對此進行訪問。
動態性能視圖都是以 V$ 開頭的視圖,V$ 視圖以 V$ 為前綴,用來記錄與數據庫活動相關的性能統計動態信息。例如 V$session 視圖,可以查看當前會話的詳細信息。
7. 數據庫啟動和關閉流程
Oracle 啟動分 3 個過程 nomount、mount 和 open,這三個過程具體執行的工作如下:
– nomount 狀態:啟動實例。
首先從環境變量下 dbs 目錄按如下順序讀取參數文件,但是會考慮參數文件重要性,便會通過以下過程進行讀取:
首先,讀取 spfile+ 實例名.ora 這個文件;若未發現這個文件則讀取 spfile.ora;若未發現這個文件則讀取 init+ 實例名.ora 這個文件;如果以上文件都沒找到,也可以指定 pfile 參數文件啟動以替代默認啟動方式。
讀取完參數文件之后,便開始分配 SGA,啟動后臺進程,啟動預警日志文件(記錄實例生命周期內事件,如系統內部錯誤、數據塊損壞、系統參數修改等)和追蹤文件(記錄 SQL 操作及時間消耗等。要注意的是,數據庫必須用初始參數文件或啟動命令中的 DB_NAME 參數命名。
– mount 狀態:關聯實例與數據庫,讀取控制文件并獲取數據文件和重做日志文件名稱狀態。
啟動完實例之后,便要將實例與數據庫相關聯,在讀取參數文件時,找到控制文件位置并將其打開,從中讀取到數據文件以及重做日志文件名稱與狀態,但是這里不檢查數據文件與重做日志文件的存在性。在 mount 狀態下,系統完成了了數據庫的裝載。
open 狀態:打開數據庫
打開數據庫過程承接了 mount 狀態,從控制文件讀取到了數據文件、重做日志文件的位置,這里將其打開;如果其中任何一個文件丟失的話,則 Oracle 會返回一個 error,在最后階段,Oracle 數據庫驗證數據文件和重做日志文件可否打開并檢驗數據庫的一致性,若不一致,SMON 后臺進程將啟動實例恢復。
shutdown 有四個參數:normal、transactional、immediate、abort,不帶參數默認為 normal。
shutdown normal:不斷開現在連接用戶,阻止任何用戶建立新的連接,包括管理員在內。已經連接的用戶能夠繼續他們當前的工作,如遞交新的更新事務,直到此用戶自行斷開連接。這樣需要等待的時間長,可以查出現連用戶,再通知其自行斷開。所有的用戶都斷開連接,數據庫才進行關閉操作,即關閉數據庫、卸載數據庫、終止例程。在這種情況下關閉的數據庫在重新啟動后,不會出現問題。啟動時不需要實例恢復。
shutdown transactional:阻止任何用戶建立新連接,等待所有當前連接用戶的未遞交的活動事務提交完畢,然后立即斷開用戶的連接。所有的用戶都斷開連接則立即關閉數據庫,進行關閉數據庫、卸載數據庫、終止進程等操作。這種方式,用戶有可能正在算賬,做復雜報表!一次數據庫操作做不完的,在剛做了一次數據庫操作后,將被斷開,這樣對用戶有一定影響,啟動時不需要實例恢復。
shutdown immediate:阻止任何用戶新的連接,同時限制當前連接用戶開始新的事務。如果已連接用戶有未完成的事務,則數據庫系統不會等待他們完成,而是直接把當前未遞交的事務回退。數據庫系統不再等待用戶主動斷開連接,當未遞交的事務回退成功后,系統會直接關閉、卸載數據庫,并終止數據庫進程,啟動時不需要實例恢復。
shutdown abort:當數據庫出現故障時,可能以上三種方式都無法正常關閉數據庫,則使用這種方法。強制結束當前正在執行的 SQL 語句,任何未遞交的事務都不被回退!這種方法基本上不會對控制文件或者參數文件造成破壞,這比強制關機要好一點(在無法正常關閉數據庫的時候),啟動時自動進行實例恢復。
startup 有 7 個參數:nomount、mount、open、pfile、force、restrict 和 recover
startup nomount:通過參數文件,分配 sga,啟動數據庫后臺進程,不打開控制文件和數據文件,不能訪問數據庫。通常啟動到這里可以做 create database , create or recreate control file 或者是 mount standby database 等動作,修改 parameter 也是可以的。
startup mount:僅給 dba 進行管理操作,不允許數據庫用戶訪問。僅當前實例的控制文件被打開,數據文件未打開,在這個模式下可以進行如下操作:重命名數據文件、添加取消或重命名重做日志文件、設置歸檔模式、設置閃回、執行完整的數據庫恢復操作等。
startup open:startup 的默認參數就是 open,打開數據庫,允許數據庫的訪問,當前實例控制文件中所描述的所有文件都已經打開。
startup pfile=FILENAME:以 FILENAME 為初始化文件啟動數據庫,不是采用默認初始化文件。
startup force:中止當前數據庫的運行,并開始重新正常的啟動數據庫。
startup restrict:只允許具有 restricted session 權限的用戶訪問數據庫,該模式下登陸者可做如下操作:執行數據庫數據的導出或導入、執行數據裝載操作用 SQL*Loader、暫時阻止一般的用戶使用數據、在某個移植過程和升級操作過程中 restricted session 登陸后可使用 ALTER SYSTEM 語句來禁止 RESTRICTED SESSION 特性 ALTER SYSTEM DISABLE RESTRICTED SESSION;如果是在非受限模式下打開的數據庫,后來發現需要限制訪問,此時可以使用帶 ENABLE RESTRICTED SESSION 子句的 ALTER SYSTEM 語句來完成。
startup recover:數據庫啟動,并開始介質恢復。
附錄:常用的數據字典
靜態視圖
數據字典名稱說明 dba_tablespaces 關于表空間的信息 dba_ts_quotas 所有用戶表空間限額 dba_free_space 所有表空間中的自由分區 dba_segments 描述數據庫中所有段的存儲空間 dba_extents 數據庫中所有分區的信息 dba_tables 數據庫中所有數據表的描述 dba_tab_columns 所有表、視圖以及簇的列 dba_views 數據庫中所有視圖的信息 dba_synonyms 關于同義詞的信息 dba_sequences 所有用戶序列信息 dba_constraints 所有用戶表的約束信息 dba_indexs 數據表中所有索引的描述 dba_ind_columns 所有表及簇上壓縮索引的列 dba_triggers 所有用戶的觸發器信息 dba_source 所有用戶存儲過程信息 dba_data_files 查詢關于數據庫文件的信息 dba_tab_grants/privs 查詢關于對象授權的信息 dba_objects 數據庫所有對象 dba_users 關于數據庫中所有用戶的信息
動態視圖
數據字典名稱說明 v$database 描述關于數據庫的相關信息 v$datafile 數據庫使用的數據文件信息 v$log 從控制文件中提取有關重做日志組的信息 v$logfile 有關實例重置日志組文件名及其位置的信息 v$archived_log 記錄歸檔日志文件的基本信息 v$archived_dest 記錄歸檔日志文件的路徑信息 v$controlfile 描述控制文件的相關信息 v$instance 記錄實例的基本信息 v$system_parameter 顯示實例當前有效的參數信息 v$sga 顯示實例的 SGA 區大小 v$sgastat 統計 SGA 使用情況的信息 v$parameter 記錄初始化參數文件中所有項的值 v$lock 通過訪問數據庫會話,設置對象鎖的所有信息 v$session 有個會話的信息 v$sql 記錄 SQL 語句的詳細信息 v$sqltext 記錄 SQL 語句的語句信息 v$bgprocess 顯示后臺進程信息 v$process 當前進程的信息
到此,相信大家對“Oracle 的體系結構和物理、邏輯存儲結構介紹”有了更深的了解,不妨來實際操作一番吧!這里是丸趣 TV 網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!