zoukankan      html  css  js  c++  java
  • 记录一次归档日志爆满事件

    1.连接oracle数据库提示错误

    ORA-00257:archiver error. Connect internal only,until freed

    一看这个提示,就知道归档日志又满了,空间不够。昨天刚清理了归档日志,为啥今天又满了,就很奇怪。

    看了下日志,才知道有人在删除了大量的日志数据,导致归档暴增。

    现在sqplus进不去,咋办呢。别慌

    2.首先,找到归档日志存放路径

    show parameter archive;

    查看log_archive_desc_1后面的value是否有值,如没有,请设置一个路作为归档日志存放路径。切记不要讲归档日志存放在闪回区

    3.找到物理路径后,在有备份的情况删除归档日志,如没有备份请先行备份,以免数据丢失

    rm -rf 2018_09_08

    归档日志是每一个日期生成一个文件夹来存放日志。只要删除一天的文件即可,删除后就可以通过sqlplus连接到数据库了。这时候在通过rman去删除归档日志,因为你只删除了物理上的文件,控制文件并不知道这个文件已经没有,需要通过rman去维护控制文件

    ,连接到rman,如有多个实例,请先指定实例名

    C:UsersAdministrator>set ORACLE_SID=orcl
    
    C:UsersAdministrator>rman target /
    
    恢复管理器: Release 11.2.0.1.0 - Production on 星期一 9月 10 11:02:22 2018
    
    Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
    
    连接到目标数据库: ORCL (DBID=1466047434)
    
    RMAN>crosscheck archivelog all; #检测无效的归档日志
    RMAN>delete expired archivelog all(delete archivelog completed before 'sysdate-7'; #删除七天前的归档日志,默认七天,可以根据自己的需求进行删除

    4.删除后再次连接sqlplus就OK了。

    补充,在oracle无法加载实例的情况下如何进入rman清理归档日志

    >sqlplus /nolog                           #不登录数据库
    >conn / as sysdba                         #以DBA账户连接到Oracle
    >startup mount;                           #启动数据库到mount状态
    >rman tar get /                           #连接到rman
    >crosscheck archivelog all;                  #检查失效归档日志
    >delete expired archivelog all;                 #删除失效归档日志
    >delete archiavelog completed before 'sysdate-7';         #删除七天之前的归档日志
  • 相关阅读:
    vue.extend 拓展
    leetcode-166-分数到小数(用余数判断有没有出现小数的循环体)
    leetcode-165-比较版本号
    leetcode-162-寻找峰值
    vector.clear()不能用来清零
    leetcode-209-长度最小的子数组
    leetcode-201-数字范围按位与
    完全多部图的判断(个人思考)
    leetcode-200-岛屿的个数(dfs找所有的连通分量)
    leetcode-151-翻转字符串里的单词
  • 原文地址:https://www.cnblogs.com/Roobbin/p/9617962.html
Copyright © 2011-2022 走看看