Oracle數據庫存儲結構--物理存儲結構

數據庫存儲結構:分為物理存儲結構和邏輯存儲結構。

物理存儲結構:操作系統層面如何組織和管理數據

邏輯存儲結構:Oracle數據庫內部數據組織和管理數據,數據庫管理系統層面如何組織和管理數據


存儲結構

在Oracle數據庫的存儲結構包括物理存儲結構和邏輯存儲結構。

物理存儲結構:主要用于描述Oracle數據庫外部數據的存儲,即在操作系統中如何組織和管理數據,與具體的操作系統有關;

邏輯存儲結構:主要描述Oracle數據庫內部數據的組織和管理方式,與操作系統沒有關系。 物理存儲結構是邏輯存儲結構在物理上的、可見的、可操作的、具體的體現形式。

Oracle的物理存儲結構 ? ? ?

物理存儲結構是指從物理角度分析數據庫的構成,即Oracle數據庫創建后所使用的操作系統文件。

Oracle邏輯存儲結構 ? ?

數據庫的邏輯結構是從邏輯的角度分析數據庫的構成,即創建數據庫后形成的邏輯概念之間的關系。

Oracle數據庫物理存儲結構 ? ? ? ? ?

Oracle 數據庫是一個相關操作系統文件的集合,Oracle 用它們來存儲相關的信息。物理存儲結構是指從物理角度分析Oracle數據庫創建后所使用的一系列操作系統文件。

物理存儲結構


各種文件的功能:

數據文件:用于存儲數據庫中的所有數據;

控制文件:用于記錄和描述數據庫的物理存儲結構信息;

重做日志文件:用于記錄外部程序(用戶)對數據庫的改變操作;

歸檔文件:用于保存已經寫滿的重做日志文件;

初始化參數文件:用于設置數據庫啟動時的參數初始值;

跟蹤文件:用于記錄用戶進程、數據庫后臺進程等的運行情況;

口令文件:用于保存具有SYSDBA,SYSOPER權限的用戶名和SYS用戶口令;

警告文件:用于記錄數據庫的重要活動以及發生的錯誤;

備份文件:用于存放數據庫備份所產生的文件。


Oracle物理結構主要包括以下三種文件類型:

數據文件 數據文件的擴展名為.DBF

控制文件 控制文件的擴展名為.CTL

重做日志文件 日志文件的擴展名為.LOG

數據文件

數據文件的內容

用于保存數據庫中所有數據的文件,擴展名為DBF。

Oracle數據庫中的每個數據文件都具有兩個文件號,用于唯一地確定一個數據文件。

絕對文件號:用于在整個數據庫范圍內唯一標識一個數據文件;

相對文件號:用于在表空間范圍內唯一標識一個數據文件。

數據文件與表空間的關系為(n:1)

數據文件的查看 ? ?

要了解oracle數據庫數據文件的信息,可以通過以下三種方式查詢。

操作系統路徑中

數據字典表 ? dba_data_files V$datafile

通過OEM查看

dba_data_files視圖字段說明

重做日志文件

重做日志文件的概念

在Oracle中,日志文件也叫做重做日志文件或重演日志文件(Redo Log Files)。

重做日志文件,保存了用戶對數據庫所作的更新操作(DDL、DML),包含的主要信息是記錄事務的開始和結束、事務中每項操作的對象和類型、更新操作前后的數據值等。

如果系統出現的故障,并且修改的數據沒有保存到數據文件中,那么就可以利用日志文件找到數據的修改,避免因為故障而丟失數據。

重做日志文件是由重做記錄構成的,每個重做記錄由一組修改相量組成。

修改向量記錄了對數據庫中某個數據塊所做的修改。

用戶對數據庫所做的修改記錄過程

1. 先記錄到重做日志緩沖區 當用戶進程發起數據修改請求(如插入、更新、刪除操作),服務器進程首先會把該操作的詳細信息(像修改的表名、行標識、舊值和新值等)記錄到重做日志緩沖區。這么做是為了確保在任何情況下(包括系統故障),對數據庫的修改操作都有跡可循,以保證數據的可恢復性和一致性。

2. 并行處理寫入日志文件與修改數據高速緩沖區 寫入重做日志文件:日志寫入進程(LGWR)會將重做日志緩沖區中的內容及時寫入重做日志文件。特別是在事務提交時,LGWR 會確保所有與該事務相關的重做日志記錄都被寫入磁盤上的重做日志文件,這是事務提交的一個關鍵步驟,因為只有當日志記錄安全存儲在磁盤上,事務才算真正提交。 修改數據高速緩沖區:在將操作信息記錄到重做日志緩沖區后,服務器進程會同時處理數據高速緩沖區。如果相關的數據塊已經在數據高速緩沖區中,服務器進程會直接在內存里對這些數據塊進行修改;若數據塊不在緩沖區,服務器進程會從數據文件中讀取相應的數據塊到緩沖區,然后進行修改。數據高速緩沖區的作用是減少磁盤 I/O 操作,提高數據訪問效率。

3. 日志先行原則(Write - Ahead Logging,WAL) 這里要強調的是日志先行原則,即事務提交前,必須保證重做日志記錄已寫入重做日志文件,但這并不意味著要等日志寫入文件后才開始修改數據高速緩沖區。日志先行主要是為了保證在數據庫出現故障時(如實例崩潰),可以依據重做日志文件中的記錄將未完成的事務重新執行,確保已提交事務的數據不會丟失。

所以,數據修改時,是先記錄到重做日志緩沖區,之后寫入重做日志文件和修改數據高速緩沖區的操作是并行進行的。

利用重做日志文件恢復數據庫是通過事務的重做(REDO)或回退(UNDO)實現的。

重做:指由于某些原因導致事務對數據庫的修改在寫入數據文件之前丟失了,此時就可以利用重做日志文件重做該事務對數據庫的修改操作。

回退:指如果用戶在事務提交之前要撤銷事務,Oracle將通過重做記錄中的回退信息撤銷事務對數據庫所做的修改。

為了保證LGWR進程的正常進行,通常采用重做日志文件組(GROUP),每個組中包含若干完全相同的重做日志文件成員(MEMBER),這些成員文件相互鏡像。 同時向當前文件組中每個成員文件寫信息。

重做日志文件的工作過程

每個數據庫至少需要兩個重做日志文件組,采用循環寫的方式進行工作。當一個重做日志文件組寫滿后,進程LGWR就會移到下一個日志文件組,稱為日志切換,同時信息會寫到控制文件中。

重做日志文件組工作流程

日志文件的查看

我們可以通過以下方式查看重做日志文件。

操作系統路徑中

數據字典表: V$logfile

通過OEM查看 是否歸檔模式使用: v$database

?重做日志文件組的狀態

CURRENT:當前Oracle數據庫正在使用的聯機重做日志文件組。

ACTIVE:如果處于這一狀態,表示雖然當前并未使用,不過該文件中內容尚未歸檔,或者文件中的數據沒有全部寫入數據文件,一旦需要實例恢復,必須借助該文件中保存的內容。 INACTIVE:表示對應的聯機重做日志文件中的內容已被妥善處理,該組聯機重做日志當前處于空閑狀態。

控制文件

控制文件的性質:

控制文件描述了整個數據庫的物理結構

控制文件是一個很小的二進制文件

數據控制文件一般在安裝Oracle系統時自動創建,并且其存放路徑由服務器參數文件SPFILEsid.ora的CONTROL_FILES參數值來確定。

在加載數據庫時,實例必須首先通過初始化參數文件找到數據庫的控制文件

在數據庫運行期間,控制文件始終在不斷更新,以便記錄數據文件和重做日志文件的變化

每個數據庫至少擁有一個控制文件,一個數據庫也可以同時擁有多個控制文件

分配在不同的物理硬盤中,以免數據庫或硬盤損壞時,能夠利用備份的控制文件啟動數據庫實例,可以提高數據庫的可靠性?

控制文件的內容:

數據庫名稱和標識;

數據庫創建的時間;

表空間名稱;

數據文件和重做日志文件的名稱和位置;

當前重做日志文件序列號;

數據庫檢查點的信息;

回退段的開始和結束;

重做日志的歸檔信息;

備份信息;

數據庫恢復所需要的同步信息。?

控制文件管理策略

Oracle建議最少有兩個控制文件,通過多路鏡像技術,將多個控制文件分散到不同的磁盤中。

在數據庫運行過程中,始終讀取CONTROL_FILES參數指定的第一個控制文件,并同時寫CONTROL_FILES參數指定的所有控制文件。如果其中一個控制文件不可用,則必須關閉數據庫并進行恢復。

每次對數據庫結構進行修改后(添加、修改、刪除數據文件、重做日志文件),應該及時備份控制文件。?

控制文件的查看

操作系統路徑中

數據字典表: ? V$controlfile

通過OEM查看?

?控制文件中的最大化參數包括:

MAXLOGFILES:最大重做日志文件組數量;

MAXLOGMEMBERS:重做日志文件組中最大成員數量;

MAXLOGHISTORY:最大歷史重做日志文件數量;

MAXDATAFILES:最大數據文件數量;

MAXINSTANCES:可同時訪問的數據庫最大實例個數。

初始化參數文件

創建服務器初始化參數文件

服務器初始化參數文件必須根據傳統的文本初始化參數文件創建,且創建必須在實例啟動之前完成。用戶必須具有SYSDBA或SYSOPER權限。

步驟:

創建一個文本初始化參數文件,文件中包含所有參數設置;

連接到Oracle數據庫;

利用文本初始化參數文件創建服務器端初始化參數文件。

語法:CREATE SPFILE [='path\filename'] FROM ? ? ? ? ? ? ? ? ?

PFILE='path\filename';?

注意:執行CREATE SPFILE命令時,不需要啟動數據庫實例!

查看初始化參數設置

參數文件的存儲

操作系統路徑中Oraclehome下dbs文件夾下。

SHOW PARAMETERS命令 ? ?

在SQL*Plus中查看當前數據庫實例正在使用的所有參數或某個參數的參數值。 V$PARAMETER或V$PARAMETER2 ? ?

通過這兩個動態性能視圖,可以查看當前數據庫實例正在使用的參數的設置情況。

V$SPPARAMETER ? ?

通過該動態性能視圖,可以查看包括服務器初始化參數文件中的所有初始化參數的設置情況。 利用企業管理器,查看數據庫參數設置

參數文件概述

參數文件的修改 注意:

最好不要直接更改里面的參數,需要更改使用alter system命令或OEM工具。 ? ? ?

例如,修改動態參數JOB_QUERY_PROCESSES,可以根據修改后立即生效、下一次啟動數據庫實例時生效,以及當前立即生效且下一次數據庫實例啟動也生效這3種情況進行SCOPE子句的設置。

SQL>ALTER SYSTEM SET JOB_QUERY_PROCESSES=50 SCOPE=MEMORY; SQL>ALTER SYSTEM SET JOB_QUERY_PROCESSES=50 SCOPE=SPFILE; SQL>ALTER SYSTEM SET JOB_QUERY_PROCESSES=50 SCOPE=BOTH;?

修改服務器參數文件中的參數

ALTER SYSTEM SET parameter_name=value

SCOPE=[SPFILE|MEMORY|BOTH];?

SCOPE?子句

說????明

SCOPE=SPFILE

對參數的修改僅記錄在服務器初始化參數文件中,對動態參數和靜態參數都適用,修改后的參數在下一次數據庫啟動時生效

SCOPE=MEMORY

對參數的修改僅記錄在內存中只適合動態參數的修改,修改后立即生效。由于修改結果并不會保存到服務器初始化參數文件中,因此下一次啟動數據庫實例時仍然采用修改前的參數設置

SCOPE=BOTH

對參數的修改同時保存到服務器初始化參數文件和內存中,只適合對動態參數的修改,更改后立即生效,并且下一次啟動數據庫實例時將使用修改后的參數設置。當執行ALTER?SYSTEM語句時,如果沒有指定SCOPE子句,那么Oracle默認將SCOPE設置為BOTH

?修改服務器參數文件中的參數

注意:

動態參數是指在數據庫運行過程中可以進行修改并能立即生效的參數,

靜態參數是指修改后只能在數據庫實例下一次啟動時才能生效的參數。

如果當前數據庫實例使用的是服務器初始化參數文件,那么對靜態參數修改時,SCOPE子句只能設置為SPFILE。

如果當前數據庫實例使用的是文本初始化參數文件,那么SCOPE子句的設置只能為MEMORY。

導出服務器初始化參數文件

原因

創建服務器初始化參數文件的備份;

為了便于查找系統故障原因等,需要獲取當前數據庫實例所使用的所有初始化參數值;

為了修改服務器初始化參數文件中參數值,先將服務器初始化參數文件導出為文本初始化參數文件,然后對文本初始化參數文件中的參數進行修改,最后根據修改后的文本初始化參數文件創建新的服務器初始化參數文件。?

語法 CREATE PFILE[='path'] FROM SPFILE [='path']

歸檔日志文件?

ORACLE數據庫可以運行在兩種模式下: ? 歸檔日志模式(ARCHIVELOG模式) 重做日志寫滿被覆蓋前,啟動歸檔進程(ARCH), 將寫滿的重做日志先進行備份,寫入歸檔日志文件, 再對被備份的日志擦除開始寫新的在線日志文件。 ? 非歸檔日志模式(NOARCHIVELOG模式) ?重做日志寫滿了的時候,以前在線重做日志從頭擦除開始繼續寫。 Oracle默認系統設置為NOARCHIVELOG模式。 在實際的生產運行環境下,要使用ARCHIVELOG模式。?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/71989.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/71989.shtml
英文地址,請注明出處:http://en.pswp.cn/web/71989.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

歌詞相關實現

歌詞相關 歌詞數據模型&#xff1a; // Lyric.swift class Lyric: BaseModel {/// 是否是精確到字的歌詞var isAccurate:Bool false/// 所有的歌詞var datum:Array<LyricLine>! }// LyricLine.swift class LyricLine: BaseModel {/// 整行歌詞var data:String!/// 開始…

紡織服裝制造行業現狀 內檢實驗室系統在紡織服裝制造行業的應用

在紡織服裝制造行業&#xff0c;內檢實驗室LIMS系統&#xff08;實驗室信息管理系統&#xff09;已成為提升檢測效率、優化質量控制和滿足行業合規性要求的關鍵工具。隨著行業競爭的加劇和消費者對產品質量要求的提高&#xff0c;紡織服裝制造企業需要更加高效、準確的檢測流程…

K8s 1.27.1 實戰系列(十一)ConfigMap

ConfigMap 是 Kubernetes 中管理非敏感配置的核心資源,通過解耦應用與配置實現靈活性和可維護性。 一、ConfigMap 的核心功能及優勢 ?1、配置解耦 將配置文件(如數據庫地址、日志級別)與容器鏡像分離,支持動態更新而無需重建鏡像。 ?2、多形式注入 ?環境變量:將鍵值…

3分鐘復現 Manus 超強開源項目 OpenManus

文章目錄 前言什么是 OpenManus構建方式環境準備克隆代碼倉庫安裝依賴配置 LLM API運行 OpenManus 效果演示總結個人簡介 前言 近期人工智能領域迎來了一位備受矚目的新星——Manus。Manus 能夠獨立執行復雜的現實任務&#xff0c;無需人工干預。由于限制原因大部分人無法體驗…

從零開始學機器學習——構建一個推薦web應用

首先給大家介紹一個很好用的學習地址:https://cloudstudio.net/columns 今天,我們終于將分類器這一章節學習完活了,和回歸一樣,最后一章節用來構建web應用程序,我們會回顧之前所學的知識點,并新增一個web應用用來讓模型和用戶交互。所以今天的主題是美食推薦。 美食推薦…

【最后203篇系列】014 AI機器人-1

說明 終于開張了&#xff0c;我覺得AI機器人是一件真正正確&#xff0c;具有商業價值的事。 把AI機器人當成一筆生意&#xff0c;我如何做好這筆生意&#xff1f;一端是業務價值&#xff0c;另一端是技術支撐。如何構造高質量的內容和服務&#xff0c;如何確保技術的廣度和深度…

【大模型統一集成項目】如何封裝多個大模型 API 調用

&#x1f31f; 在這系列文章中&#xff0c;我們將一起探索如何搭建一個支持大模型集成項目 NexLM 的開發過程&#xff0c;從 架構設計 到 代碼實戰&#xff0c;逐步搭建一個支持 多種大模型&#xff08;GPT-4、DeepSeek 等&#xff09; 的 一站式大模型集成與管理平臺&#xff…

AI4CODE】3 Trae 錘一個貪吃蛇的小游戲

【AI4CODE】目錄 【AI4CODE】1 Trae CN 錐安裝配置與遷移 【AI4CODE】2 Trae 錘一個 To-Do-List 這次還是采用 HTML/CSS/JAVASCRIPT 技術棧 Trae 錘一個貪吃蛇的小游戲。 1 環境準備 創建一個 Snake 的子文件夾&#xff0c;清除以前的會話記錄。 2 開始構建 2.1 輸入會…

【簡答題002】Java變量簡答題

博主會經常補充完善這里面問題的答案。希望可以得到大家的一鍵三連支持&#xff0c;你的鼓勵是我堅持下去的最大動力&#xff01;謝謝&#xff01; 001 什么是Java變量&#xff1f; Java變量是用來存儲數據并在程序中引用的命名空間。 002 Java變量有哪些類型&#xff1f; J…

從零開發Chrome廣告攔截插件:開發、打包到發布全攻略

從零開發Chrome廣告攔截插件&#xff1a;開發、打包到發布全攻略 想打造一個屬于自己的Chrome插件&#xff0c;既能攔截煩人的廣告&#xff0c;又能優雅地發布到Chrome Web Store&#xff1f;別擔心&#xff0c;這篇教程將帶你從零開始&#xff0c;動手開發一個功能強大且美觀…

基于騰訊云高性能HAI-CPU的跨境電商客服助手全鏈路解析

跨境電商的背景以及痛點 根據Statista數據&#xff0c;2025年全球跨境電商市場規模預計達6.57萬億美元&#xff0c;年增長率保持在12.5% 。隨著平臺規則趨嚴&#xff08;如亞馬遜封店潮&#xff09;&#xff0c;更多賣家選擇自建獨立站&#xff0c;2024年獨立站占比已達35%。A…

maven的項目構建

常用構建命令 命令說明mvn clean清理編譯結果&#xff08;刪掉target目錄&#xff09;mvn compile編譯核心代碼&#xff0c;生成target目錄mvn test-compile編譯測試代碼&#xff0c;生成target目錄mvn test執行測試方法mvn package打包&#xff0c;生成jar或war文件mvn insta…

定時任務和分布式任務框架

文章目錄 一 Spring Task1.@Scheduled注解介紹2 基本用法(1)使用@EnableScheduling修飾啟動類(2)創建定時任務的類(3)fixedDelay(4)fixedRate(5)cron3 執行多個任務4 設置異步執行5 @Async使用自定義線程池6 缺點二 xxl-job介紹架構圖與其他任務調度平臺的比較運行調…

git安裝,配置SSH公鑰(查看版本、安裝路徑,更新版本)git常用指令

目錄 一、git下載安裝 1、下載git 2、安裝Git?&#xff1a; 二、配置SSH公鑰 三、查看安裝路徑、查看版本、更新版本 四、git常用指令 1、倉庫初始化與管理 2、配置 3、工作區與暫存區管理 4、提交 5、分支管理 6、遠程倉庫管理 7、版本控制 8、其他高級操作 一…

[Web]ServletContext域(Application)

簡介 Web應用的Application域的實現是通過ServletContext對象實現的。整個Web應用程序的所有資源共享這個域。生命周期與Web應用程序相同&#xff0c;即當前Web應用程序啟動時&#xff08;以服務器視角而非訪客視角&#xff09;出生&#xff0c;Web應用服務程序關閉時停止。 通…

qt c++ 進程和線程

在Qt C開發中&#xff0c;進程&#xff08;Process&#xff09;和線程&#xff08;Thread&#xff09;是兩種不同的并發模型&#xff0c;各有適用場景和實現方式。以下是詳細對比和實際開發中的用法總結&#xff1a; 一、進程&#xff08;Process&#xff09; 進程是操作系統資…

【鴻蒙開發】OpenHarmony調測工具hdc使用教程(設備開發者)

00. 目錄 文章目錄 00. 目錄01. OpenHarmony概述02. hdc簡介03. hdc獲取04. option相關的命令05. 查詢設備列表的命令06. 服務進程相關命令07. 網絡相關的命令08. 文件相關的命令09. 應用相關的命令10. 調試相關的命令11. 常見問題12. 附錄 01. OpenHarmony概述 OpenHarmony是…

手寫簡易Tomcat核心實現:深入理解Servlet容器原理

目錄 一、Tomcat概況 1. tomcat全局圖 2.項目結構概覽 二、實現步驟詳解 2.1 基礎工具包&#xff08;com.qcby.util&#xff09; 2.1.1 ResponseUtil&#xff1a;HTTP響應生成工具 2.1.2 SearchClassUtil&#xff1a;類掃描工具 2.1.3 WebServlet&#xff1a;自定義注解…

【Java開發指南 | 第三十四篇】IDEA沒有Java Enterprise——解決方法

讀者可訂閱專欄&#xff1a;Java開發指南 |【CSDN秋說】 文章目錄 1、新建Java項目2、單擊項目名&#xff0c;并連續按兩次shift鍵3、在搜索欄搜索"添加框架支持"4、勾選Web應用程序5、最終界面6、添加Tomcat 1、新建Java項目 2、單擊項目名&#xff0c;并連續按兩次…

在MATLAB中實現PID控制仿真

在MATLAB中實現PID控制仿真可以通過代碼編程或Simulink圖形化建模兩種方式完成。以下是兩種方法的詳細操作步驟和示例&#xff1a; 方法1&#xff1a;使用MATLAB腳本編程&#xff08;基于控制系統工具箱&#xff09; 步驟1&#xff1a;定義被控對象的數學模型 假設被控對象是…