溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

VC客戶端無法登陸都是REDO日志惹的禍

發(fā)布時(shí)間:2020-07-30 00:22:51 來源:網(wǎng)絡(luò) 閱讀:2178 作者:xjsunjie 欄目:數(shù)據(jù)庫

環(huán)境:VSPHERE5.5+獨(dú)立oracle 11G數(shù)據(jù)庫

現(xiàn)象:打開vcenter服務(wù)器控制臺(tái),輸入密碼后卡在歡迎界面無響應(yīng),客戶端也無法正常登陸。
VC客戶端無法登陸都是REDO日志惹的禍


正常重啟也不行。由于VC所在虛機(jī)為獨(dú)立磁盤無法做快照,不能備當(dāng)時(shí)狀態(tài)。



查看所在WINDOWS系統(tǒng)日志發(fā)現(xiàn)硬件可能有問題。

VC客戶端無法登陸都是REDO日志惹的禍

這是偏移量,并不能代表硬件有問題,懷疑VC連接的數(shù)據(jù)庫有問題,逐登陸排查。
1、登陸11.15.146.2

首先查看數(shù)據(jù)庫進(jìn)程,正常。

VC客戶端無法登陸都是REDO日志惹的禍

2、查看數(shù)據(jù)庫的告警日志,發(fā)現(xiàn)一個(gè)問題。

VC客戶端無法登陸都是REDO日志惹的禍


這個(gè)實(shí)際上是個(gè)比較常見的錯(cuò)誤。通常來說是因?yàn)樵谌罩颈粚憹M時(shí)會(huì)切換日志組,這個(gè)時(shí)候會(huì)觸發(fā)一次checkpoint,DBWR會(huì)把內(nèi)存中的臟塊往數(shù)據(jù)文件中寫,只要沒寫結(jié)束就不會(huì)釋放這個(gè)日志組。如果歸檔模式被開啟的話,還會(huì)伴隨著ARCH寫歸檔的過程。如果redo log產(chǎn)生的過快,當(dāng)CPK或歸檔還沒完成,LGWR已經(jīng)把其余的日志組寫滿,又要往當(dāng)前的日志組里面寫redolog的時(shí)候,這個(gè)時(shí)候就會(huì)發(fā)生沖突,數(shù)據(jù)庫就會(huì)被掛起。并且一直會(huì)往alert.log中寫類似上面的錯(cuò)誤信息。

分析原因:
服務(wù)器有三個(gè)日志組g1、g2、g3.當(dāng)g1寫完時(shí),要往g2上寫,這時(shí)候g1要進(jìn)行歸檔,還要進(jìn)行checkpoint。然后另外兩個(gè)日志組繼續(xù)寫。當(dāng)g2和g3都寫完之后,又要往g1上寫,但是問題來了,g1還沒有完成歸檔和checkpoint操作。所以這時(shí)就會(huì)報(bào)警。
解決方法:
多加幾個(gè)日志組,并且每個(gè)日志組空間大一點(diǎn),這樣就可以延緩時(shí)間,會(huì)留給g1充分的時(shí)間來完成歸檔和checkpoint任務(wù)。就不會(huì)有報(bào)錯(cuò)。

 

操作步驟:

首先查看下數(shù)據(jù)庫的日志組狀態(tài)

查看在線日志組:SQL> select * from v$log;

查看日志組中的成員:SQL> select * from v$logfile;

查看日志組的具體狀態(tài):SQL> select group#,sequence#,bytes,members,status from v$log;

 

    GROUP# SEQUENCE#      BYTES    MEMBERS   STATUS

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

         1     28825   52428800  1     INACTIVE

 

         2     28826   52428800  1       ACTIVE

 

         3     28827   52428800  1       CURRENT

CURRENT: 表示是當(dāng)前的日志。

INACTIVE:臟數(shù)據(jù)已經(jīng)寫入數(shù)據(jù)塊。該狀態(tài)可以drop。

ACTIVE: 臟數(shù)據(jù)還沒有寫入數(shù)據(jù)塊。


日志只有50M太小

擴(kuò)充下日志組大小

SQL> alter database add logfile group 4 ('/u01/app/oracle/oradata/pvdb/redo04.log')size 500M;

 

Database altered.

SQL> alter database add logfile group 5('/u01/app/oracle/oradata/pvdb/redo05.log') size 500M;

 

Database altered.

 

SQL> alter database add logfile group 6 ('/u01/app/oracle/oradata/pvdb/redo06.log')size 500M;

 

Database altered.


切換日志組


SQL> alter system switch logfile;

 

System altered.

 

SQL> alter system switch logfile;

 

System altered.


注意:alter system switch logfile 和alter system archive log current這兩個(gè)切換的區(qū)別。

alter system switch logfile 是不等待歸檔完成就switch logfile。如果database尚未開啟archive log mode。那用這個(gè)切換是毋庸置疑了。另外,也是對單實(shí)例database和RAC模式下當(dāng)前實(shí)例執(zhí)行日志切換。

而alter system archive log current則需要等待歸檔完成才switch logfile。會(huì)對其中所有實(shí)例執(zhí)行日志切換。

整體上說來,在自動(dòng)歸檔的庫里,兩個(gè)命令的所產(chǎn)生的結(jié)果幾乎一樣。有區(qū)別的是alter system archive log current所用的時(shí)間會(huì)比alter system switch logfile 的長。


 刪除日志組


SQL> alter database drop logfile group 1;

 

Database altered.

 

SQL> alter database drop logfile group 2;

 

Database altered.

SQL> alter database drop logfile group 3;

 

Database altered.


 

注意刪除日志組及日志組成員:

原則:刪除前必須遵守如下原則,每個(gè)實(shí)例必須至少有兩個(gè)日志組;當(dāng)一個(gè)組處于ACTIVE或者CURRENT的狀態(tài)時(shí)不可刪除;刪除日志組的操作只對數(shù)據(jù)庫進(jìn)行更改,操作系統(tǒng)的文件尚未刪除;當(dāng)刪除時(shí)適用DROP LOGFILE GROUP N語句時(shí),此時(shí)GROUP N內(nèi)的所有成員都將被刪除。

ALTER DATABASE DROP LOGFILE GROUP N;

日志組狀態(tài)的改變:

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


    GROUP#  SEQUENCE#      BYTES    MEMBERS STATUS

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

         1     201268 2147483648          1 CURRENT

         2     201263 2147483648          1 ACTIVE

         3     201264 2147483648          1 ACTIVE

         4     201267  524288000          1 ACTIVE

         5     201265  524288000          1 ACTIVE

         6     201266  524288000          1 ACTIVE


SQL>  ALTER SYSTEM CHECKPOINT;

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


    GROUP#  SEQUENCE#      BYTES    MEMBERS STATUS

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

         1     201268 2147483648          1 CURRENT

         2     201263 2147483648          1 INACTIVE

         3     201264 2147483648          1 INACTIVE

         4     201267  524288000          1 INACTIVE

         5     201265  524288000          1 INACTIVE

         6     201266  524288000          1 INACTIVE



刪除日志成員的原則:當(dāng)你刪除一個(gè)是該組中最后一個(gè)成員的時(shí)候,你不能刪除此成員;當(dāng)組的轉(zhuǎn)臺(tái)處于current的狀態(tài)時(shí),不能刪除組成員;在歸檔模式下,必須得歸檔之后才能刪除;刪除日志組成員的操作只對數(shù)據(jù)庫進(jìn)行更改,操作系統(tǒng)的文件尚未刪除。

刪除日志組后再刪除相應(yīng)日志文件,例如redo01.log

SQL> !rm  /u01/app/oracle/oradata/pvdb/redo01.log


SQL> alter system switch logfile;

 

System altered.


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

 

   GROUP#  SEQUENCE#      BYTES   MEMBERS    STATUS

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

        4      28828  524288000          1     INACTIVE

 

        5      28829  524288000          1     ACTIVE

 

        6      28830  524288000          1     CURRENT


最后切完日志組后,觀察新建的REDO日志組已被應(yīng)用,數(shù)據(jù)庫正常,數(shù)據(jù)庫日志再無報(bào)警,問題解決。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI