Thread 1 cannot allocate new log(添加logfile文件)
2013-01-06 09:03
381 查看
现象:
查看alert日志,报如下信息:
Thread 1 advanced to log sequence 55505 (LGWR switch)
Current log# 1 seq# 55505 mem# 0: /u02/oradata/RKMES/redo11.dbf
Current log# 1 seq# 55505 mem# 1: /u03/oradata/RKMES/redo12.dbf
Wed Dec 1 15:22:32 2010
Thread 1 cannot allocate new log, sequence 55506
Checkpoint not complete
Current log# 1 seq# 55505 mem# 0: /u02/oradata/RKMES/redo11.dbf
Current log# 1 seq# 55505 mem# 1: /u03/oradata/RKMES/redo12.dbf
所以log日志处于active状态:
SQL> Select * From v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARCHIVED STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- -------- ---------------- ------------- -----------
1 1 55515 104857600 2 YES ACTIVE 5359590265891 2010-12-1 1
2 1 55509 104857600 2 YES ACTIVE 5359590235181 2010-12-1 1
3 1 55510 104857600 2 YES ACTIVE 5359590235950 2010-12-1 1
4 1 55511 104857600 2 YES ACTIVE 5359590239936 2010-12-1 1
5 1 55512 104857600 2 YES ACTIVE 5359590254143 2010-12-1 1
6 1 55516 104857600 2 NO CURRENT 5359590270035 2010-12-1 1
7 1 55507 104857600 2 YES ACTIVE 5359590233426 2010-12-1 1
8 1 55513 104857600 2 YES ACTIVE 5359590258200 2010-12-1 1
9 1 55514 104857600 2 YES ACTIVE 5359590261923 2010-12-1 1
10 1 55508 104857600 2 YES ACTIVE 5359590234273 2010-12-1 1
原因:
当在大量更新事务操作时,在自动进行alter system switch logfile时,在线重做数据无法即时写入到磁盘datafile,导致新的日志无法去循环使用redo log 文件
解决:
1、增加LOGFILE的个数或增大LOGFILE大小(先增加比较大的logfile文件,再删除原先小的logfile文件)
方法1(手动指定文件名):
--添加日志组单个logfile文件的方法
Alter Database Logfile 'E:\ORACLE\ORADATA\INFRADB\REDO11.LOG' size 200m;
--添加日志组的多个logfile文件的方法
Alter Database Add Logfile Group 6 ('E:\ORACLE\ORADATA\INFRADB\REDO06.LOG','E:\ORACLE\ORADATA\INFRADB\REDO06_2.LOG') size 200m,
Group 7 ('E:\ORACLE\ORADATA\INFRADB\REDO07.LOG','E:\ORACLE\ORADATA\INFRADB\REDO07_2.LOG') size 200m;
方法1(自动指定文件名):
--首先做设置DB_CREATE_ONLINE_LOG_DEST_1参数
alter system set DB_CREATE_ONLINE_LOG_DEST_1 = 'E:\ORACLE\ORADATA1\INFRADB\';
alter system set DB_CREATE_ONLINE_LOG_DEST_2 = 'E:\ORACLE\ORADATA2\INFRADB\';
--再执行下面的使用自动日志组
ALTER DATABASE ADD Logfile ;
--查看
SQL> Select * From v$logfile;
GROUP# STATUS TYPE MEMBER
---------- ------- ------- ------------------------------------------------------------------------
1 ONLINE E:\ORACLE\ORADATA\INFRADB\REDO01.LOG
2 ONLINE E:\ORACLE\ORADATA\INFRADB\REDO02.LOG
3 ONLINE E:\ORACLE\ORADATA\INFRADB\REDO03.LOG
4 ONLINE E:\ORACLE\ORADATA\INFRADB\REDO04.LOG
5 ONLINE E:\ORACLE\ORADATA\INFRADB\REDO06.LOG
6 ONLINE E:\ORACLE\ORADATA1\INFRADB\INFRADB\ONLINELOG\O1_MF_6_6HD17H0X_.LOG
6 ONLINE E:\ORACLE\ORADATA2\INFRADB\INFRADB\ONLINELOG\O1_MF_6_6HD17H0X_.LOG
6 rows selected
--删除logfile文件,这样只是逻辑上删除,还需要去系统目录下把物理文件手动删除
ALTER DATABASE DROP LOGFILE GROUP 6;
2、增加设置DB_WRITER_PROCESSES参数值
alter system set DB_WRITER_PROCESSES = 3 scope=spfile;
--需要重启数据库生效
查看alert日志,报如下信息:
Thread 1 advanced to log sequence 55505 (LGWR switch)
Current log# 1 seq# 55505 mem# 0: /u02/oradata/RKMES/redo11.dbf
Current log# 1 seq# 55505 mem# 1: /u03/oradata/RKMES/redo12.dbf
Wed Dec 1 15:22:32 2010
Thread 1 cannot allocate new log, sequence 55506
Checkpoint not complete
Current log# 1 seq# 55505 mem# 0: /u02/oradata/RKMES/redo11.dbf
Current log# 1 seq# 55505 mem# 1: /u03/oradata/RKMES/redo12.dbf
所以log日志处于active状态:
SQL> Select * From v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARCHIVED STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- -------- ---------------- ------------- -----------
1 1 55515 104857600 2 YES ACTIVE 5359590265891 2010-12-1 1
2 1 55509 104857600 2 YES ACTIVE 5359590235181 2010-12-1 1
3 1 55510 104857600 2 YES ACTIVE 5359590235950 2010-12-1 1
4 1 55511 104857600 2 YES ACTIVE 5359590239936 2010-12-1 1
5 1 55512 104857600 2 YES ACTIVE 5359590254143 2010-12-1 1
6 1 55516 104857600 2 NO CURRENT 5359590270035 2010-12-1 1
7 1 55507 104857600 2 YES ACTIVE 5359590233426 2010-12-1 1
8 1 55513 104857600 2 YES ACTIVE 5359590258200 2010-12-1 1
9 1 55514 104857600 2 YES ACTIVE 5359590261923 2010-12-1 1
10 1 55508 104857600 2 YES ACTIVE 5359590234273 2010-12-1 1
原因:
当在大量更新事务操作时,在自动进行alter system switch logfile时,在线重做数据无法即时写入到磁盘datafile,导致新的日志无法去循环使用redo log 文件
解决:
1、增加LOGFILE的个数或增大LOGFILE大小(先增加比较大的logfile文件,再删除原先小的logfile文件)
方法1(手动指定文件名):
--添加日志组单个logfile文件的方法
Alter Database Logfile 'E:\ORACLE\ORADATA\INFRADB\REDO11.LOG' size 200m;
--添加日志组的多个logfile文件的方法
Alter Database Add Logfile Group 6 ('E:\ORACLE\ORADATA\INFRADB\REDO06.LOG','E:\ORACLE\ORADATA\INFRADB\REDO06_2.LOG') size 200m,
Group 7 ('E:\ORACLE\ORADATA\INFRADB\REDO07.LOG','E:\ORACLE\ORADATA\INFRADB\REDO07_2.LOG') size 200m;
方法1(自动指定文件名):
--首先做设置DB_CREATE_ONLINE_LOG_DEST_1参数
alter system set DB_CREATE_ONLINE_LOG_DEST_1 = 'E:\ORACLE\ORADATA1\INFRADB\';
alter system set DB_CREATE_ONLINE_LOG_DEST_2 = 'E:\ORACLE\ORADATA2\INFRADB\';
--再执行下面的使用自动日志组
ALTER DATABASE ADD Logfile ;
--查看
SQL> Select * From v$logfile;
GROUP# STATUS TYPE MEMBER
---------- ------- ------- ------------------------------------------------------------------------
1 ONLINE E:\ORACLE\ORADATA\INFRADB\REDO01.LOG
2 ONLINE E:\ORACLE\ORADATA\INFRADB\REDO02.LOG
3 ONLINE E:\ORACLE\ORADATA\INFRADB\REDO03.LOG
4 ONLINE E:\ORACLE\ORADATA\INFRADB\REDO04.LOG
5 ONLINE E:\ORACLE\ORADATA\INFRADB\REDO06.LOG
6 ONLINE E:\ORACLE\ORADATA1\INFRADB\INFRADB\ONLINELOG\O1_MF_6_6HD17H0X_.LOG
6 ONLINE E:\ORACLE\ORADATA2\INFRADB\INFRADB\ONLINELOG\O1_MF_6_6HD17H0X_.LOG
6 rows selected
--删除logfile文件,这样只是逻辑上删除,还需要去系统目录下把物理文件手动删除
ALTER DATABASE DROP LOGFILE GROUP 6;
2、增加设置DB_WRITER_PROCESSES参数值
alter system set DB_WRITER_PROCESSES = 3 scope=spfile;
--需要重启数据库生效
相关文章推荐
- Thread 1 cannot allocate new log 的处理办法
- Thread 1 cannot allocate new log引起的宕机事故
- Oracle 响应慢问题解决,Thread 1 cannot allocate new log, sequence xxxx Checkpoint not complete
- Thread 1 cannot allocate new log 的处理办法
- Thread 1 cannot allocate new log, sequence 10018 Checkpoint not complete
- Thread 1 cannot allocate new log 的处理办法
- Thread 1 cannot allocate new log 的处理办法 (转方便学习)
- Thread 1 cannot allocate new log 的处理办法
- Thread 1 cannot allocate new log, sequence 210510
- Thread 1 cannot allocate new log 问题处理
- linux下由于内存不足造成的 virtual memory exhausted: Cannot allocate memory, qt **.o文件 file not found
- gitlab 无法查看提交的文件Errno::ENOMEM (Cannot allocate memory - /opt/gitlab/embedded/bin/git):
- Thread 1 cannot allocate new log的问题分析 (转载)
- Thred 1 cannot allocate new log,sequence 1466
- Thread 1 cannot allocate new log
- Thread 1 cannot allocate new log的问题分析
- Thread 1 cannot allocate new log
- 驱动工程中添加新文件后出现的“cannot open source file '***.tmh'"编译错误
- Thread 1 cannot allocate new log的问题分析
- Thread 1 cannot allocate new log