Oracle經常宕掉的解決辦法

2021-05-24 15:20:29 字數 2438 閱讀 6792

最近伺服器的oracle經常宕掉,幾乎每天宕一次,察看日誌,發現出現「thread 1 cannot allocate new log」錯誤,也導致了乙個tablespace的空間不足。

對於這個錯誤資訊得解釋如下:

當系統要重新利用某個日誌檔案的時候,系統需要將該日誌檔案所包括的buffer cache 中的dirty block 寫到相應的資料檔案。由於對於乙個資料庫操作而言,它可能產生的redo 量僅僅是幾十位元組,但是對於buffer cache中確是乙個block (一般為8k)。所以,對於乙個僅僅是幾百m的日誌檔案,它所保護的buffer cache 可能是幾個g

一旦發生"thread 1 cannot allocate new log",表明系統的checkpoint 沒有來得及完成,也就是說 buffer cache 中的dirty data還沒有完全寫到資料檔案,就已經有大量的日誌需要寫入到系統。而系統只能通知應用:checkpoint 還沒有完成,你只能等待。這個時候,系統就基本處於hang 狀態了 when the database waits on checkpoints,redo generation is stopped until the

log switch is done

如果,我們在這個時候檢視系統資訊,就會發現:v$log中的日誌狀態大多處於active 狀態; v$session_wait 中會有很多log file switch 事件的發生

解決辦法: a. 新增更多的日誌檔案  b. 加大checkpoint 觸發的頻度  c. 減小redo log 的size d. 提高dbwr的效率 e. 為了更好的了解系統的執行,可以設定 log_checkpoint_interval = 0 log_checkpoint_timeout = 0 log_checkpoints_to_alert=true

我採用的辦法是增加日誌檔案,改變歸檔日誌的大小

該變歸檔日誌大小只有改變日誌組的大小!

方法:加入新的大的日誌檔案,然後刪掉舊的小的日誌檔案

假設現有三個日誌組,每個組內有乙個成員,每個成員的大小為1mb,現在想把此三個日誌組的成員大小都改為10mb

1、建立2個新的日誌組

alter database add logfile group 4 ('d:/oracle/oradata/oradb/redo04_1.log') size 1024k;

alter database add logfile group 5 ('d:/oracle/oradata/oradb/redo05_1.log') size 1024k;

2、切換當前日誌到新的日誌組

alter system switch logfile;

alter system switch logfile;

3、刪除舊的日誌組

alter database drop logfile group 1;

alter database drop logfile group 2;

alter database drop logfile group 3;

當遇到刪除不了日誌檔案,需要歸檔時,,只需執行

alter database clear unarchived logfile group 1;

然後再執行刪除日誌檔案即可。

4、作業系統下刪除原日誌組1、2、3中的檔案

5、重建日誌組1、2、3

alter database add logfile group 1 ('d:/oracle/oradata/oradb/redo01_1.log') size 10m;

alter database add logfile group 2 ('d:/oracle/oradata/oradb/redo02_1.log') size 10m;

alter database add logfile group 3 ('d:/oracle/oradata/oradb/redo03_1.log') size 10m;

6、切換日誌組

alter system switch logfile;

alter system switch logfile;

alter system switch logfile;

7、刪除中間過渡用的日誌組4、5

alter database drop logfile group 4;

alter database drop logfile group 5;

8、到作業系統下刪除原日誌組4、5中的檔案 (可以不刪,不刪就是增加日誌組)

9、備份當前的最新的控制檔案

sql> connect internal

sql> alter database backup controlfile to trace resetlogs

mysql宕掉的問題解決

mysql宕掉的問題解決 可能原因是資料過多導致。mysql 命令可以識別 但是進去後不能執行相關的mysql命令,需要 www.2cto.com 1,停掉mysql 2,在 etc my.cnf 檔案中新增innodb force recovery 6 如下示 innodb強制恢復 mysqld ...

oracle資料備份解決辦法

oracle資料備份解決辦法 實現資料備份辦法很多,這裡講我自己經常用到的一種 1 新增乙個記事本檔案,並儲存為批處理檔案 bat 你可以自己命名 比如back.bat 第一部分 首先進入自己要儲存備份檔案的目錄 比如如下,就是實現把檔案備份到 d databak d cd cd databak 重...

ORACLE 04082解決辦法

錯誤描述 oracle 04082 new 或old引用不允許在表級觸發器中 解決樣例 1 建立觸發器,出現問題 create or replace trigger trigger cname before delete on c declare v count number begin selec...