2013-02-04 33 views
0

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

有人可以帮忙吗?

尝试下面的表格,

dba_hist_tablespace_stat,dba_hist_seg_stat,dba_hist_seg_stat_obj,DBA_HIST_SNAPSHOT等

回答

0

入住此查询:

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; 
+0

是。我试过这个。这只列出了所有的表空间细节,而不是模式。这在表空间上工作正常,但我的表空间包含大约12个模式。我正在寻找其中一个模式的统计数据。 – learner

+0

检查的最后一个适合你... – MiGro

+0

73374.63 \t 90.88 73374.63 \t 90.88 73374.63 \t 90.88 73374.63 \t 90.88 73374.63 \t 90.88 73374.63 \t 90.88 73374.63 \t 90.88 73374.63 \t 90.88 73374.63 \t 90.88 73374.63 \t 90.88 73374.63 \t 90.88 73374.63 \t 90.88 733 74.63 \t 90.88 – learner