Oracle Thread 1 cannot allocate new log_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2010 | 回复: 0   主题: Oracle Thread 1 cannot allocate new log        下一篇 
johnnyfox
注册用户
等级:新兵
经验:41
发帖:90
精华:0
注册:2011-12-12
状态:离线
发送短消息息给johnnyfox 加好友    发送短消息息给johnnyfox 发消息
发表于: IP:您无权察看 2015-7-23 12:09:23 | [全部帖] [楼主帖] 楼主

--现象:
查看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;
--需要重启数据库生效


--转自北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论