ORA-00257 ORA-16014 ORA-00333的处理

今天一个数据库在连接的时候提示“ORA-00257: 归档程序错误。在释放之前仅限于内部连接”,按经验这种情况一般是由于归档日志空间不足引起的,但种情况并不可能在这个数据中出现,因为这个数据库用于放归档日志的空间有10G,使而且数据库使用率并不高,再说每天都会清除7天前的归档日志,不可能这么快就满的。

于是打开SQLPLUS看看,

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                12.72                         0              35

BACKUPPIECE                   0                         0               0

IMAGECOPY                     0                         0               0

FLASHBACKLOG                  0                         0               0

已选择6行。

SQL> show parameter db_recovery;

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

db_recovery_file_dest                string      E:\Oracle\flash_recovery_area

db_recovery_file_dest_size           big integer 10G

才用了1.2G,再看看磁盘空间,还有13G的剩余空间,然后再打开RMAN执行crosscheck archivelog all,发现全部归档日志都是无效的,再执行DELETE EXPIRED ARCHIVELOG ALL,没有无效的日志。

执行

SQL> alter system archive log current;

ORA-16014: 日志 2 的序列号 2514 未归档, 没有可用的目的地

ORA-00312: 联机日志 2 线程 1: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\FINANCE\REDO02.LOG'

打开aler日志发现

Errors in file d:\oracle\product\10.2.0\admin\finance\bdump\finance_arc0_816.trc:

ORA-00333: 重做日志读取块 1 计数 2048 出错

ORA-00312: 联机日志 2 线程 1: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\FINANCE\REDO02.LOG'

ORA-27091: 无法将 I/O 排队

ORA-27070: 异步读取/写入失败

OSD-04006: ReadFile() 失败, 无法读取文件

O/S-Error: (OS 1450) 系统资源不足,无法完成请求的服务。

Fri Jun 22 11:31:03 2007

Errors in file d:\oracle\product\10.2.0\admin\finance\bdump\finance_arc0_816.trc:

ORA-00333: 重做日志读取块 1 计数 2048 出错

ARC0: All Archive destinations made inactive due to error 333

Committing creation of archivelog 'D:\ORACLE\BACKUP\FLASH_RECOVERY_AREA\FINANCE\ARCHIVELOG\2007_06_22\O1_MF_1_2514_37PJMOX9_.ARC' (error 333)

Deleted Oracle managed file D:\ORACLE\BACKUP\FLASH_RECOVERY_AREA\FINANCE\ARCHIVELOG\2007_06_22\O1_MF_1_2514_37PJMOX9_.ARC

ARC0: Failed to archive thread 1 sequence 2514 (333)

ARCH: Archival stopped, error occurred. Will continue retrying

Fri Jun 22 11:31:05 2007

Errors in file d:\oracle\product\10.2.0\admin\finance\bdump\finance_arc0_816.trc:

ORA-16038: 日志 2 序列号 2514 无法归档

ORA-00333: 重做日志读取块  计数  出错

ORA-00312: 联机日志 2 线程 1: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\FINANCE\REDO02.LOG'

Fri Jun 22 11:31:06 2007

Successfully onlined Undo Tablespace 8.

Fri Jun 22 11:31:06 2007

SMON: enabling tx recovery

Fri Jun 22 11:31:07 2007

Database Characterset is ZHS16GBK

Fri Jun 22 11:31:09 2007

Archiver process freed from errors. No longer stopped

Fri Jun 22 11:31:10 2007

ARC0: Archiving not possible: No primary destinations

Fri Jun 22 11:31:10 2007

replication_dependency_tracking turned off (no async multimaster replication found)

Fri Jun 22 11:31:10 2007

ARC0: Failed to archive thread 1 sequence 2514 (4)

ARCH: Archival stopped, error occurred. Will continue retrying

Fri Jun 22 11:31:10 2007

Errors in file d:\oracle\product\10.2.0\admin\finance\bdump\finance_arc0_816.trc:

ORA-16014: 日志 2 的序列号 2514 未归档, 没有可用的目的地

ORA-00312: 联机日志 2 线程 1: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\FINANCE\REDO02.LOG'

情况应该是联机日志有问题,执行

SQL> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIME

---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------------

         1          1       2534   52428800          1 YES ACTIVE           485660064     22-6月 -07

         2          1       2514   52428800          1 NO  INACTIVE         484845530     21-6月 -07

         3          1       2535   52428800          1 NO  CURRENT          485661944     22-6月 -07

是非当前联机日志,执行

SQL> shutdown immediate;

SQL> startup mount;

SQL> alter database clear unarchived logfile group 2;

数据库已更改。

如果此日志已经归档的话就要用alter database clear logfile group 2;

SQL> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIME

---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------------

         1          1       2538   52428800          1 YES ACTIVE           485702718     22-6月 -07

         2          1       2539   52428800          1 NO  CURRENT          485703591     22-6月 -07

         3          1       2537   52428800          1 YES INACTIVE         485678028     22-6月 -07

SQL> alter system archive log current;

系统已更改。

现在系统就正常了,马上做上次完全备份,安心。但不知道是怎样引起这种情况,会不会磁盘有问题呢?

  1. da shang
    donate-alipay
               donate-weixin weixinpay

发表评论↓↓