天天看點

讀書筆記

dbca工具建庫,預設會建立3份控制檔案。

控制檔案管理資料庫的狀态。

控制檔案記錄着資料庫的名稱,資料庫的實體布局。

ckpt程序更新控制檔案資訊,反映系統狀态。而這些資訊在下一次啟動資料庫時又會被用來校驗資料庫的一緻性。

資料庫的正常運作過程中,控制檔案的内容也會時時進行更新,以反映資料庫的變換。

日志檔案中記錄的是redo records,redo records又是由change vectors(改變向量)組成的。每個redo records代表着一個資料塊發生的變化。

一個事務會涉及多個資料塊内容改變,是以會包含多個redo record。

redo records會記錄如下内容:

事務的開始時間

事務的名稱

對象名稱(比如表名)

資料被更新前的狀态,也叫前鏡像(before image)

資料被修改後的狀态,也叫後鏡像(after image)

commit标記:事務是否送出(包括commit rollback)

事務生成的redo records最初儲存在sga中的redo log buffer中,很快就會被寫到redo log file中,觸發這個寫操作的原因:

使用者執行commit操作

累計的redo log達到1m

redo log buffer使用超過了總容量的1/3

redo record記錄了資料的前鏡像和後鏡像,所有對于隻有開始時間而沒有送出标志的事務就必須復原,送出的事務就保持後鏡像即可,最終資料庫達到了一緻性狀态。

oracle資料庫的日志檔案分成兩類:聯機日志檔案和歸檔日志檔案

lgwr程序會不斷的向redo log中寫入日志内容,lgwr必須確定向組内所有成員的寫操作都是成功的。

聯機日志是以一種循環的方式工作的,早前記錄的日志會被較新的日志覆寫掉,較新的日志最終被更新的内容覆寫。

歸檔模式下,lgwr程序能夠覆寫一組聯機日志檔案的前提是,這組聯機日志已經完成歸檔。

如果資料庫當機,日志中的内容(包括已經結束和未結束的事務)都要重新應用到資料檔案上,這個過程叫做前滾roll-forward。

前滾的結果是吧資料恢複到資料庫當機時的狀态,但是資料庫當機時刻,資料庫裡還有很多沒有完成的使用者事務-未決事務,對于這些事務,資料庫統一做復原處理,這個過程就叫做復原roll-back

前滾是利用日志内容完成的,復原是以undo表空間為基礎的。

日志檔案(包括聯機日志、歸檔日志)是oracle資料庫高可用性的基礎。

一個資料庫執行個體使用的聯機日志就叫做一個日志線程(redo thread)。

select thread# from v$log;

參數檔案是用來存放資料庫初始參數配置,比如sga的大小,控制檔案的位置等。

oracle獲得參數檔案的方法如下:

目前的環境變量oracle_sid的值

在$oracle_home/dbs目錄下尋找參數檔案,尋找順序是spfile<oracle_sid>.ora spfile.ora init<oracle_sid>.ora

可見oracle首先群钊的是資料庫的spfile,其次是通用的spfile,最後才是pfile

初始化參數檔案中,參數可以分成以下幾組:

(1)這組參數必須和資料庫的實際情況完全比對

undo_management

undo_tablespace

db_block_size

db_name

instance_name

(2)這組參數用于指定控制檔案的位置

control_files

(3)這組參數是定義目錄位置,這些目錄用于儲存資料庫運作過程中産生的一系列日志檔案。對于資料庫的正常運作而言,隻要這些目錄存在,oracle使用者有權限在這些目錄中建立檔案就可以了

audit_file_dest

backgroud_dump_dest

core_dump_dest

user_dump_dest

log_archive_dest_1

(4) 完整的初始化參數清單還包括其他很多參數

通過參數檔案配置的參數可以分成兩種:動态和靜态

動态參數是可以在資料庫運作起見随時修改,并立即生效;

靜态參數雖然可以修改,但是必須重新開機資料庫才能生效;

每個oracle資料庫都需要有一個alert日志檔案,檔案位于參數backgroup_dump_dest指定的目錄下,檔案名的格式為alert_dbname.log

oracle使用這個檔案來記錄資料庫運作過程中發生的重大事件,比如啟動 關閉 日志切換 添加資料檔案,啟動期間,這個日志中還會記錄所有的參數值,

是以管理者可以根據alert日志重建參數檔案

運作期間發生的各種錯誤都會記錄于此,在故障診斷階段這個檔案是管理者診斷分析的最佳起點。

grep ora- alerttestdb.log 檢視

trace檔案

oracle有3類跟蹤檔案:核心跟蹤檔案  背景程序跟蹤檔案 使用者跟蹤檔案

            core_dump_dest   background_dump_dest  user_dump_dest

核心檔案是資料庫核心運作中生成的

背景程序跟蹤檔案是dbwr lgwr這些背景程序産生,通常是在程序運作發生異常時産生,這時不僅會産生trace檔案,在alert日志中也會記錄

使用者跟蹤檔案更多是由于使用者主動觸發産生的。比如使用者跟蹤event 審計資料庫,産生的就是使用者跟蹤檔案

資料塊變化跟蹤檔案block change tracking file

oracle利用這個檔案記錄從上次全量備份以來所有發生變化的資料塊。這樣rman再做增量備份時,就不必掃描整個資料庫,隻需通過這個檔案就可以找到所有需要備份的資料塊。

dba進行不完全回複的幾個步驟:

1 關閉資料庫

2 找到最後一次備份的檔案,然後從備份中還原所有資料檔案restore

3 利用歸檔日志進行不完全恢複recover,要盡可能的回恢複到執行錯誤操作之前那個時間點

4 打開資料庫,做一個全備

上述2步驟是最耗時且無法跳過的步驟,flashback database使用一種完全不同的架構回避了這個問題,flashback database功能使我們可以快速的把整個資料庫倒轉到之前的某個時間點,而不必進行耗時的還原操作。

傳統的備份恢複依賴于聯機日志、歸檔日志。

flashback database利用了一種新的日志機制,即flashback log。

這種全新的日志檔案必須放到一個特殊的目錄位置,并且這些檔案也是由oracle自動維護的

要想使用flashback database 資料庫必須做一些特殊的配置

oracle資料庫檔案布局方式有兩種:使用者管理  oracle管理(omf)

使用者管理由dba決定每個檔案放在哪個磁盤,哪個目錄,定義檔案名以及檔案大小。

oracle管理

oracle缺删除表空間時是不會同時删除磁盤檔案的。必須drop tablespace test including contents and datafiles;

oracle建立表空間時,必須明确指定資料檔案的位置,才能建立成功。

omf解決了上述兩個問題,要想使用omf,要配置以下3組參數

db_create_file_dest:定義一個預設的目錄,建立資料檔案、臨時表空間檔案時,如果沒有明确的指明檔案路徑和名稱,新檔案就被建立在這個目錄下;如果定義了這個參數,而沒有定義db_create_online_log_dest_n參數,則聯機日志和控制檔案也會建立在這個目錄下。

db_create_online_log_dest_n(n=1-5):最多可以定義5個預設目錄,如果建立聯機日志、控制檔案時沒有明确定義檔案路徑和名稱,則檔案就會在這些目錄下建立,如果定義了多個目錄,則自動實作複用multiplexed功能。

db_recover_file_dest:定義一個預設目錄。在使用rman工具進行備份時,如果沒有指明備份集的格式,則備份檔案儲存在這個目錄下。歸檔日志的自動管理也是使用這個目錄。和db_create_online_log_dest_n參數,則聯機日志和控制檔案也會建立在這個目錄下

使用omf後,建立資料檔案或日志檔案時就不再需要考慮檔案位置 大小等屬性,omf會自動保證這些檔案被建立到預定義的目錄下。同時在删除表空間或日志組時這些檔案也就同時删除了。

上一篇: 讀書筆記
下一篇: 讀書筆記

繼續閱讀