日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle 重做日志内容,Oracle重做日志文件基础

發(fā)布時間:2025/4/5 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle 重做日志内容,Oracle重做日志文件基础 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本文以下所述內(nèi)容是根據(jù)對"Oracle Database Administrator's Guide 11g Release 2 (11.2)" -- " 管理redo log "章節(jié)學(xué)習(xí)整理而來。

一、重做日志概述

重做日志對于Oracle數(shù)據(jù)庫的恢復(fù)來說是十分關(guān)鍵的,redo log包含兩個或更多的被預(yù)先分配的文件,在文件當(dāng)中記錄著數(shù)據(jù)庫內(nèi)發(fā)生的所有改變。每一個數(shù)據(jù)庫的實例都與其redo log相關(guān)聯(lián),目的是保證在實例失敗時以保護(hù)數(shù)據(jù)庫中數(shù)據(jù)的安全。(維護(hù)數(shù)據(jù)的一致性,完整性)

1、重做線程

在多實例環(huán)境中,每個實例的重做日志也被稱為重做線程(redo thread)。在傳統(tǒng)的單實例環(huán)境中,僅有一個實例訪問數(shù)據(jù)庫,所以只有一個重做線程,在Oracle的RAC集群環(huán)境中,兩個或更多的實例同時訪問一個數(shù)據(jù)庫,每個實例都有它自己的重做線程,其目的為,每個實例分別使用自己的重做線程以避免對一個單一的重做日志文件的爭用,從而得以排除在這方面的潛在的性能瓶頸。

2、重做日志文件的內(nèi)容

重做日志文件中包含的是重做記錄(redo record),也被稱為重做條目,重做記錄是由一組改變向量(change vector)構(gòu)成,每一個改變向量描述了數(shù)據(jù)庫中每一個數(shù)據(jù)塊(oracle data block)的變化,通過使用重做記錄,能夠恢復(fù)數(shù)據(jù)庫產(chǎn)生的所有變化,包括回滾段,因此,重做日志也需要保護(hù)回滾數(shù)據(jù)。當(dāng)使用重做日志文件恢復(fù)數(shù)據(jù)庫時,數(shù)據(jù)庫讀取重做日志中的改變向量并應(yīng)用到與之相關(guān)的數(shù)據(jù)塊上。例如:修改雇員表中的薪水字段,在redo log中將會產(chǎn)生一條重做記錄,該重做記錄描述了表段中數(shù)據(jù)塊的變化。其包含如下change vector:undo redo --&gt undo --&gt redo --&gt do.

重做記錄被緩存在SGA的redo log buffer緩沖區(qū)中,這個緩沖區(qū)是可循環(huán)寫入的,緩沖區(qū)中的內(nèi)容通過LGWR進(jìn)程寫入重做日志文件中。每當(dāng)一個事務(wù)提交時,LGWR將該事物產(chǎn)生的redo records從redo log buffer寫入重做日志文件,并且分配SCN(system change number)用以標(biāo)識每次提交的redo records,僅當(dāng)該事務(wù)的所有redo records都被安全的寫入了磁盤文件中后,才會出現(xiàn)事務(wù)已被提交的提示信息;重做記錄也可以在事務(wù)提交之前寫入重做日志文件,如果重做日志緩沖區(qū)已滿或者由于其他的事務(wù)提交,LGWR將重做日志緩沖區(qū)中的重做記錄寫入重做日志文件,盡管其中一些重做記錄沒有被提交,在必要的時候,數(shù)據(jù)庫會回滾這些變化。

3、重做記錄如何被寫入重做日志文件

在一個Oracle數(shù)據(jù)庫中最少需要兩個重做日志文件,以保證在其中一個日志歸檔時(archivelog mode),另一個日志是可以被寫入的。LGWR以一種循環(huán)的方式交替的使用重做日志文件。當(dāng)前的重做日志文件被寫滿時,LGWR開始寫另一個可用的重做日志文件,當(dāng)最后一個重做日志文件被寫滿時,LGWR又會反過來寫第一個重做日志文件。重做日志文件是否可被LGWR立即重用取決于數(shù)據(jù)庫是否啟用了歸檔模式:

a、在非歸檔模式中,在日志切換之前,日志中記錄的數(shù)據(jù)變化被同步到數(shù)據(jù)文件之后,LGWR將可以重用該重做日志文件。

b、在歸檔模式中,在日志切換之前,必須保證數(shù)據(jù)的變化被同步到數(shù)據(jù)文件且該日志已經(jīng)完成歸檔之后,LGWR才可以重用該重做日志文件。

4、ACTIVE和INACTIVE狀態(tài)的區(qū)別

ACTIVE:以ACTIVE標(biāo)識的重做日志文件對于實例恢復(fù)來說是必須的

INACTIVE:以INACTIVE標(biāo)識的重做日志文件對于實例恢復(fù)來說不是必須的

5、日志切換和日志序列號

日志切換是指LGWR停止對一個日志文件的寫入操作并開始對另一個日志文件執(zhí)行寫入操作。日志切換通常發(fā)生在當(dāng)前日志已被寫滿的情況下。但是,并不是只有在當(dāng)前日志被寫滿時才會發(fā)生日志切換,可以配置日志切換發(fā)生的頻率,而不管日志文件是否被寫滿,另外還可以手動執(zhí)行強制的日志切換操作。

在發(fā)生日志切換時,Oracle為每一個重做日志文件分配日志序列號,在歸檔模式下,歸檔日志也使用該序列號。每一個在線或歸檔重做日志文件都通過這個序列號來唯一標(biāo)識。在崩潰、實例、介質(zhì)修復(fù)期間,數(shù)據(jù)庫將正確的,以日志序列號(log sequence)的遞增順序應(yīng)用這些在線重做日志或歸檔重做日志。

二、規(guī)劃重做日志

1、多路復(fù)用重做日志文件

為了防止故障波及重做日志本身,Oracle允許使用多路復(fù)用重做日志,這意味著兩個或兩個以上相同的重做日志的副本可以保存在單獨的位置,即使重做日志的副本都在同一磁盤上,冗也余可以幫助防止I/O錯誤,文件損壞等等情況的出現(xiàn)。當(dāng)重做日志文件被設(shè)置為多路復(fù)用時,LGWR同時寫入相同的信息到多個重做日志文件的副本,從而消除由于單點失敗引起的故障。

重做日志的多路復(fù)用是通過創(chuàng)建日志文件組的方式來實現(xiàn)的,一個日志文件組包含一個日志文件盒它的多個副本,日志組中的每一個日志成員都是完全相同的,日志文件組被一個數(shù)字標(biāo)識,例如group 1,group 2,group 3,等等。在日志切換之后,當(dāng)前日志組中的成員同時成為active狀態(tài),也就是說,它們將被LGWR進(jìn)程同時寫入,并被分配了一個相同的日志序列號

2、重做日志發(fā)生故障時數(shù)據(jù)庫的反應(yīng)

場景

LGWR進(jìn)程行為

LGWR成功的寫入了日志組中的一個成員

LGWR將重做記錄信息寫入可用的日志成員,將忽略不可用的日志成員

LGWR無法訪問以一個日志組,因為該日志組必須完成歸檔

數(shù)據(jù)庫操作將展示停止,知道該日志組可用或該日志組中的日志完成歸檔

由于介質(zhì)損壞,下一個日志組的中所有成員均無法訪問

數(shù)據(jù)庫將返回一個錯誤,數(shù)據(jù)庫實例將被關(guān)閉,這時可能需要執(zhí)行介質(zhì)恢復(fù),如果數(shù)據(jù)庫檢查點已經(jīng)超過該日志文件,則不需要執(zhí)行介質(zhì)恢復(fù),只需要刪除損壞日志文件組即可

當(dāng)前日志文件組中的所有成員突然都不可用

數(shù)據(jù)庫將返回一個錯誤,數(shù)據(jù)庫實例將立即被關(guān)閉,這時可能需要執(zhí)行介質(zhì)恢復(fù)。如果介質(zhì)上包含的文件并沒有丟失,而只是因為其他原因以外被關(guān)閉,那么可能不需要介質(zhì)恢復(fù),在其恢復(fù)后進(jìn)行實例修復(fù)即可。

3、合法的和非法的配置重做日志

在大多是情況下,多路復(fù)用的重做日志文件都是對稱的:所有的日志文件組擁有相同的成員數(shù)量,然后Oracle并沒有硬性的規(guī)定所有日志文件組的成員數(shù)量必須一致。例如:group 1有兩個成員,group 2僅僅只有一個成員,這樣是合法的,實例對重做日志文件的唯一要求就是必須至少保證其有兩個組。

4、日志成員應(yīng)被置于不同的磁盤上

這和控制文件有些類似,好處也不用多說,就不進(jìn)行過多說明了。

5、規(guī)劃重做日志文件的大小

同意組中的成員必須擁有相同的文件大小,不同組中的重做日志文件大小不必一致。但是不推薦這樣做,這樣做導(dǎo)致的問題我們都可以估計到,那就是日志切換的時間不統(tǒng)一。總體來說,規(guī)劃重做日志文件的尺寸應(yīng)兼顧性能與效率,同時還要結(jié)合數(shù)據(jù)庫的繁忙程度來考慮。重做日志文件的尺寸最少為4MB。

6、控制歸檔延遲

使用初始化參數(shù)archive_lag_target控制歸檔延遲。

三、管理重做日志組及其成員

1、創(chuàng)建日志文件組

方法一:

SQL> alter database add logfile ('/u01/app/oracle/oradata/redo04.log') size 51200k;

Database altered.

SQL> select group#,member from v$logfile;

GROUP# MEMBER

---------- --------------------------------------------------

3 /u01/app/oracle/oradata/prac/redo03.log

2 /u01/app/oracle/oradata/prac/redo02.log

1 /u01/app/oracle/oradata/prac/redo01.log

4 /u01/app/oracle/oradata/redo04.log

方法二:

SQL> alter database add logfile group 5 ('/u01/app/oracle/oradata/redo05a.log') size 51200k;

Database altered.

SQL> select group#,member from v$logfile;

GROUP# MEMBER

---------- --------------------------------------------------

3 /u01/app/oracle/oradata/prac/redo03.log

2 /u01/app/oracle/oradata/prac/redo02.log

1 /u01/app/oracle/oradata/prac/redo01.log

4 /u01/app/oracle/oradata/redo04.log

4 /u01/app/oracle/oradata/redo04-b.log

4 /u01/app/oracle/oradata/redo04-c.log

5 /u01/app/oracle/oradata/redo05a.log

7 rows selected.

2、為日志文件組添加成員

方法一:

SQL> alter database add logfile member '/u01/app/oracle/oradata/redo04-b.log' to group 4; ? ? ? //這里就不用指定成員的大小了,因為組內(nèi)成員大小必須一致。

Database altered.

SQL> select group#,member from v$logfile;

GROUP# MEMBER

---------- --------------------------------------------------

3 /u01/app/oracle/oradata/prac/redo03.log

2 /u01/app/oracle/oradata/prac/redo02.log

1 /u01/app/oracle/oradata/prac/redo01.log

4 /u01/app/oracle/oradata/redo04.log

4 /u01/app/oracle/oradata/redo04-b.log

方法二:

SQL> alter database add logfile member '/u01/app/oracle/oradata/redo04-c.log' to ('/u01/app/oracle/oradata/redo04.log','/u01/app/oracle/oradata/redo04-b.log');

Database altered.

SQL> select group#,member from v$logfile;

GROUP# MEMBER

---------- --------------------------------------------------

3 /u01/app/oracle/oradata/prac/redo03.log

2 /u01/app/oracle/oradata/prac/redo02.log

1 /u01/app/oracle/oradata/prac/redo01.log

4 /u01/app/oracle/oradata/redo04.log

4 /u01/app/oracle/oradata/redo04-b.log

4 /u01/app/oracle/oradata/redo04-c.log

3、改變存儲位置和重命名

step 1、關(guān)閉數(shù)據(jù)庫,shutdown immediate

step 2、拷貝文件到新的存儲位置,cp、mv等命令

step 3、啟動數(shù)據(jù)庫到mount狀態(tài),執(zhí)行alter database rename file '成員1源路徑','成員2源路徑' to'成員1新路徑','成員2新路徑';step 4、打開數(shù)據(jù)庫,alter database open;

4、刪除日志文件組及其成員

刪除日志文件組時要考慮如下限制條件:

a、Oracle實例要求一個數(shù)據(jù)庫中必須至少保留兩組日志文件。

b、只能刪除inactive狀態(tài)的日志文件組,如果必須刪除active狀態(tài)的組,那么需要先執(zhí)行日志切換。

SQL> select group#,status from v$log;

GROUP# STATUS

---------- ----------------

1 CURRENT

2 UNUSED

3 UNUSED

4 UNUSED

SQL> alter database drop logfile group 1;

alter database drop logfile group 1

*

ERROR at line 1:

ORA-01623: log 1 is current log for instance prac (thread 1) - cannot drop

ORA-00312: online log 1 thread 1: '/u01/app/oracle/oradata/prac/redo01.log'

c、確保日志文件組被刪除前已經(jīng)完成了歸檔。

SQL> alter database drop logfile group 5;

Database altered.

SQL> select group#,member from v$logfile;

GROUP# MEMBER

---------- --------------------------------------------------

3 /u01/app/oracle/oradata/prac/redo03.log

2 /u01/app/oracle/oradata/prac/redo02.log

1 /u01/app/oracle/oradata/prac/redo01.log

4 /u01/app/oracle/oradata/redo04.log

4 /u01/app/oracle/oradata/redo04-b.log

4 /u01/app/oracle/oradata/redo04-c.log

6 rows selected.

5、刪除日志成員

在刪除日志成員時應(yīng)考慮如下限制條件:

a、無法刪除當(dāng)前組的成員。

SQL> alter database drop logfile '/u01/app/oracle/oradata/prac/redo01.log';

alter database drop logfile '/u01/app/oracle/oradata/prac/redo01.log'

*

ERROR at line 1:

ORA-01623: log 1 is current log for instance prac (thread 1) - cannot drop

ORA-00312: online log 1 thread 1: '/u01/app/oracle/oradata/prac/redo01.log'

b、當(dāng)組中僅剩唯一成員時,無法刪除該成員,如確實需刪除,可以直接刪除組。

SQL> alter database drop logfile member '/u01/app/oracle/oradata/redo05a.log';

alter database drop logfile member '/u01/app/oracle/oradata/redo05a.log'

*

ERROR at line 1:

ORA-00361: cannot remove last log member /u01/app/oracle/oradata/redo05a.log for group 5

c、從一個重做日志組中刪除日志成員后,操作系統(tǒng)并不會刪除磁盤文件,在確保重做日志文件刪除成功后,然后使用操作系統(tǒng)命令來刪除掉重做日志文件。

總結(jié)

以上是生活随笔為你收集整理的oracle 重做日志内容,Oracle重做日志文件基础的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成人久久久 | 日韩一区二区影视 | 欧美日韩亚洲在线 | 青青操久久 | 那里有毛片看 | 国语对白对话在线观看 | www.youjizz.com久久| 黄视频在线播放 | 亚洲天堂导航 | 国内黄色片 | 夫の上司に犯波多野结衣853 | 少妇一级淫片免费 | 欧美黄视频在线观看 | 成品短视频泡芙 | 亚洲视频色图 | 不卡欧美 | 999在线视频 | 久久精品a亚洲国产v高清不卡 | 国产热| 一区二区三区中文字幕在线观看 | 青青伊人网 | 久热只有精品 | 91video| 男人和女人搞鸡 | 亚洲天堂一区二区三区四区 | 午夜激情视频在线观看 | 在线麻豆av | 秋霞成人网 | aa在线视频| 欧美一级二级三级视频 | 午夜生活片 | 亚洲30p| av网站一区 | 亚洲欧美日韩第一页 | 色中文在线 | 野花视频在线观看免费 | 波多野结衣在线一区二区 | 金瓶狂野欧美性猛交xxxx | 欧美成人综合一区 | 牛牛影视一区二区 | 伊人春色在线 | 91伦理视频 | 18禁裸乳无遮挡啪啪无码免费 | 欧美黄色a级 | 钰慧的mv视频在线观看 | 视频一区二区欧美 | 日韩一区二区精品 | 性户外野战hd| 欧美黄色网| 亚洲av网址在线 | 人人舔人人 | 伊人在线 | 成人在线免费网站 | 亚洲不卡视频在线观看 | 一区二区在线免费看 | 日皮视频免费观看 | 免费a v网站 | 免费激情片| 免费三级黄 | 国产精品无码免费播放 | 欧美一级二级视频 | 美女尻逼视频 | 欧美日韩少妇 | 久久精品国产亚洲av香蕉 | 日韩人妻无码一区二区三区99 | 毛片毛片毛片毛片毛片毛片毛片毛片 | 伊人久久香 | 求毛片网站 | 欧美福利在线观看 | 日本a∨视频 | 日韩在线视屏 | 国产精品久久久久久网站 | 中国丰满人妻videoshd | 男女猛烈无遮挡免费视频 | 欧美激情一区二区三区免费观看 | 蜜桃精品一区二区 | 国产午夜精品无码 | 国产真人真事毛片 | 国产欧美日韩精品在线观看 | 丝袜+亚洲+另类+欧美+变态 | 爱爱综合 | 成人午夜视频免费观看 | 亚洲精品~无码抽插 | 精品成人一区二区 | 无码人妻精品一区二区中文 | 亚洲一区二区在线播放 | 午夜精品在线观看 | 久久入 | 91午夜在线 | 男人午夜网站 | 亚州欧美日韩 | 一区二区三区91 | 国产毛片基地 | 亚洲天天综合 | 久久综合高清 | 91久久婷婷| 天天操天天操天天操天天 | 深夜福利网 | 色偷偷成人 |