zoukankan      html  css  js  c++  java
  • 报错ORA-19809 ORA-19804

    现象

    问题检查

    查看群集状态,发现归档挂起

    [oracle@jydb1 ~]$ srvctl status database -d orcl -v

    查看空间使用情况

    #大小查看
    SQL> show parameter db_recovery
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    db_recovery_file_dest                string      +FRA
    db_recovery_file_dest_size           big integer 18471M

    #占用比查看
    SQL> select sum(percent_space_used) from v$flash_recovery_area_usage; SUM(PERCENT_SPACE_USED) ----------------------- 99.88 #asm磁盘查看 SQL> select group_number,name,total_mb,free_mb from v$asm_diskgroup; GROUP_NUMBER NAME TOTAL_MB FREE_MB ------------ ------------------------------ ---------- ---------- 1 DATA 20480 7236 2 FRA 20480 1732 3 MGMT 51200 14408 4 OCR 3072 2204

    结论:

    db_recovery_file_dest_size已使用完,flash recovery area闪回恢复区空间满,无法再归档。  

     处理

    解决办法:
    1.将归档设置到其他目录,修改alter system set log_archive_dest = 其他路径
    2.转移或者删除闪回恢复区里的归档日志。
    3.增大闪回恢复区。

    适合我的方案:在RMAN下删除目标数据库中过期的或是删除指定时间之前的归档日志。

    [oracle@jydb1 ~]$ rman target /
    
    -- 运行这个命令可以把无效的expired的archivelog标出来。
    RMAN> crosscheck archivelog all;
    
    使用目标数据库控制文件替代恢复目录
    分配的通道: ORA_DISK_1
    通道 ORA_DISK_1: SID=101 实例 = racdb11 设备类型 = DISK
    对归档日志的验证成功
    
    ...
    ...
    ...
    对归档日志的验证成功
    归档日志文件名 = +FRA/ORCL/ARCHIVELOG/2018_09_10/thread_2_seq_69.291.986488695 RECID=150 STAMP=986488701
    对归档日志的验证成功
    归档日志文件名 = +FRA/ORCL/ARCHIVELOG/2018_09_10/thread_2_seq_70.289.986488703 RECID=151 STAMP=986488703
    已交叉检验的 80 对象
    
    ----删除过期的归档日志
    RMAN> delete expired archivelog all;
    
    释放的通道: ORA_DISK_1
    分配的通道: ORA_DISK_1
    通道 ORA_DISK_1: SID=101 实例 = racdb11 设备类型 = DISK
    说明与资料档案库中的任何归档日志都不匹配
    
    RMAN> delete archivelog until time "sysdate-10"; --删除10天前的归档日志。或者:delete noprompt archivelog until time "sysdate - 10";
    或者:
    RMAN> delete archivelog until time "to_date('2018-08-01 23:59:59','yyyy-mm-dd hh24:mi:ss')"; --删除指定日期之前的所有归档日志。

    验证

    查看空间使用情况,看到已经恢复正常

    SQL> select sum(percent_space_used) from v$flash_recovery_area_usage;
    
    SUM(PERCENT_SPACE_USED)
    -----------------------
                      29.31

    查看数据库状态也恢复到了open

    [oracle@jydb1 ~]$ srvctl status database -d orcl -v
    实例 racdb11 正在节点 jydb1 上运行。实例状态: Open。
    实例 racdb12 正在节点 jydb2 上运行。实例状态: Mounted (Closed),Open Initiated。

    进一步优化策略

    指定retention的策略,使得archivelog不至于这样增加

    RMAN> configure retention policy to recovery window of 7 days;
    旧的 RMAN 配置参数:
    CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
    新的 RMAN 配置参数:
    CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
    已成功存储新的 RMAN 配置参数

      


    ---------------------
    作者:weixin_40283570
    来源:CSDN
    原文:https://blog.csdn.net/weixin_40283570/article/details/81533204
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    Mysql上手
    Markdown精简版个人语法
    Sublime Text3插件管理
    Eclipse的快捷键
    使用github page 页面建博客中遇到的几个小问题
    2015 圣诞 限免软件分享
    啦啦啦-根据关键字进行字符串拷贝
    使用 sprintf swprintf 函数进行 unicode 与 ANSI 编码的转换
    c++11: 用户定义字面量
    通过模板获取数组长度
  • 原文地址:https://www.cnblogs.com/-abm/p/9935022.html
Copyright © 2011-2022 走看看