视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
ORA-00257错误诊断及解决方法
2020-11-09 11:13:21 责编:小采
文档


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

下载本文
显示全文
专题