Oracle

Oracle归档问题处理

温馨提示:本文最后更新于2021-03-02 18:31:16,某些文章具有时效性,若有错误或已失效,请在下方留言或提交工单提交工单
浅时光 · 2月12日 · 2020年 本文1212个字,预计阅读4分钟 76268次已读

一、场景描述

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

二、问题描述

  • 数据库连接报错信息如下:
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已经占用的空间

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、检查无用的archivelog

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归档问题处理-浅时光博客



本文作者:浅时光
原文链接:https://www.dqzboy.com/501.html
版权声明:知识共享署名-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)协议进行许可
转载时请以超链接形式标明文章原始出处和作者信息

1 条回应

必须 注册 为本站用户, 登录 后才可以发表评论!

  1. Owen未知2020-8-11 · 0:14

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

本站已稳定运行: | 耗时 0.399 秒 | 查询 11 次 | 内存 38.17 MB