Home > Database > Mysql Tutorial > ORA-00257错误诊断及解决方法

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

WBOY
Release: 2016-06-07 17:19:43
Original
2753 people have browsed it

我在实际项目中遇到了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)
  系统已更改。

linux

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template