Oracle

Oracle归档问题处理

浅时光 · 2月12日 · 2020年 8582次已读

一、场景描述

最近在线上系统出现页面登入按钮为灰色,无法登入的问题,页面显示正常,检查代码也没问题,后来发来源(Source):https://www.dqzboy.com现问题是由于数据库连来源(Source):https://www.dqzboy.com接异常导致出现此问题,具体报错和解决方案如下

二、问题描述

  • 数据库连接报错信息如下:
ORA-00257: archiver error. Connect internal only, until freed
  • 网上搜索到问题原因是由于数据库归档日志满了导致出现此问题
  • 解决方案是登入数据库查看归档日志存储目录,进行手动清除
Oracle归档问题处理-浅时光博客

三、解决问题

1、登入数据库

[[email protected]oracle-db ~]# su - oracle
[[email protected] ~]$ sqlplus "/as sysdba"

2、查询log sequence

  • 一般VALUE为空时,可以用archive log list;检查一下归档目录和log sequence
SQL> archive log list;
Database log mode	  Archive Mode	//数据库日志模式:存档模式
Automatic archival	  Enabled    //自动存档:启用
Archive destination	  USE_DB_RECOVERY_FILE_DEST  //存档终点
Oldest online log sequence     8951  //最早的联机日志序列
Next log sequence to archive   8951  //下一个存储日志序列
Current log sequence	       8953      //当前日志序列

3、检查flash recovery area的使用情况

SQL> select * from v$flash_recovery_area_usage;
Oracle归档问题处理-浅时光博客

4、计算flash recovery area已经占用的来源(Source):https://www.dqzboy.com空间

SQL> select sum(percent_space_used)*3/100 from v$flash_recovery_area_usage;
Oracle归档问题处理-浅时光博客

5、检查recovery目录

SQL> show parameter db_recovery_file_dest;   //查看归档日志位置
Oracle归档问题处理-浅时光博客
  • 由上可见,归档位置用的是默认值,放在flash_recovery_area下

6、登入RMAN

[[email protected] ~]$ rman target sys/oracle nocatalog
RMAN> 

7、检查无用的archivel来源(Source):https://www.dqzboy.comog

RMAN> crosscheck archivelog all;

8、删除过期的归档

  • 删除截止到当前时间的前一天的所有archivelog
RMAN> list expired archivelog all;
RMAN> delete expired archivelog all;    #删除所有归档日志
RMAN> delete archivelog until time 'sysdate-1';     #删除截止当前前一天的所有日志
Oracle归档问题处理-浅时光博客

9、再次查询flash recovery area的使用情况

SQL> select * from v$flash_recovery_area_usage;
Oracle归档问题处理-浅时光博客
来源(Source):https://www.dqzboy.com
Oracle归档问题处理-浅时光博客
1 条回应
  1. Owen未知2020-8-11 · 0:14

    最近也遇到了类似的问题,看了博主文章解决了

本站已安全运行: | 耗时 0.387 秒 | 查询 82 次 | 内存 15.49 MB