• 归档日志量增长异常分析_结论为物化视图无法使用增量刷新导致


    对于客户的问题故障进行总结

    1) 问题现象

    归档日志,每小时切换最低60于次,每天产生归档日志720g,由于归档日志过多,定时清理归档不及时,导致Arch磁盘组空间极易消耗殆尽,导致业务无法操作,业务连续性收到影响。

    2)短期处理

    手工处理,临时清理一天前归档,保障业务连续性

    RMAN>DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-1';

    3)问题定位

    使用Logminer工具进行挖掘,在2019年03月05日晚上9点,与2019年03月06日早上7点,日志挖掘top3输出结果相同。

    对于数据库来说,不同时间段,业务连续性的对同一个表insert,delete,JOB定时调用可能实现。
    USERNAME    OWNER    NAME    TYPE_NAME    OPERATION    COUNT
    BJ_SELECTION    BJ_SELECTION    YD_BARGAIN_PRICE    TABLE    INSERT    1481521
    BJ_SELECTION    BJ_SELECTION    YD_BARGAIN_PRICE    TABLE    DELETE    1481521
    BJ_SELECTION                                             INTERNAL    4444594
    JOB视图查询
    SQL> select job,log_user,last_date,next_date,broken,interval,what from dba_jobs where WHAT like '%YD_BARGAIN_PRICE%';
           JOB LOG_USER                         LAST_DATE       NEXT_DATE           B      INTERVAL      WHAT
    ---------- ----------------------------- ----------------------------- -------------------
          1365 BJ_SELECTION                   2019-03-06 09:29:53
    2019-03-06 09:29:59 N
    SYSDATE + NUMTODSINTERVAL(2,'SECOND')
    dbms_refresh.refresh('"BJ_SELECTION"."YD_BARGAIN_PRICE"');       
          1366 BJ_TEST_SELECTION              2019-03-06 09:30:02
    2019-03-06 09:30:04 N
    SYSDATE + NUMTODSINTERVAL(2,'SECOND')
    dbms_refresh.refresh('"BJ_TEST_SELECTION"."YD_BARGAIN_PRICE"');
    JOB间隔2s,执行物化视图刷新。
    通过SQL视图查询,发现以下两个物化视图,确实间隔3s刷新
    SQL>
     select owner,MVIEW_NAME,UPDATABLE,UPDATE_LOG,MASTER_LINK,REWRITE_ENABLED,REWRITE_CAPABILITY,REFRESH_MODE,REFRESH_METHOD,FAST_REFRESHABLE
    ,LAST_REFRESH_TYPE,LAST_REFRESH_DATE from dba_mviews where owner in ('BJ_TEST_SELECTION','BJ_SELECTION') and MVIEW_NAME ='YD_BARGAIN_PRICE' OWNER MVIEW_NAME U UP MAST R REWRITE_C REFRES REFRESH_ FAS LAST_REF LAST_REFRESH_DATE -------------------- ---------------- - -- ---- - --------- ------ -------- --- -------- ------------------- BJ_SELECTION YD_BARGAIN_PRICE N N GENERAL DEMAND FORCE NO COMPLETE 2019-03-06 10:22:18 BJ_TEST_SELECTION YD_BARGAIN_PRICE N N GENERAL DEMAND FORCE NO COMPLETE 2019-03-06 10:22:28 SQL> select owner,MVIEW_NAME,UPDATABLE,UPDATE_LOG,MASTER_LINK,REWRITE_ENABLED,REWRITE_CAPABILITY,REFRESH_MODE,REFRESH_METHOD,
    FAST_REFRESHABLE,LAST_REFRESH_TYPE,LAST_REFRESH_DATE from dba_mviews where owner in ('BJ_TEST_SELECTION','BJ_SELECTION')
    and MVIEW_NAME ='YD_BARGAIN_PRICE' OWNER MVIEW_NAME U UP MAST R REWRITE_C REFRES REFRESH_ FAS LAST_REF LAST_REFRESH_DATE -------------------- ---------------- - -- ---- - --------- ------ -------- --- -------- ------------------- BJ_SELECTION YD_BARGAIN_PRICE N N GENERAL DEMAND FORCE NO COMPLETE 2019-03-06 10:22:26 BJ_TEST_SELECTION YD_BARGAIN_PRICE N N GENERAL DEMAND FORCE NO COMPLETE 2019-03-06 10:22:33 查询发现,对象的创建时间与归档日志量开始激增时间点匹配 select owner,object_name,object_type,status,created from dba_objects where object_name='YD_BARGAIN_PRICE' and owner='BJ_SELECTION'; OWNER OBJECT_NAME OBJECT_TYPE STATUS CREATED --------------- -------------------- ------------------- ------- ------------------- BJ_SELECTION YD_BARGAIN_PRICE TABLE VALID 2019-03-01 13:03:29 BJ_SELECTION YD_BARGAIN_PRICE MATERIALIZED VIEW VALID 2019-03-01 13:03:30
    GET_DDL物化视图创建语法
    SQL> select dbms_metadata.get_ddl('MATERIALIZED_VIEW','YD_BARGAIN_PRICE','BJ_SELECTION') ddl_text from dual;
    DDL_TEXT
    --------------------------------------------------------------------------------
    分析函数将无法使用快速增量刷新
      CREATE MATERIALIZED VIEW "BJ_SELECTION"."YD_BARGAIN_PRICE" ("ID", "PROJECT_ID", "HOS_ID", "PRODUCT_ID", "PRICE", "UPD
    ATE_TIME", "BID_DATE")
      ORGANIZATION HEAP PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
     NOCOMPRESS LOGGING
      STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
      BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
      TABLESPACE "BJ_TEST_SELECTION"
      BUILD IMMEDIATE
      USING INDEX
      REFRESH FORCE ON DEMAND START WITH sysdate+0 NEXT SYSDATE + NUMTODSINTERVAL(2,'SECOND')
      USING DEFAULT LOCAL ROLLBACK SEGMENT
      USING ENFORCED CONSTRAINTS DISABLE QUERY REWRITE
      AS select  r.ID,r.PROJECT_ID,r.HOS_ID,r.PRODUCT_ID ,
                                       r.PRICE,r.UPDATE_TIME,r.BID_DATE from (
                                                                    SELECT
                                                                      ID,
                                                                      PRODUCT_ID,
                                                                      ORG_PRICE AS PRICE,
                                                                      PROJECT_ID,
                                                                      HOS_ID,
                                                                      UPDATE_TIME,
                                                                      BID_DATE,
                                                                      row_number() over(partition by PROJECT_ID, HOS_ID
    , PRODUCT_ID order by UPDATE_TIME desc) rid
                                                                    FROM YD_BARGAIN_ITEM
                                                                    WHERE HOS_FLAG = '3'
                                                                  ) r where r.rid='1';
                                              
    SQL> select dbms_metadata.get_ddl('MATERIALIZED_VIEW','YD_BARGAIN_PRICE','BJ_TEST_SELECTION') ddl_text from dual;
       CREATE MATERIALIZED VIEW "BJ_TEST_SELECTION"."YD_BARGAIN_PRICE"••••••
    发现信息:
    物化视图涉及的对象是当前用户下同一个对象
    
    查询物化视图涉及的基表
    SQL>  select owner,object_name,object_type,status,created from dba_objects where owner='BJ_SELECTION' and object_name='YD_BARGAIN_ITEM';
    OWNER           OBJECT_NAME          OBJECT_TYPE         STATUS  CREATED
    --------------- -------------------- ------------------- ------- -------------------
    BJ_SELECTION    YD_BARGAIN_ITEM      TABLE               VALID   2018-12-22 13:59:12
    1.两个物化视图,间隔2s刷新导致的日志量激增
    2.物化视图底层涉及的基表是相同的

    4)问题解决

         在于业务人员沟通需求后,建议业务SQL调整为直接访问基表,无需物化视图中间环节处理。在业务SQL修改后,确认业务SQL的执行效率能满足需要,删除停用原物化视图,问题得到最终解决。

    5)对比

              2019年03月06日,中午12点停用两个物化视图刷新后,归档日志切换恢复正常。

    Redo日志大小对比

    20190303 13:00-14:00

    20190306 13:00-14:00

    Redo size:

    5597015.3(异常时)

    9370.6(恢复后)

  • 相关阅读:
    Dom对象,控制html元素
    运算符总结
    数组
    变量命名规则
    css实现气泡说明框
    深入理解CSS中的层叠上下文和层叠顺序
    jquery书写
    二级导航
    iis配置
    Android ListView无法触发ItemClick事件
  • 原文地址:https://www.cnblogs.com/lvcha001/p/10857095.html
Copyright © 2020-2023  润新知