zoukankan      html  css  js  c++  java
  • ORA-03113:通信通道的文件结尾【转载】

    ORA-03113:通信通道的文件结尾 进程ID4781

    查看alter.log
    发现提示联机日志文件有问题
    网上的方法看不是很懂,看到有很多错误
    ora-16038:日志无法归档
    ora-00312
    ORA-19809: limit exceeded for recovery files 
    ora-19804:无法回收。。。磁盘空间
    原来oracle11g在默认情况下,归档日志是保存在闪存恢复区的,并且闪存恢复区的大小默认是2g,空间满了之后就没有办法再归档了。

    启动数据库到mount状态,statup mount 更改recovery files空间大小,然后rman,删除过期的备份,指定备份策略,定期删除备份。

    SQL> show parameter db_recovery_file_dest
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    db_recovery_file_dest                string      d:appqiaoflash_recovery
                                                     _area
    db_recovery_file_dest_size           big integer 2G
     
    解决办法,有3种:
    1.加大闪存恢复区。
    ALTER SYSTEM SET db_recovery_file_dest_size=50g scope=both;

    2.归档路径设置到其它地方。
    alter system set log_archive_dest = 其他路径

    3.删除或转移归档日志。
    打开RMAN
    rman target /
    RMAN>crosscheck archivelog all;   -- 运行这个命令可以把无效的expired的archivelog标出来。
    RMAN>delete expired archivelog all;  -- 直接全部删除过期的归档日志。
    RMAN>delete noprompt archivelog until time "sysdate -3";  --删除系统当前日期3天前的归档,不经过提示、直接删除。或(DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7')

    指定retention的策略(RMAN 的备份保留策略),使得archivelog不至于这样增加
    命令格式:
    configure retention policy clear ---------------备份保留策略使用默认值
    configure retention policy to none------------不采用任何备份保留策略
    configure retention policy to recover window of integer days------------基于时间的备份保留策略,保留几天前的备份文件
    configure retention policy to redundancy integer-------基于冗余备份的备份保留策略,对备份文件保留几个冗余备份
    REPORT OBSOLETE命令查看当前处于废弃状态的备份文件
    DELETE OBSOLET 命令可立刻删除备份保留策略 不需要的文件(废弃文件)。


    RMAN>configure retention policy to recovery window of 7 days;   保留七天内的所有备份。
    RMAN>configure retention policy to redundancy 3;                为每个数据文件保留3个冗余备份。
    SQL>alter system db_recovery_file_dest_size=4G scope=both;

    当然我们可以写一个简单的shell脚本,对归档日志进行管理

    #!/bin/bash 
    #confirm oracle runing environment 
    . /home/oracle/.bash_profile 
    ps -ef |grep dbw0_$ORACLE_SID | grep -v grep >> /dev/null 
    if [ $? -eq 0 ];then 
       rman target / log=/orabackup/delarch`date +%Y%m%d`.log  <<EOF 
       crosscheck archivelog all; 
       delete noprompt  expired archivelog all; 
       backup as compressed backupset archivelog all format '/orabackup/cron-archlog_%U_%d_%T_%s_%p' delete input; 
    exit; 
    EOF 
    fi 

    以上脚本对oracle归档进行了备份然后删除,根据自己需要修改,然后添加到crontab

  • 相关阅读:
    后台跨域(CORS)
    golang 处理TCP粘包问题
    使用axios 发送ajax 下载文件
    Golang:在Redigo的RedisPool上选择DB
    puppeteer添加代理
    mongodb 权限操作
    alpine下安装icu-dev
    golang 导出CSV文件中文乱码的问题
    shell笔记
    Convert rune to int
  • 原文地址:https://www.cnblogs.com/eos666/p/13937858.html
Copyright © 2011-2022 走看看