Oracle更改redo log的大小


因為數據倉庫ETL過程中,某個mapping的執行時間超過了一個小時,

select event,count(*) fromv$session_wait  group by event order bycount(*)  desc

發現日志切換占用了大量的時間,估嘗試增大redo log的大小。

(1) redo log的大小可以影響  DBWR 和 checkpoint ;

(2)larger redo log files provide better performance. Undersized logfiles increase checkpoint activity and reduce performance.

     大的log file可以提供更好的性能,小的logfile 會增加checkpoint 和降低性能;

(3)A rough guide is to switch log files at most once every 20 minutes.(推薦日志切換的時間不要超多20分鍾).

 

通過查看 我有三組redolog 1/2/3每組兩個成員狀態都正常大小50m

select * from v$log ;

d16503a21e2d

status 有幾個值分別是:

  1. UNUSED(還沒有使用過);
  2. CURRENT(正在使用);
  3. ACTIVE(Log isactive but is not the current log. It is needed for crash recovery);
  4. INACTIVE(Log is nolonger needed for instance recovery),

查看日志文件

select * from v$logfile ;

ef11a11c4ee4

由於ORACLE並沒有提供類似RESIZE的參數來重新調整REDO LOG FILE的大小,因此只能先把這個文件刪除了,然后再重建。又由於ORACLE要求最少有兩組日志文件在用,所以不能直接刪除,必須要創建中間過渡的REDO LOG日志組。

1、創建3個新的日志組

ALTER DATABASE ADD LOGFILE GROUP 4('/usr/oracle/app/oradata/orcl/redo04a.log','/usr/oracle/app/oradata/orcl/redo04b.log') SIZE 2048M;

ALTER DATABASE ADD LOGFILE GROUP 5('/usr/oracle/app/oradata/orcl/redo05a.log','/usr/oracle/app/oradata/orcl/redo05b.log') SIZE 2048M;

ALTER DATABASE ADD LOGFILE GROUP 6('/usr/oracle/app/oradata/orcl/redo06a.log','/usr/oracle/app/oradata/orcl/redo06b.log')  SIZE 2048M;

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

alter system switch logfile;

alter system switch logfile;

alter system switch logfile;

  3、刪除舊的日志組

查看日志組的狀態看一下哪個是當前組,哪個是inactive狀態的。

SQL> select * from v$log;

2b8fac56a81f

刪除掉inactive的那個組。如果狀態為current和active 在刪除的時候會報錯

alter database drop logfile group 1;

alter database drop logfile group 2;

alter database drop logfile group 3;

4、操作系統下刪除原日志組1、2、3中的文件

注意:每一步刪除drop操作,都需要手工刪除操作系統中的實體文件。

1e0962d8e01b

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

ALTER DATABASE ADD LOGFILE GROUP 1('/usr/oracle/app/oradata/orcl/redo01a.log','/usr/oracle/app/oradata/orcl/redo01b.log')SIZE 2048M;

 ALTER DATABASE ADD LOGFILE GROUP 2('/usr/oracle/app/oradata/orcl/redo02a.log','/usr/oracle/app/oradata/orcl/redo02b.log')SIZE 2048M;

 ALTER DATABASE ADD LOGFILE GROUP 3('/usr/oracle/app/oradata/orcl/redo03a.log','/usr/oracle/app/oradata/orcl/redo03b.log')SIZE 2048M;

6、切換日志組

alter system switch logfile; 

alter system switch logfile; 

alter system switch logfile;

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

alter database drop logfile group 4; 

alter database drop logfile group 5; 

alter database drop logfile group 6;

8、到操作系統下刪除原日志組4、5、6中的文件

9、備份當前的最新的控制文件

SQL> alter database backupcontrolfile to trace resetlogs


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM