Oracle

Oracle归档疑难解析与解决

浅时光博客 · 2月12日 · 2020年 109437次已读

一、场景描述

近期,在线系统遇到了一个问题:页面上的登录按钮呈灰色,导致无法完成登录操作。尽管页面显示正常,经过对代码的仔细检查也未发现问题。经过进一步调查,我们发现问题的根源是数据库连接出现异常,这才导致了登录问题的出现。

具体而言,报错信息显示数据库连接存在问题,这导致系统无法正确地获取必要的用户验证信息,从而影响了登录按钮的可用性。通过下面的操作解决这一问题。

二、问题描述

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

三、解决问题

1、登入数据库

[root@oracle-db ~]# su - oracle
[oracle@oracle-db ~]$ sqlplus "/as sysdba"

2、查询log sequence

  • 一般VALUE为空时,可以用archive log list文章来源(Source):浅时光博客;检查一下归档目录和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;

4、计算flash recovery area已经占用的空间

SQL> select sum(percent_space_used)*3/100 from v$flash_recovery_area_usage;

5、检查recovery目录

SQL> show parameter db_recovery_file_dest;   //查看归档日志位置

由上可见,归档位置用的是默认值,放在flash_recovery_area下

6、登入RMAN

原文链接:https://www.dqzboy.com
[oracle@oracle-db ~]$ rman target sys/oracle nocatalog
RMAN> 

7、检查无用的archivelog

RMAN> crosscheck archivelog all;

8、删除过期的归档

  • 删除截止到当前时间的前一天的所有archivelog
原文链接:https://www.dqzboy.com
RMAN> list expired archivelog all;
RMAN> delete expired archivelog all;    #删除所有归档日志
RMAN> delete archivelog until time 'sysdate-1';     #删除截止当前前一天的所有日志

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

SQL> select * from v$flash_recovery_area_usage;

本文作者:浅时光博客
原文链接:https://www.dqzboy.com/501.html
版权声明:知识共享署名-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)协议进行许可,转载时请以>超链接形式标明文章原始出处和作者信息
免责声明:本站提供的内容仅限于个人学习和研究使用;禁止将内容用于商业或非法用途。下载后请在24小时内彻底删除,否则后果由用户承担。访问和下载本站内容即表示您已同意上述条款 。

1 条回应

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

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

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