ORA-00257 mysql_ORA-00257错误诊断及解决方法

我在实际项目中遇到了ORA-00257错误(空间不足错误),通过查找资料,绝大部分说这是由于归档日志太多,占用了全部的硬盘剩余空间

我在实际项目中遇到了ORA-00257错误(空间不足错误),通过查找资料,绝大部分说这是由于归档日志太多,占用了全部的硬盘剩余空间导致的,通过简单删除日志或加大存储空间就能够解决。但是我在Oracle 10g上发现,存储空间还有很大,却也报这个错误。原来是Oracle 10g中新的特性,对Flash Recovery的管理导致的。

1、软硬件环境

服务器 HP Proliant DL580G4

操作系统 RHEL5.4

数据库 Oracle 10.2.0.4.0

2、问题现象

数据库系统已经试运行了半个多月,在7月24日晚上连接数据库后做数据更新时出现ORA-00257错误,如下图。

提示归档错误,,通过查找ORACLE错误代码,解释为硬盘空间不足,需要删除归档日志增加空间,但是服务器可用空间200GB,目前只用了10GB左右,这是为什么呢?

3、诊断过程:

(1)查看ORACLE数据库归档日志情况

[root@db2/]# cd /oracle/flash_recovery_area/HKCHR/archivelog

[root@db2 archivelog]# ls

可以查看到,出现问题之前数据库归档处理一直是正常的。

(2)查看数据库REDOLOG情况

[oracle@db2~]$ sqlplus “/as sysdba”

SQL> select * from v$log;

可以发现ARC状态为NO,说明系统无法正常归档。

(3)手工切换日志

SQL> alter system switch logfile;

alter system switch logfile

*

第1行出现错误:

ORA-01013: 用户请求取消当前的操作

在等待长时间没反应后,中断操作,手工切换日志没有成功。

(4) 查看Oracle数据库后台归档服务进程

[oracle@db2~]$ ps -ef|grep oracle

……

oracle 20923 1 0 Jul24 ? 00:00:01 ora_pmon_hkchr

oracle 20925 1 0 Jul24 ? 00:00:00 ora_psp0_hkchr

……

[oracle@hrmsdb ~]$

后台进程都正常运行。

(5) 查看FLASH_RECOVERY_AREA空间使用情况

[root@db2/]# cd /oracle

[root@db2 oracle]# ls

admin flash_recovery_area oraInventory product

[root@db2 oracle]# du -a -k flash_recovery_area

……

[root@db2 oracle]#

FLASH_RECOVERY_AREA空间使用了3.35GB

(6)查看FLASH_RECOVERY_AREA空间中各部分使用情况

SQL> select * from v$recovery_file_dest;

NAME SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES

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

/oracle/flash_recovery_area 2147483648 2134212608 0 35

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 69.97 0 40

BACKUPPIECE 30.01 0 2

IMAGECOPY 0 0 0

FLASHBACKLOG 0 0 0

已选择6行。

发现ARCHIVELOG占近70%,BACKUPPIRCR占了30%,这样FLASH_RECOVERY_AREA空间的空间已经被完全占据了。

4、解决过程

根据数据库目前可用存储空间为200GB、FLASH_RECOVERY_AREA空间为2GB的实际情况,把FLASH_RECOVERY_AREA的空间修改为50GB。

SQL> alter system set DB_RECOVERY_FILE_DEST_SIZE=50g scope=both;(如报错可用scope=spfile)

系统已更改。

logo.gif

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值