開啟主選單

求真百科

物理結構

來自 呢圖網 的圖片

中文名稱;物理結構

又稱;物理存儲結構

含義;數據元素的表示和關係的表示

數據結構在計算機中的表示(映像)稱為數據的物理(存儲)結構。它包括數據元素的表示和關係的表示。 物理結構,即oracle數據庫使用的操作系統文件結構。對於數據庫物理結構文件,不同的oracle版本,不同的操作系統平台上有不同的存儲目錄結構。[1]

目錄

釋義

數據結構在計算機中的表示(映像)

分類

數據庫的物理結構文件按其作用可以分為三類:

數據文件

日誌文件

控制文件

重做日誌文件

重做日誌文件記錄對數據庫的所有修改信息。它是三類文件中最複雜的一類文件,也是保證數據庫安全與數據庫備份與恢復有直接關係的文件。

日誌文件組與日誌成員

在每一個oracle數據庫中,至少有兩個重做日誌文件組。每組有一個個或多個重做日誌文件,即日誌成員。同一組中的成員是鏡像關係,它們存儲的內容是一模一樣的。oracle在寫日誌時,以一個日誌組為邏輯單位寫入,只在將日誌都寫入日誌組中的每個成員文件中後,寫日誌才完成

日誌工作原理

oracle有多個日誌文件組,當一個日誌文件組中所有的成員所有的成員同時被寫滿數據時,系統自動轉換到下一個日誌文件組,這個轉換過程稱為日誌切換。

當日誌切換後,會給前一個日誌組編一個號,用于歸檔日誌的編號,這個編號稱為日誌序列號。此編號由1開始,每切換一次,序列號自動加1,最大值受參數MAXLOGHISTORY限制,該參數的最大值為65534。

當oracle把最後一個日誌組寫滿了以後,自動轉向第一個日誌組,這時,再向第一個日誌組寫日誌的時候,如果數據庫運行在非歸檔模式下,這個日誌組中的原有日誌信息就會被覆蓋。

使用以下語句查詢日誌文件信息:

sql>select * from v$log

相關字段說明如下:

GROUP#:日誌文件組號

THREAD#:日誌文件線程號,一般為1,雙機容時為2

SEQUENCE#:日誌序列號

BYTES:日誌文件大小

MEMBERS:該組的日誌成員個數

ARC:該組日誌信息是否已經完成歸檔

STATUS:該組狀態(CURRENT:表示當前正在使用的組;NACTIVE:表示非活動組;ACTIVE:表示歸檔未完成)

FIRST_CHANGE#:系統改變號SCN,也叫檢查點號

FIRST_TIME:系統改變時間

DBA可以使用下列命令進行強制日誌切換

sql>alter system switch logfile

NOARCHIVELOG/ARCHIVELOG

NOARCHIVELOG是非歸檔模式,如果數據庫運行在這種模式下,當日誌切換時,新切換到的日誌組中的日誌信息會被覆蓋。ARCHIVELOG:歸檔模式,如果數據庫運行在這種模式下,日誌會被歸檔存儲,產生歸檔日誌,且在未歸檔之前,日誌不允許被覆蓋寫入。

要確認數據庫的歸檔方式,可以查詢數據字典v$database:

sql>select log_mode from v$database

要了解歸檔日誌的信息,可以查詢數據字典v$archived_log。

要將數據庫改為歸檔模式:

a.alter database archivelog

b.設置初始化參數LOG_ARCHIVE_START=TRUE

c.設置歸檔文件目標存儲路徑 LOG_ARCHIVE_DEST=C:\ORA\ARCHIVE

d.設置歸檔文件命名格式參數 LOG_ARCHIVE_FORMAT="ORCK%T%S.ARC"。這個格式中的%S表示日誌序列號,自動左邊補零;%s表示日誌序列號,自動左邊不補零;%T表示日誌線程號,左邊補零;%t表示日誌線程號不補零。

e.重新啟動數據庫

CKPT進程

CKPT進程保證有修改過的數據庫緩衝區中的數據都被寫入到數據文件,日誌文件、數據文件、數據庫頭和控制文件中都有寫入檢查點標記。數據庫在恢復時,只需提供自上一個檢查以來所做的修改。檢查點完成時系統將更新數據庫數據庫頭和控制文件。

參數LOG_CHECKPOINT_TIMEOUT決定一個檢查點發生的時間間隔。LOG_CHECKPOINT_INTERVAL決定一個檢查需要填充的日誌文件塊的數量。檢查點號,也稱系統改變號(SCN),它標識一個檢查點。可以通過v$log查詢日誌文件的檢查點信息,通過v$datafile查詢數據文件的檢查點信息,通過v$database查詢數據庫頭的檢查點信息。三個地方的檢查點號相同,如果不同,說明發明數據庫不同步,此時數據庫肯定無法正常啟動。

增加與刪除日誌文件組、日誌成員

(詳細語法請參考oracle文檔)

alter database [database] add logfile [group integer] filespec[,[group...

alter database [database] add logfile (...)

alter database [database] drop logfile [grout integer]

alter database [database] add logfile member "filespec" [reuse] to group integer

alter database [database] drop logfile member "filename","filename"...

alter database [database] rename file "filename" to "filename"

清除日誌文件數據

alter database [database] clear [unarchived] logfile group integer|filespec

控制文件

控制文件是一個二進制文件,用來描述數據庫的物理結構,一個數據庫只需要一個控制文件,控制文件的內容包括:

數據庫名及數據庫唯一標識

數據文件和日誌文件標識

數據庫恢復所需的同步信息,即檢查點號

控制文件由參數control_files指定,格式如下:

control_files=("home/app/.../control01.ctl","home/app/.../control02.ctl")

參數中各個文件是鏡像關係,也就是說,幾個文件中只要有一個文件完好,數據庫就可以正常運行。

以下語句查詢控制文件的信息:

sql>select * from v$controlfile

如果控制文件損壞或丟失,數據庫將終止並且無法啟動,所以,要對控制文件進行鏡象,手工鏡像步驟如下:

a.關閉數據庫

b.複製控制文件

c.修改參數文件,加入新增的控制文件位置描述

d.重新啟動數據庫

另外注意,控制文件中還包含幾個服務器參數的設置,如果修改這些參數的值,剛需要重新創建控制文件,這些參數是:

MAXLOGFILES:最大日誌文件個數

MAXLOGMEMBERS:最大日誌成員個數

MAXLOGHISTORY:最大歷史日誌個數

MAXDATAFILES:最大數據文件個數

MAXINSTANCES:最大實例文件個數

所有修改數據庫結構的命令都會引起控制文件的改變。同時出會記錄在oracle跟蹤文件中,跟蹤文件的名稱為alter_SID.log,路徑如下:

d:\oracle\product\10.1.0\admin\DB_NAME\bdump\SIDALRT.log(unix是alter_SID.ora)

也可以在參數文件中指定跟蹤文件的存儲路徑,後台進程跟蹤文件目錄由參數background_dump_dest指定,用戶跟蹤文件位置由參數user_bdump_dest指定,如:

background_bdump_dest=/u01/app/oracle/oralog/bdump

user_bdump_dest=/u01/app//oralog/udump

數據文件

數據文件用來存儲數據庫的數據,如表、索引等。讀取數據時,系統首先從數據庫文件中讀取數據,並存儲到SGA的數據緩衝區中。這是為了減少I/O,如果讀取數據時,緩衝區中已經有要讀取的數據,就不需要再從磁盤中讀取了。存儲數據時也是一樣,事務提交時改變的數據先存儲到內存緩衝區中,再由oracle後台進程DBWR決定如何將其寫入到數據文件中。

查詢數據文件的信息

sql>select * from dba_data_files或

sql>select * from v$datafile(此數據字典包含文件的動態信息)

一個數據文件只與一個數據庫相聯繫。數據文件的大小是可以改變的。可以通過以下語句查詢表空間的空間空閒量

sql>select * from dba_free_space

修改數據文件的大小

sql>alter database datafile "d:\...\df1.dbf" resize 800m

數據庫文件的自動擴展特性

請看下面的例子:

sql>alter tablespace tbs1 add datafile "d:\...\df2.dbf" size 500m autoextend on next 50m maxsize 1000m

sql>alter database mydb1 datafile "d:\...\df2.dbf","d:\...\df3.dbf" autoexetend off

sql>alter database mydb1 datafile "d:\...\df2.dbf","d:\...\df3.dbf" autoexetend on next 30m maxsize unlimited

相關視頻

文件的物理結構

參考資料

  1. 什麼是邏輯結構以及物理結構- ORZ!!! , 博客園,發表時間:2018年8月31日