• Archive log & ORA16014


    今天在导数据的时候,发现session突然hang住了,一直没反应。从hang住的地方的日志看了半天,也没发现可疑问题。因为按道理来说,导这点数据不至于这么慢啊,以前又不是没导过。

    突然想到是不是flash recovery area爆满了,查了下alert文件,果不其然,发现了如下信息...

    ================================================================

    Thu Mar 10 15:03:42 2011
    Errors in file c:\oracle\product\10.2.0\admin\lo\bdump\lo_arc1_3560.trc:
    ORA-19815: WARNING: db_recovery_file_dest_size of 4294967296 bytes is 100.00% used, and has 0 remaining bytes available.

    ....

    ARCH: Archival stopped, error occurred. Will continue retrying
    Thu Mar 10 14:58:42 2011
    Errors in file c:\oracle\product\10.2.0\admin\lo\bdump\lo_arc0_3548.trc:
    ORA-16014: log 2 sequence# 1893 not archived, no available destinations
    ORA-00312: online log 2 thread 1: 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\LO\REDO02.LOG'

    ==================================================================

    我晕....我以为这个测试数据库不是归档模式的呢,居然是归档的。现在因为flash recovery area的空间爆满,导致当前online日志没有办法归档了,所以整个系统hang住了。

    我想既然归档日志都没啥用,就干脆全删除得了,也省得再增加flash reacovery area的大小了。于是一步做,二不休就把归档日志全删除了。满以为删了之后,刚才的那个session会继续执行下去。但是等了好一会,也没见什么反应!

    通过sys用户登录,手动归档下当前日志文件...

    ====================================================

    SQL> alter system archive log current;
    alter system archive log current
    *
    ERROR at line 1:
    ORA-16014: log 2 sequence# 1893 not archived, no available destinations
    ORA-00312: online log 2 thread 1:
    'C:\ORACLE\PRODUCT\10.2.0\ORADATA\LO\REDO02.LOG'
    ====================================================

    居然还是报16014的错!看来oracle还没有“意识”到flash recovery area已经被清空了。怎么办呢?我不想重启数据库,因为我可不想再浪费时间重新导数据。

    想到可以重新设置下归档路径参数,再试试...

    ============================================================
    SQL> alter system set log_archive_dest_1='location=E:\oracle\flash_recovery_area\LO';

    System altered.

    SQL> alter system archive log current;

    System altered.

    =============================================================

    将归档路径仍然指向flash recovery area, 再重新归档下当前online 日志,发现现在可以work了。而那个导数据的session也恢复正常了!等导完数据之后,再把数据库改为非归档模式(反正是测试用数据库),免得再出这个问题。 (貌似如果一开始就增加下db_recovery_file_dest_size的大小,也是可以的)

    ==============!!!!==============

    仔细想了想,刚才的做法有点回避问题的嫌疑,为啥oracle没有“意识”到flash recovery area已经被清空了呢? 因为我是在OS层面直接手动删除的,oracle是不知晓的,这种操作也是不妥的。想到RMAN的crosscheck命令来更新oracle的"catalog"的信息,应该在手动删除之后,用corsscheck来“通知”oracle我已经做的改动才对。
    现在通过查询V$FLASH_RECOVERY_AREA_USAGE来看一下flash recovery area的使用情况...

    SQL> select * from v$flash_recovery_area_usage;

    FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
    ------------ ------------------ ------------------------- ---------------
    CONTROLFILE
    0 0 0
    ONLINELOG
    0 0 0
    ARCHIVELOG 98.97 0 87

    BACKUPPIECE 0 0 0
    IMAGECOPY
    0 0 0
    FLASHBACKLOG
    0 0 0

    6 rows selected.

    从查询结果来看,空间几乎被archive log占满了,而且一共有87个归档日志文件。这个显然是“错误”的信息,是我手动删除归档日志前的情况,可以通过RMAN (list archivelog all)来证实下...

    ==============================================================================================

    RMAN> list archivelog all;

    List of Archived Log Copies

    Key     Thrd Seq     S Low Time  Name

    ------- ---- ------- - --------- ----

    1       1    1806    X 01-MAR-11 E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARCHIVELOG\2011_03_01\O1_MF_1_1806_6PSQ7X6N_.ARC

    2       1    1807    X 01-MAR-11 E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARCHIVELOG\2011_03_01\O1_MF_1_1807_6PSQ7YD0_.ARC

    3       1    1808    X 01-MAR-11 E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARCHIVELOG\2011_03_01\O1_MF_1_1808_6PSQ8KV8_.ARC

    4       1    1809    X 01-MAR-11 E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARCHIVELOG\2011_03_01\O1_MF_1_1809_6PSQW8J7_.ARC

    5       1    1810    X 01-MAR-11 E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARCHIVELOG\2011_03_01\O1_MF_1_1810_6PSQWNNT_.ARC

    6       1    1811    X 01-MAR-11 E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARCHIVELOG\2011_03_01\O1_MF_1_1811_6PSQWZQ6_.

    ....<omit some records>...

    82      1    1887    X 10-MAR-11 E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARCHIVELOG\2011_03_10\O1_MF_1_1887_6QJVYDP7_.ARC

    83      1    1888    X 10-MAR-11 E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARCHIVELOG\2011_03_10\O1_MF_1_1888_6QJVZF8C_.ARC

    84      1    1889    X 10-MAR-11 E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARCHIVELOG\2011_03_10\O1_MF_1_1889_6QJW1LL1_.ARC

    85      1    1890    X 10-MAR-11 E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARCHIVELOG\2011_03_10\O1_MF_1_1890_6QJW4L1D_.ARC

    86      1    1891    X 10-MAR-11 E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARCHIVELOG\2011_03_10\O1_MF_1_1891_6QJW6JKB_.ARC

    87      1    1892    X 10-MAR-11 E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARCHIVELOG\2011_03_10\O1_MF_1_1892_6QJWL06O_.ARC

    88      1    1893    A 10-MAR-11 E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARC01893_0718887929.001

    89      1    1894    A 10-MAR-11 E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARC01894_0718887929.001

    90      1    1895    A 10-MAR-11 E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARC01895_0718887929.001

    91      1    1896    A 10-MAR-11 E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARC01896_0718887929.001

    92      1    1897    A 10-MAR-11 E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARC01897_0718887929.001

    93      1    1898    A 10-MAR-11 E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARC01898_0718887929.001

    94      1    1899    A 10-MAR-11 E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARC01899_0718887929.001

    95      1    1900    A 10-MAR-11 E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARC01900_0718887929.001

    96      1    1901    A 10-MAR-11 E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARC01901_0718887929.001

    97      1    1902    A 10-MAR-11 E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARC01902_0718887929.001

    98      1    1903    A 10-MAR-11 E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARC01903_0718887929.001

    RMAN>

    ==============================================================================================

    可以看到前87条记录正式之前删除的归档日志。后面的几条是我更改了归档日志路径之后的归档日志。现在通过crosscheck, 然后删除expired的文件...

    ==============================================================================================

    RMAN> crosscheck archivelog all;

    released channel: ORA_DISK_1
    allocated channel: ORA_DISK_1
    channel ORA_DISK_1: sid=106 devtype=DISK
    validation failed for archived log
    archive log filename=E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARCHIVELOG\2011_03_01\O1_MF_1_1806_6PSQ7X6N_.ARC recid=1 stamp=744666493
    validation failed for archived log


    .......<omit some records>...

    archive log filename=E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARCHIVELOG\2011_03_10\O1_MF_1_1890_6QJW4L1D_.ARC recid=85 stamp=745425174
    validation failed for archived log
    archive log filename=E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARCHIVELOG\2011_03_10\O1_MF_1_1891_6QJW6JKB_.ARC recid=86 stamp=745425235
    validation failed for archived log
    archive log filename=E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARCHIVELOG\2011_03_10\O1_MF_1_1892_6QJWL06O_.ARC recid=87 stamp=745425602
    validation succeeded for archived log
    archive log filename=E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARC01893_0718887929.001 recid=88 stamp=745427539
    validation succeeded for archived log
    archive log filename=E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARC01894_0718887929.001 recid=89 stamp=745427547
    validation succeeded for archived log
    archive log filename=E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARC01895_0718887929.001 recid=90 stamp=745427548
    validation succeeded for archived log
    archive log filename=E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARC01896_0718887929.001 recid=91 stamp=745427565
    validation succeeded for archived log
    archive log filename=E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARC01897_0718887929.001 recid=92 stamp=745427585
    validation succeeded for archived log
    archive log filename=E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARC01898_0718887929.001 recid=93 stamp=745427604
    validation succeeded for archived log
    archive log filename=E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARC01899_0718887929.001 recid=94 stamp=745427985
    validation succeeded for archived log
    archive log filename=E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARC01900_0718887929.001 recid=95 stamp=745428316
    validation succeeded for archived log
    archive log filename=E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARC01901_0718887929.001 recid=96 stamp=745428413
    validation succeeded for archived log
    archive log filename=E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARC01902_0718887929.001 recid=97 stamp=745428546
    validation succeeded for archived log
    archive log filename=E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARC01903_0718887929.001 recid=98 stamp=745428773
    Crosschecked 98 objects

    RMAN> delete expired archivelog all;

    released channel: ORA_DISK_1
    allocated channel: ORA_DISK_1
    channel ORA_DISK_1: sid=106 devtype=DISK

    List of Archived Log Copies
    Key     Thrd Seq     S Low Time  Name
    ------- ---- ------- - --------- ----
    1       1    1806    X 01-MAR-11 E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARCHIVELOG\2011_03_01\O1_MF_1_1806_6PSQ7X6N_.ARC
    2       1    1807    X 01-MAR-11 E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARCHIVELOG\2011_03_01\O1_MF_1_1807_6PSQ7YD0_.ARC
    3       1    1808    X 01-MAR-11 E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARCHIVELOG\2011_03_01\O1_MF_1_1808_6PSQ8KV8_.ARC
    4       1    1809    X 01-MAR-11 E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARCHIVELOG\2011_03_01\O1_MF_1_1809_6PSQW8J7_.ARC
    5       1    1810    X 01-MAR-11 E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARCHIVELOG\2011_03_01\O1_MF_1_1810_6PSQWNNT_.ARC
    6       1    1811    X 01-MAR-11 E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARCHIVELOG\2011_03_01\O1_MF_1_1811_6PSQWZQ6_.ARC
    7       1    1812    X 01-MAR-11 E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARCHIVELOG\2011_03_01\O1_MF_1_1812_6PSQXJW1_.ARC
    8       1    1813    X 01-MAR-11 E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARCHIVELOG\2011_03_01\O1_MF_1_1813_6PSQXTNO_.ARC
    9       1    1814    X 01-MAR-11 E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARCHIVELOG\2011_03_01\O1_MF_1_1814_6PSZ7BQM_.ARC
    ....<omit some records>...

    ==========================================================================================

    现在在查看下归档日志...
    ==========================================================================================

    RMAN> list archivelog all;


    List of Archived Log Copies
    Key     Thrd Seq     S Low Time  Name
    ------- ---- ------- - --------- ----
    88      1    1893    A 10-MAR-11 E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARC01893_0718887929.001
    89      1    1894    A 10-MAR-11 E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARC01894_0718887929.001
    90      1    1895    A 10-MAR-11 E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARC01895_0718887929.001
    91      1    1896    A 10-MAR-11 E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARC01896_0718887929.001
    92      1    1897    A 10-MAR-11 E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARC01897_0718887929.001
    93      1    1898    A 10-MAR-11 E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARC01898_0718887929.001
    94      1    1899    A 10-MAR-11 E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARC01899_0718887929.001
    95      1    1900    A 10-MAR-11 E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARC01900_0718887929.001
    96      1    1901    A 10-MAR-11 E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARC01901_0718887929.001
    97      1    1902    A 10-MAR-11 E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARC01902_0718887929.001
    98      1    1903    A 10-MAR-11 E:\ORACLE\FLASH_RECOVERY_AREA\LO\ARC01903_0718887929.001

    RMAN>

    ==========================================================================================

    可以看到只剩下有效的归档日志文件了。那么V$FLASH_RECOVERY_AREA_USAGE有变化吗?

    SQL> select * from v$flash_recovery_area_usage;

    FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
    ------------ ------------------ ------------------------- ---------------
    CONTROLFILE
    0 0 0
    ONLINELOG
    0 0 0
    ARCHIVELOG
    0 0 0
    BACKUPPIECE
    0 0 0
    IMAGECOPY
    0 0 0
    FLASHBACKLOG
    0 0 0

    6 rows selected.

    SQL
    >

    可以看到这个视图的信息被更新了。所以以后要记得手动删除归档日志文件后,用RMAN 的crosscheck来更新下catalog (control file)的信息,让Oracle知道做的更改操作。

    ================

    P.S. 看到网上有人讲了怎么解决这个问题,很全面-- http://www.beyondoracle.com/2008/10/11/archivelog-ora-16014-log-sequence-not-archived/

  • 相关阅读:
    Windows平台下Android应用抓包挖掘漏洞方法
    长城宽带核心系统存严重漏洞,数十万用户、账单信息存泄露风险
    互联网公司站点通病之弱口令
    【Python】python-一个class继承的小case
    【Python】Python-skier游戏[摘自.与孩子一起学编程]
    【Python】一个python实例:给重要的文件创建备份.摘自crossin-python简明教程
    【JMeter】JMeter完成一个java请求的压测
    【Tcpcopy】离线回放功能
    【JMeter】Jmeter-完成一个http压力测试
    Apache-AB压力测试实例
  • 原文地址:https://www.cnblogs.com/fangwenyu/p/1979876.html
Copyright © 2020-2023  润新知