【问题标题】:Schema growth in Oracle 11gOracle 11g 中的模式增长
【发布时间】:2015-07-10 14:30:22
【问题描述】:

在 Oracle 中获得模式增长的最佳方法是什么?我尝试使用许多 dba_hist_ 表,但它们似乎都没有让我了解特定时间(7 天)期间模式的大小和增长。这些表似乎保存了表空间增长信息,而不是架构级别。

有人可以帮忙吗?

尝试了以下表格,

dba_hist_tablespace_stat、dba_hist_seg_stat、dba_hist_seg_stat_obj、dba_hist_snapshot 等

【问题讨论】:

    标签: oracle schema


    【解决方案1】:

    检查这个查询:

    SELECT b.tsname tablspc_name ,
      MAX(b.used_size_mb) cur_used_size_mb ,
      ROUND(AVG(inc_used_size_mb),2) avg_incr_mb
    FROM
      (SELECT a.days,
        a.tsname ,
        used_size_mb ,
        used_size_mb - LAG (used_size_mb,1) OVER ( PARTITION BY a.tsname ORDER BY a.tsname,a.days) inc_used_size_mb
      FROM
        (SELECT TO_CHAR(sp.begin_interval_time,'MM-DD-YYYY') days ,
          ts.tsname ,
          MAX(ROUND((tsu.tablespace_usedsize* dt.block_size )/(1024*1024),2)) used_size_mb
        FROM dba_hist_tbspc_space_usage tsu ,
          dba_hist_tablespace_stat ts ,
          dba_hist_snapshot sp,
          dba_tablespaces dt
        WHERE tsu.tablespace_id    = ts.ts#
        AND tsu.snap_id            = sp.snap_id
        AND ts.tsname              = dt.tablespace_name
        AND sp.begin_interval_time > sysdate-7
        GROUP BY TO_CHAR(sp.begin_interval_time,'MM-DD-YYYY'),
          ts.tsname
        ORDER BY ts.tsname,
          days
        ) a
      ) b
    GROUP BY b.tsname
    ORDER BY b.tsname;
    

    并按所有者分组:

    SELECT  ds.owner as owner, 
      MAX(b.used_size_mb) cur_used_size_mb ,
      ROUND(AVG(inc_used_size_mb),2) avg_incr_mb
    FROM
      (SELECT a.days,
        a.tsname ,
        used_size_mb ,
        used_size_mb - LAG (used_size_mb,1) OVER ( PARTITION BY a.tsname ORDER BY a.tsname,a.days) inc_used_size_mb
      FROM
        (SELECT TO_CHAR(sp.begin_interval_time,'MM-DD-YYYY') days ,
          ts.tsname ,
          MAX(ROUND((tsu.tablespace_usedsize* dt.block_size )/(1024*1024),2)) used_size_mb
        FROM dba_hist_tbspc_space_usage tsu ,
          dba_hist_tablespace_stat ts ,
          dba_hist_snapshot sp,
          dba_tablespaces dt
        WHERE tsu.tablespace_id    = ts.ts#
        AND tsu.snap_id            = sp.snap_id
        AND ts.tsname              = dt.tablespace_name
        AND sp.begin_interval_time > sysdate-7
        GROUP BY TO_CHAR(sp.begin_interval_time,'MM-DD-YYYY'),
          ts.tsname
        ORDER BY ts.tsname,
          days
        ) a
      ) b
    JOIN dba_segments ds on ds.tablespace_name = b.tsname
    GROUP BY ds.owner
    ORDER BY ds.owner;
    

    【讨论】:

    • 是的。我试过这个。这仅列出所有表空间详细信息,而不是模式。这在表空间上运行良好,但我的表空间包含大约 12 个模式。我正在寻找其中一种模式的统计信息。
    • 73374.63 90.88 73374.63 90.88 73374.63 90.88 73374.63 90.88 73374.63 90.88 73374.63 90.88 73374.63 90.88 73374.63 90.88 73374.63 90.88 73374.63 90.88 73374.63 90.88 73374.63 90.88 73374.63 90.88
    • 此查询返回的所有 13 个模式的大小与我在表空间中的大小相同。总大小:73374.63MB 增长:90.88MB 我认为原因是内部查询。下面的查询仍然在表空间上运行并且它是增量的。 SELECT TO_CHAR(sp.begin_interval_time,'MM-DD-YYYY') days , ts.tsname , MAX(ROUND((tsu.tablespace_usedsize* dt.block_size )/(1024*1024),2)) used_size_mb FROM dba_hist_tbspc_space_usage tsu , dba_hist_tablespace_stat ts , dba_hist_snapshot sp, dba_tablespaces dt WHERE tsu.tablespace_id = ts.ts# ....
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    相关资源
    最近更新 更多