某日打开数据库
sqlplus 登陆oracle库
提示如下错误
ORA-00257: archiver error. Connect internal only, until freed.
而拒绝登陆
至此猜想大概是空间不足了
检查空间使用情况:
 SQL> select * from v$flash_recovery_area_usage;
 FILE_TYPE    PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
 ------------ ------------------ ------------------------- ---------------
 CONTROLFILE                   0                         0               0
 ONLINELOG                     0                         0               0
 ARCHIVELOG                100                         0             527
 BACKUPPIECE                   0                         0               0
 IMAGECOPY                     0                         0               0
 FLASHBACKLOG                  0                         0               0
到归档目录/oracle/home/archive查看我去文件不计其数(哈哈有点夸张啊)
df —Th查看
发现系统磁盘使用接近100%
激愤之间在/home/ora cle/archive 下rm -rf *(很不计后果的删除啊)库为实验库没有什么数据
删完之后空间有了然而很快就会就会自动生成回来(数据库开了归档)有点不解
几分钟之间磁盘又爆满!!!!!
狗狗百度通过rman删除了以前的归档,大的归档文件没有了,但是小的归档还在继续生成(郁闷要疯掉!!!!)不过磁盘空间增长的不再迅猛了
awr报告

Load Profile
------------------------------------------
Per Second | Per Transaction
------------------------------------------
Redo size: | 5,877,238.13 114,640,344.44
____________________________________________
Logical reads:| 122,295.99 2,385,483.38
________________________________________________
Block changes:| 62,850.84 1,225,957.04
Redosize每秒产生的数据有多大!!!!
不过至此库可以正常登陆了(空间多出来了毕竟)
然后问题还是没有解决,看日志
发现诡异的问题:重做日志组每隔一分钟就切换一次 日志信息如下:
--------------------------------------------------------
Thread 1 cannot allocate new log, sequence 2039
Checkpoint not complete
  Current log# 3 seq# 2038 mem# 0: /oracle/app/oradata/TEST/redo03.log
Thread 1 advanced to log sequence 2039
  Current log# 1 seq# 2039 mem# 0: /oracle/app/oradata/TEST/redo01.log
Sat Dec 15 17:58:39 2012
Thread 1 cannot allocate new log, sequence 2040
Checkpoint not complete
网上说处理数据库业务处理的频繁或重做日志文件太小就会出现类似情况,这是一个实验库,本身没有什么业务所以不可能是这种情况。增加日志组看看,由原来的三组增加到六组,问题依然依旧
日志信息如下
--------------------------------------------------------------------
Thread 1 advanced to log sequence 2055
  Current log# 5 seq# 2055 mem# 0: /oracle/app/oradata/TEST/redo51.log
Sat Dec 15 18:15:59 2012
Thread 1 advanced to log sequence 2056
  Current log# 6 seq# 2056 mem# 0: /oracle/app/oradata/TEST/redo61.log
Sat Dec 15 18:17:04 2012
Thread 1 advanced to log sequence 2057
  Current log# 1 seq# 2057 mem# 0: /oracle/app/oradata/TEST/redo01.log
Sat Dec 15 18:18:10 2012
Thread 1 advanced to log sequence 2058
  Current log# 2 seq# 2058 mem# 0: /oracle/app/oradata/TEST/redo02.log
Sat Dec 15 18:19:15 2012
-------------------------------------------------------
日志还是在不停地切换呐!
继续查资料网上说可能job任务产生影响,嗯突然有点印象做主备库时添了条计划任务,某个表每分钟进行同步检查,现在备库已经移除,可能问题的根源在这个计划任务上
马上查看果真有每一秒检查一次
 begin
  2  dbms_job.remove(1);
  3  end;
  4  /
不过一定要commit才生效!
至此问题解决redo日志切换正常!!

终究原因是计划任务在搞怪,难道计划任务也会印象重做日志的切换?欢迎继续探讨