99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀分析Oralce重做日志
分析Oralce重做日志
2014-07-22
收藏



1. 簡介

Oracle引入重做日志的目的:數(shù)據(jù)庫的恢復(fù)。

Oracle相關(guān)進(jìn)程:重做日志寫進(jìn)程(LGWR)。

重做日志性質(zhì):聯(lián)機(jī)日志文件,oracle服務(wù)器運(yùn)行時需要管理它們。

相關(guān)數(shù)據(jù)字典:v$log ; v$logfile 。

操作者權(quán)限:具有sys用戶或system用戶權(quán)限。

重做日志文件:

日志文件的數(shù)據(jù)文件類型:在線日志文件(又叫聯(lián)機(jī)日志)與歸檔日志文件(在線日志文件的歷史備份), 每個重做日志組中有一個或多個重做日志文件。每個勢力至少要有兩個重做日志組。

日志運(yùn)行的模式:歸檔模式、非歸檔模式(是否自動歸檔)

日志的運(yùn)行流程:寫文件是依靠LGWR后臺進(jìn)程

日志按照有序循環(huán)的方式被使用,即當(dāng)一組日志文件被填滿后,循環(huán)覆蓋下一組日志文件,不斷循環(huán)。

重做日志文件的目的:1. 記錄數(shù)據(jù)的改變 2. 提供數(shù)據(jù)恢復(fù) 3. 維護(hù)數(shù)據(jù)庫完整性。

2. 什么是 Oracle 歸檔模式?

Oracle數(shù)據(jù)庫有聯(lián)機(jī)重做日志,這個日志是記錄對數(shù)據(jù)庫所做的修改,比如插入,刪除,更新數(shù)據(jù)等,對這些操作都會記錄在聯(lián)機(jī)重做日志里。一 般數(shù)據(jù)庫至少要有2個聯(lián)機(jī)重做日志組。當(dāng)一個聯(lián)機(jī)重做日志組被寫滿的時候,就會發(fā)生日志切換,這時聯(lián)機(jī)重做日志組2成為當(dāng)前使用的日志,并且把這些文件分 布在不同的物理磁盤,當(dāng)聯(lián)機(jī)重做日志組2寫滿的時候,又會發(fā)生日志切換,去寫聯(lián)機(jī)重做日志組1,就這樣反復(fù)進(jìn)行。

,當(dāng)前在使用聯(lián)機(jī)重做日志如果數(shù)據(jù)庫處于非歸檔模式,聯(lián)機(jī)日志在切換時就會丟棄. 而在歸檔模式下,當(dāng)發(fā)生日志切換的時候,被切換的日志會進(jìn)行歸檔。比如1,當(dāng)1寫滿的時候,發(fā)生日志切換,開始寫聯(lián)機(jī)重做日志 2,這時聯(lián)機(jī)重做日志1的內(nèi)容會被拷貝到另外一個指定的目錄下。這個目錄叫做歸檔目錄,拷貝的文件叫歸檔重做日志。 數(shù)據(jù)庫使用歸檔方式運(yùn)行時才可以進(jìn)行災(zāi)難性恢復(fù)。

歸檔日志模式和非歸檔日志模式的區(qū)別: 非歸檔模式只能做冷備份,并且恢復(fù)時只能做完全備份.最近一次完全備份到系統(tǒng)出錯期間的數(shù)據(jù)不能恢復(fù). 歸檔模式可以做熱備份,并且可以做增量備份,可以做部分恢復(fù). 用ARCHIVE LOG LIST 可以查看期模式狀態(tài)時歸檔模式還是非歸檔模式.

3. 重做日志工作原理

后臺進(jìn)程 LGWR 負(fù)責(zé)把重做日志緩沖區(qū)中的日志條目寫到重做日志文件 中。當(dāng)用戶提交一個事務(wù)時,LGWR把這個事務(wù)的重做條目寫入到重做日志文件,并賦予一個標(biāo)識符(System change number SCN),SCN用于標(biāo)識事務(wù)的重做日志條目。只有當(dāng)事務(wù)的“重做日志條目”被成功寫入到磁盤上的重做日志文件中,事務(wù)的提交才算完成。

以下情況LGWR會自動把重做日志緩沖區(qū)的日志條目寫入到重做日志文件中:

》每隔3秒鐘

》一個用戶提交一個事務(wù)

》日志緩沖區(qū)(Redo Log Buffer)被填滿三分之一

》日志緩沖區(qū)將有1MB的日志數(shù)據(jù)

》發(fā)生校驗點checkpoint

以下情況發(fā)生check point:

a.每次日志切換時

b.實例通過normal,transactional,immediate選項關(guān)閉時

c.通過設(shè)置初始化參數(shù)FAST_START_MTTR_TARGET強(qiáng)制發(fā)生

d.數(shù)據(jù)庫管理員手工設(shè)置ALTER SYSTEM CHECKPOINT、alter tablespace ,datafile offline

e.使用alter tablespace[OFFLINE NORMAL|READ ONLY|BEGIN BACKUP] 語句導(dǎo)致指定數(shù)據(jù)文件發(fā)生檢查點

注:如果參數(shù)LOG_CHECKPOINTS_TO_ALERT 設(shè)置為true,則每次檢查點信息將記錄在alert_SID.log文件中.

4. 重做日志狀態(tài)

Current 表示正在LGWR寫的重做日志組

Active 表示重做日志組記錄的改變還沒有寫入到數(shù)據(jù)文件中,實例恢復(fù)時需要用到Active的重做日志組;

Inactive表示實例恢復(fù)時不需要狀態(tài)為inactive的重做日志組;

Unused表示該重做日志組是新建的,還未被使用;

5. 實例恢復(fù)

如果數(shù)據(jù)庫突然斷電,對數(shù)據(jù)庫的改變沒有真正寫入到數(shù)據(jù)庫文件中,但是Oracle保證對數(shù)據(jù)庫的改變已經(jīng)記錄到重做日志文件中。例程失敗類似于執(zhí)行 SHUTDOWN ABORT命令關(guān)閉數(shù)據(jù)庫,解決了硬件問題和電源斷電等問題之后,DBA只需要執(zhí)行STARTUP命令啟動例程就可以了,而不需要執(zhí)行任何恢復(fù)命令。 當(dāng)執(zhí)行 STARTUP 命令啟動例程并裝載了數(shù)據(jù)庫之后,后臺進(jìn)程 SMON 會自動執(zhí)行例程恢復(fù),最終使數(shù)據(jù)庫所有文件(數(shù)據(jù)文件、控制文件、重做日志)完全同步。實例恢復(fù)會自動把記錄在重做日志文件中的改變應(yīng)用到數(shù)據(jù)文件中,就不會有數(shù)據(jù)的丟失

6. 重做日志組操作

1.1     數(shù)據(jù)庫日志歸檔操作

1. 查看oracle數(shù)據(jù)庫是否為歸檔模式:

SQL> select name,log_mode from v$database;

NAME LOG_MODE

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

PTLDB NOARCHIVELOG

2.查看數(shù)據(jù)庫中的重做日志組

SQL> select * from v$log;

GROUP#  THREAD# SEQUENCE#  BYTES  MEMBERS ARC  STATUS  FIRST_CHANGE# FIRST_TIME

1        1          1558  315392000            1  NO   INACTIVE      459785223 20-JUL-14

2        1          1559  315392000            1  NO   CURRENT      460781485 21-JUL-14

3        1          1557  315392000            1  NO   INACTIVE      458700182 19-JUL-14

3.查看數(shù)據(jù)庫中的重做日志文件

知道有哪些重做日志文件,以及每個重做日志文件屬于哪一組。

SQL> select * from v$logfile;

GROUP#  STATUS  TYPE   MEMBER                                   IS_

3       ONLINE        /opt/oracle/oradata/ptldb/redo03.log       NO

2       ONLINE        /opt/oracle/oradata/ptldb/redo02.log       NO

1       ONLINE        /opt/oracle/oradata/ptldb/redo01.log       NO

4.創(chuàng)建重做日志組

ALTER DATABASE ADD LOGFILE GROUP 4 ('/dev/rlv_vgdb9_data22','/dev/rlv_vgdb9_data23','/dev/rlv_vgdb9_data24') SIZE 8191m; --這樣,就最增一個日志組,且這個日志組里有3個成員每個成員8191MB大小。

5:給某個日志組新增一個成員

ALTER DATABASE ADD LOGFILE MEMBER '/dev/rlv_vgdb9_data25' TO GROUP 4;

--注意,這里不需要指定日志組成員的大小。

6:刪除日志組

ALTER DATABASE DROP LOGFILE GROUP 4;

--注意:當(dāng)前日志組不能刪,活動的日志組不能刪,沒有歸檔的日志組不能刪。

7:刪除日志組成員

ALTER DATABASE DROP LOGFILE MEMBER '/dev/rlv_vgdb9_data25';

--注意:每個組至少要保留一個成員;

8.改變重做日志組的狀態(tài)

Alter system switch logfile;

從Active狀態(tài)變?yōu)镮nactive狀態(tài)

Alter system checkpoint;

配置數(shù)據(jù)庫的歸檔模式

改變非歸檔模式到歸檔模式:

1)SQL>SHUTDOWN NORMAL/IMMEDIATE;

2)SQL>START MOUNT;

3)SQL>ALTER DATABASE ARCHIVELOG;

4)SQL>ALTER DATABASE OPEN;

5)SQL>做一次完全備份,因為非歸檔日志模式下產(chǎn)生的備份日志對于歸檔模式已經(jīng)不可用了.這一步非非常重要!

改變歸檔模式到非歸檔模式:

1)SQL>SHUTDOWN NORMAL/IMMEDIATE;

2)SQL>START MOUNT;

3)SQL>ALTER DATABASE NOARCHIVELOG;

4)SQL>ALTER DATABASE OPEN;

3.啟用自動歸檔: LOG_ARCHIVE_START=TRUE

歸檔模式下,日志文件組不允許被覆蓋(重寫),當(dāng)日志文件寫滿之后,如果沒有進(jìn)行手動歸檔,那么系統(tǒng)將掛起,知道歸檔完成為止.

這時只能讀而不能寫.

運(yùn)行過程中關(guān)閉和重啟歸檔日志進(jìn)程

SQL>ARCHIVE LOG STOP

SQL>ARCHIVE LOG START

4.手動歸檔: LOG_ARCHIVE_START=FALSE

歸檔當(dāng)前日志文件

SQL>ALTER SYSTEM ARCHIVE LOG CURRENT;

歸檔序號為052的日志文件

SQL>ALTER SYSTEM ARCHIVE LOG SEQUENCE 052;

歸檔所有日志文件

SQL>ALTER SYSTEM ARCHIVE LOG ALL;

改變歸檔日志目標(biāo)

SQL>ALTER SYSTEM ARCHIVE LOG CURRENT TO '&PATH';

1.2     日志切換

ALTER SYSTEM SWITCH LOGFILE;

--所謂日志切換就是停止寫當(dāng)前組,轉(zhuǎn)而寫一個新組,系統(tǒng)可以自動發(fā)生,也可以手工完成。

--當(dāng)發(fā)生SWITCH LOGFILE時,系統(tǒng)會在后臺完成CHECKPOINT的操作

--手動切換日志組

--日志組A:當(dāng)前正在寫。

--日志組B:可寫。

--CHECKPOINT保證控制文件,數(shù)據(jù)文件頭,日志文件頭的SCN一致是數(shù)據(jù)庫保持?jǐn)?shù)據(jù)完整性的一個重要機(jī)制

--手動切換日志組后,ORACLE開始往日志組B寫日志,并進(jìn)行一次CHECKPOINT,把日志組A里沒有經(jīng)過CHECKPOINT的那部分日志對應(yīng)的DIRTY BUFFER從BUFFER CACHE里寫到

--數(shù)據(jù)文件里。CHECKPOING完成后

--日志組A:可寫。

--日志組B:當(dāng)前正在寫。

--另外,ALTER TABLESPACE USER BEGIN BACKUP,DROP TABLE,TRUNCATE TABLE都會引發(fā)CHECKPOINT操作

--除了以上所手動,及自動CHECKPOINT之外,還可以通過一些參數(shù)來控制CHECKPOINT

--FAST_START_MTTR_TARGET(MTTR:數(shù)據(jù)恢復(fù)的時間間隔)

--checkpoints用來同步,同步頻率越高,發(fā)生系統(tǒng)錯誤時所需RECOVERY時間越短

--同步相關(guān)的參數(shù):FAST_START_MTTR_TARGET(數(shù)據(jù)庫通過它來改變后面3個參數(shù)),fast_start_io_target,log_checkpoint_interval,log_checkpoint_timeout


SQL

數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時表示是新驗證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }