Oracle數(shù)據(jù)庫的系統(tǒng)結(jié)構(gòu)
1.Oracle數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu)概述
Oracle數(shù)據(jù)庫由存放在磁盤上的數(shù)據(jù)庫(DB)和對磁盤上的數(shù)據(jù)庫進(jìn)行管理的數(shù)據(jù)庫管理系統(tǒng)(DBMS)兩部分構(gòu)成,分別對應(yīng)著數(shù)據(jù)庫的存儲結(jié)構(gòu)和軟件結(jié)構(gòu)。
Oracle數(shù)據(jù)庫的存儲結(jié)構(gòu)(StorageStructure)分為物理存儲結(jié)構(gòu)和邏輯存儲結(jié)構(gòu)兩種,分別描述了在操作系統(tǒng)中和數(shù)據(jù)庫系統(tǒng)內(nèi)部數(shù)據(jù)的組織管理方式。其中,物理存儲結(jié)構(gòu)表現(xiàn)為操作系統(tǒng)中一系列文件)邏輯存儲結(jié)構(gòu)是對物理存儲結(jié)構(gòu)的邏輯組織與管理。
Oracle數(shù)據(jù)庫的軟件結(jié)構(gòu),即Oracle實(shí)例(Instance),包括內(nèi)存結(jié)構(gòu)與后臺進(jìn)程結(jié)構(gòu)兩部分。
具體關(guān)系如下圖所示:
用戶的所有操作都是通過實(shí)例完成的,首先在內(nèi)存結(jié)構(gòu)中進(jìn)行,在一定條件下由數(shù)據(jù)庫的后臺進(jìn)程結(jié)構(gòu)寫入數(shù)據(jù)庫的物理存儲結(jié)構(gòu)做永久保存。
2.Oracle數(shù)據(jù)庫存儲結(jié)構(gòu)
oracle 數(shù)據(jù)庫的存儲結(jié)構(gòu)分為物理存儲結(jié)構(gòu)和邏輯存儲結(jié)構(gòu)兩種。物理存儲結(jié)構(gòu)主要用于描述oracle 數(shù)據(jù)庫外部數(shù)據(jù)的存儲,即在操作系統(tǒng)層面中如何組織和管理數(shù)據(jù),與具體的操作系統(tǒng)有關(guān)。邏輯存儲結(jié)構(gòu)主要描述oracle 數(shù)據(jù)庫內(nèi)部數(shù)據(jù)的組織和管理方式,即在數(shù)據(jù)庫管理系統(tǒng)的層面中如何組織和管理數(shù)據(jù),與操作系統(tǒng)沒有關(guān)系。
物理存儲結(jié)構(gòu)具體表現(xiàn)為一系列的操作系統(tǒng)文件,是可見的;而邏輯存儲結(jié)構(gòu)時候物理存儲結(jié)構(gòu)的抽象體現(xiàn),是不可見的,可以通過查詢數(shù)據(jù)庫數(shù)據(jù)字典了解邏輯結(jié)構(gòu)信息。
物理存儲結(jié)構(gòu)主要指的是存儲在磁盤上的數(shù)據(jù)文件、控制文件、重做日志文件、歸檔文件等。 邏輯存儲結(jié)構(gòu)包括表空間、段、區(qū)和塊4種。
oracle 數(shù)據(jù)庫的物理存儲結(jié)構(gòu)與邏輯存儲結(jié)構(gòu)既相互獨(dú)立又相互聯(lián)系,如下圖:
從物理角度上看,數(shù)據(jù)庫由數(shù)據(jù)文件構(gòu)成,數(shù)據(jù)存儲在數(shù)據(jù)文件中,從邏輯角度上看,數(shù)據(jù)庫是由表空間構(gòu)成的,數(shù)據(jù)存儲在表空間中。一個表空間包含一個或者多個數(shù)據(jù)文件,但一個數(shù)據(jù)文件只能屬于一個表空間。
物理存儲結(jié)構(gòu)
控制文件
(1)控制文件是ORALCE數(shù)據(jù)庫中最重要的物理文件,用于描述整個數(shù)據(jù)庫的結(jié)構(gòu)信息。
控制文件是一個二進(jìn)制文件,由ORACLE進(jìn)程讀/寫,在數(shù)據(jù)庫運(yùn)行于維護(hù)階段,數(shù)據(jù)文件及重做日志文件的結(jié)構(gòu)變化信息都記錄在控制文件中。
Oracle建議最少有兩個控制文件,通過多路鏡像技術(shù),將其分散到不同的物理磁盤中。
(2)一個控制文件包括:
DB名稱和標(biāo)識
DB創(chuàng)建的時間
表空間名稱
數(shù)據(jù)文件和重做日志文件的名稱和位置
當(dāng)前重做日志文件的序號
檢查點(diǎn)的信息
回退段的開始和結(jié)束
重做日志的歸檔信息
備份信息
(3)V$CONTROLFILE:
列出了與實(shí)例有關(guān)的所有控制文件的名稱和狀態(tài)
SHOW PARAMETERS CONTROL_FILES: 列出控制文件的名稱、狀態(tài)和位置
數(shù)據(jù)文件
(1)數(shù)據(jù)文件用于存儲數(shù)據(jù)庫中的所有數(shù)據(jù),一個數(shù)據(jù)庫由多個數(shù)據(jù)文件構(gòu)成。
(2) 與數(shù)據(jù)文件相關(guān)的數(shù)據(jù)字典主要有:
v$datafile
dba_data_files
(3). 數(shù)據(jù)文件默認(rèn)情況下都是以.dbf結(jié)尾的文件,默認(rèn)情況下與控制文件同一個目錄.
重做日志文件
(1)重做日志文件用于記錄對數(shù)據(jù)庫的變更操作,在用戶對數(shù)據(jù)庫的操作出現(xiàn)故障時,可使用該文件進(jìn)行恢復(fù),以保證數(shù)據(jù)庫系統(tǒng)的安全.
(2)重做日志文件是成組使用的,即日志文件組,每個數(shù)據(jù)庫應(yīng)至少有兩個重做日志文件組,采用循環(huán)寫的方式工作。每個組可以有一個或多個日志文件,同一組日志文件可進(jìn)行鏡像,且鏡像的日志文件應(yīng)存儲在不同的物理磁盤中.
(3)查看重做日志文件信息
V$log:查詢重做日志文件組的基本信息。
V$logfile:查詢重做日志文件的信息。
歸檔日志文件
1、數(shù)據(jù)庫運(yùn)行模式
(1) 非歸檔模式noarchivelog
(2) 歸檔模式archivelog
Oracle數(shù)據(jù)庫邏輯結(jié)構(gòu)
Oracle的邏輯結(jié)構(gòu)是一種層次結(jié)構(gòu)。主要由:表空間、段、區(qū)和數(shù)據(jù)塊等概念組成。邏輯結(jié)構(gòu)是面向用戶的,用戶使用Oracle開發(fā)應(yīng)用程序使用的就是邏輯結(jié)構(gòu)。數(shù)據(jù)庫存儲層次結(jié)構(gòu)及其構(gòu)成關(guān)系,結(jié)構(gòu)對象也從數(shù)據(jù)塊到表空間形成了不同層次的粒度關(guān)系。
一個或多個連續(xù)的oracle 數(shù)據(jù)塊構(gòu)成區(qū),一個或多個區(qū)構(gòu)成段,一個或多個段構(gòu)成表空間,所有表空間構(gòu)成數(shù)據(jù)庫。
數(shù)據(jù)塊(Data Block)
數(shù)據(jù)庫塊大小是在Oracle創(chuàng)建數(shù)據(jù)庫或表空間時設(shè)定的,數(shù)據(jù)塊的大小在創(chuàng)建后是不可以修改的。
數(shù)據(jù)塊是Oracle讀寫數(shù)據(jù)的基本單位,也是輸入/輸出操作的最小單位.
數(shù)據(jù)塊的大小必須是服務(wù)器操作系統(tǒng)塊大小的整數(shù)倍。
(盤)區(qū)(Extent)
1.概念
也稱為數(shù)據(jù)區(qū),是物理上一組連續(xù)的數(shù)據(jù)塊構(gòu)成的邏輯存儲單元。
盤區(qū)是段中數(shù)據(jù)增長的基本單位,即是ORACLE存儲空間分配與回收的最小單位。
一個或多個盤區(qū)組成一個段,當(dāng)一個段的空間被使用完后,系統(tǒng)將自動為該段分配一個新的盤區(qū)。
一個盤區(qū)不能跨越多個文件,因?yàn)樗仨毎B續(xù)的數(shù)據(jù)塊
數(shù)據(jù)段中,盤區(qū)的個數(shù)受盤區(qū)控制參數(shù)控制
2.區(qū)的管理
(1)區(qū)的分配
表空間的本地管理(LOCAL)方式下,區(qū)分配方式:
統(tǒng)一大?。篣NIFORM,指定段的初始區(qū)和后續(xù)區(qū)具有統(tǒng)一的大小。
自動分配:AUTOALLOCATE,由Oracle系統(tǒng)決定后續(xù)區(qū)的大小,用戶不能干預(yù)分配。
表空間的字典管理(DICTIONARY)方式下,區(qū)的分配方式: 使用STORAGE子句設(shè)置存儲參數(shù)。
(2)區(qū)的回收
通常不論區(qū)中的數(shù)據(jù)塊是否被使用,分配給段的區(qū)會一直保留在段中,只有當(dāng)段所屬的對象被刪除時,段中所有的區(qū)才會被回收。
段(Segment)
段是由一個或多個連續(xù)或不連續(xù)的盤區(qū)構(gòu)成的邏輯存儲單元,用來保存特定對象,如表、索引、回滾數(shù)據(jù)、臨時數(shù)據(jù)等。段是表空間的組織單位。
(1)段內(nèi)包含的數(shù)據(jù)區(qū)可以不連續(xù),并且可以跨越多個文件。
(2)段類型
數(shù)據(jù)段:用來存儲表或簇的數(shù)據(jù),普通表數(shù)據(jù)段、分區(qū)表數(shù)據(jù)段、簇數(shù)據(jù)段
索引段:存放索引數(shù)據(jù)(ROWID、索引鍵值)
臨時段:存儲臨時數(shù)據(jù)
回滾(退)段:存儲數(shù)據(jù)庫的回滾信息
表空間(Tablespace)
(1)表空間概念
表空間是ORACLE數(shù)據(jù)庫最大的邏輯存儲單元,一個表空間包含一個或多個數(shù)據(jù)文件,一個數(shù)據(jù)文件只能從屬于一個表空間,數(shù)據(jù)庫對象就是存儲在表空間對應(yīng)的一個或多個數(shù)據(jù)文件中。
(2)表空間類型
在Oracle11g中有以下幾種比較特殊的表空間:
⑴SYSTEM表空間(System Tablespace):系統(tǒng)表空間
⑵SYSAUX表空間(SYSAUX Tablespace):系統(tǒng)輔助表空間
⑶TEMP表空間(Temp Tablespace):臨時表空間
⑷撤消UNDOBS1表空間(Undo Tablespace):撤消表空間
(5)USERS表空間:普通用戶表空間
(6)示例EXAMPLE 表空間:示例表空間
(3)表空間的存儲管理方式
本地管理方式
本地管理(Local)的表空間:
創(chuàng)建本地管理方式的表空間時,可指定區(qū)的分配方式:
自動方式:AUTOALLOCATE (默認(rèn)方式)
統(tǒng)一方式:UNIFORM
字典管理方式
(4)查看表空間信息
V$tablespace:查詢數(shù)據(jù)庫下表空間信息。
Dba_tablespaces:查詢數(shù)據(jù)庫下表空間信息。
到此這篇關(guān)于Oracle數(shù)據(jù)庫的系統(tǒng)結(jié)構(gòu)的文章就介紹到這了,更多相關(guān)Oracle系統(tǒng)結(jié)構(gòu)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
oracle表空間不足ORA-01653的問題:?unable?to?extend?table
這篇文章主要介紹了oracle表空間不足ORA-01653:?unable?to?extend?table的問題?,出現(xiàn)這種表空間不足的問題一般有兩種情況:一種是表空間的自動擴(kuò)展功能沒有打開,另一種確實(shí)是表空間確實(shí)不夠用了,已經(jīng)達(dá)到了擴(kuò)展的極限,本文給大家分享解決方法,需要的朋友參考下2022-08-08關(guān)于ORACLE通過file_id與block_id定位數(shù)據(jù)庫對象遇到的問題引發(fā)的思考
這篇文章主要介紹了關(guān)于ORACLE通過file_id與block_id定位數(shù)據(jù)庫對象遇到的問題引發(fā)的思考,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-03-03Oracle cloud control 12c的啟動、關(guān)閉及獲取安裝信息的方法
這篇文章主要介紹了Oracle cloud control 12c的啟動、關(guān)閉及獲取安裝信息的方法,例如獲取安裝時設(shè)定的各類端口號,URL以及如何啟動、關(guān)閉cloud control等等,需要的朋友可以參考下2014-11-11oracle在導(dǎo)入數(shù)據(jù)時報600錯誤的解決方法
最近在工作中進(jìn)行oracle數(shù)據(jù)庫導(dǎo)入的時候遇到了600錯誤,通過查找相關(guān)的資料,最終終于解決了,下面這篇文章主要給大家介紹了關(guān)于oracle在導(dǎo)入數(shù)據(jù)時報600錯誤的解決方法,需要的朋友可以參考借鑒,下面來一起看看吧。2017-09-09oracle中if/else的三種實(shí)現(xiàn)方式詳解
本文給大家介紹了oracle中if/else的三種實(shí)現(xiàn)方式及注意事項(xiàng),非常不錯,具有參考借鑒價值,需要的朋友參考下吧2017-10-10PL/SQL遠(yuǎn)程備份和恢復(fù)Oracle數(shù)據(jù)庫
這篇文章主要為大家詳細(xì)介紹了PL/SQL遠(yuǎn)程備份和恢復(fù)Oracle數(shù)據(jù)庫的具體方法,感興趣的小伙伴們可以參考一下2016-09-09解決Oracle?DISTINCT?報錯?inconsistent?datatypes:?expected?
這篇文章主要介紹了Oracle DISTINCT報錯inconsistent datatypes:expected-got CLOB(數(shù)據(jù)類型不一致:?應(yīng)為-,但卻獲得?CLOB),本文給大家分享三種解決方案,需要的朋友可以參考下2023-07-07