Oracle Tablespace and Object Growth

 


>>>>>>>>>>  Tablespace Growth >>>>>>>>>>  



col ts_mb for 999,999,999,999.90
 col max_mb for 999,999,999,999.90
 col used_mb for 999,999,999,999.90
 col last_mb for 999,999,999,999.90
 col incr for 999,999.90
 
  select * from (
  select v.name
 , v.ts#
 , s.instance_number
 , h.tablespace_size
  * p.value/1024/1024 ts_mb
 , h.tablespace_maxsize
  * p.value/1024/1024 max_mb
 , h.tablespace_usedsize
  * p.value/1024/1024 used_mb
 , to_date(h.rtime, 'MM/DD/YYYY HH24:MI:SS') resize_time
 , lag(h.tablespace_usedsize * p.value/1024/1024, 1, h.tablespace_usedsize * p.value/1024/1024)
  over (partition by v.ts# order by h.snap_id) last_mb
 , (h.tablespace_usedsize * p.value/1024/1024)
  - lag(h.tablespace_usedsize * p.value/1024/1024, 1, h.tablespace_usedsize * p.value/1024/1024)
  over (partition by v.ts# order by h.snap_id) incr
  from dba_hist_tbspc_space_usage h
 , dba_hist_snapshot s
 , v$tablespace v
 , dba_tablespaces t
 , v$parameter p
  where h.tablespace_id = v.ts#
  and v.name = t.tablespace_name
  and t.contents not in ('UNDO', 'TEMPORARY')
  and p.name = 'db_block_size'
  and h.snap_id = s.snap_id
  /* For a specific time */
  and s.begin_interval_time > sysdate - 1/12
  /* For a specific tablespace */
  and v.ts# = 1
 order by v.name, h.snap_id asc)
  where incr > 0;



 
SET COLSEP '|'
SET LINESIZE 190

select TABLESPACE_ID,NAME,TABLESPACE_SIZE*8192/1024/1024 "TABLESPACE_SIZE",TABLESPACE_USEDSIZE*8192/1024/1024 "TABLESPACE_USEDSIZE",BEGIN_INTERVAL_TIME
from DBA_HIST_TBSPC_SPACE_USAGE,V$TABLESPACE,DBA_HIST_SNAPSHOT
where DBA_HIST_TBSPC_SPACE_USAGE.snap_id in (
select snap_id from dba_hist_snapshot
where DECODE(SUBSTR(TO_CHAR(BEGIN_INTERVAL_TIME,'DD-MM-YY HH24:MI:SS'),10,2),'10',1,0)= 1)
AND DBA_HIST_TBSPC_SPACE_USAGE.TABLESPACE_ID=V$TABLESPACE.TS#
AND NAME LIKE '&TABLESPACE_NAME'
AND DBA_HIST_SNAPSHOT.SNAP_ID=DBA_HIST_TBSPC_SPACE_USAGE.SNAP_ID
ORDER BY DBA_HIST_SNAPSHOT.SNAP_ID;



select 
   dhs.begin_interval_time,
   dt.tablespace_name,
   trunc(dhtsu.tablespace_size*dt.block_size/1024/1024/1024)  gb,
   trunc(dhtsu.tablespace_usedsize*dt.block_size/1024/1024/1024) gb_used
from
   dba_hist_tbspc_space_usage dhtsu,
   v$tablespace vts,
   dba_tablespaces dt,
   dba_hist_snapshot dhs
where dhtsu.snap_id = dhs.snap_id
and   dhtsu.tablespace_id = vts.ts#
and   vts.name          = dt.tablespace_name 
order by 2,1;



select b.tsname tablespace_name , MAX(b.used_size_mb) cur_used_size_mb , round(AVG(inc_used_size_mb),2)avg_increas_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;



>>>>>>>>>>  Object Growth >>>>>>>>>>

column owner format a16
column object_name format a36
column start_day format a11
column block_increase_bytes 9999999999

select   obj.owner, obj.object_name,
         to_char(sn.BEGIN_INTERVAL_TIME,'RRRR-MON-DD') start_day,
         sum(a.SPACE_USED_DELTA) block_increase_bytes
from     dba_hist_seg_stat a,
         dba_hist_snapshot sn,
         dba_objects obj
where    sn.snap_id = a.snap_id
and      a.instance_number = sn.instance_number
and      obj.object_id = a.obj#
and      obj.owner not in ('SYS','SYSTEM')
and      end_interval_time between to_timestamp('01-JAN-2012','DD-MON-RRRR')
         and to_timestamp('02-FEB-2012','DD-MON-RRRR')
group by obj.owner, obj.object_name,
         to_char(sn.BEGIN_INTERVAL_TIME,'RRRR-MON-DD')
order by obj.owner, obj.object_name
/




select * from (select to_char(end_interval_time, 'MM/DD/YY') mydate, sum(space_used_delta) / 1024 / 1024 "Space used (MB)", avg(c.bytes) / 1024 / 1024 "Total Object Size (MB)",
round(sum(space_used_delta) / sum(c.bytes) * 100, 2) "Percent of Total Disk Usage"
from
dba_hist_snapshot sn,
dba_hist_seg_stat a,
dba_objects b,
dba_segments c
where begin_interval_time > trunc(sysdate) - &days_back
and sn.snap_id = a.snap_id
and b.object_id = a.obj#
and b.owner = c.owner
and b.object_name = c.segment_name
and c.segment_name = '&segment_name'
group by to_char(end_interval_time, 'MM/DD/YY'))
order by to_date(mydate, 'MM/DD/YY')
/

How To Get Table Growth History Information? (Doc ID 1395195.1)

Comments

Popular posts from this blog

Oracle Materialized View In-Depth and Materialized View refresh issues in 19c

How To Purge Optimizer Statistics Advisor Old Records From 12.2 Onwards (Doc ID 2660128.1)

Oracle database 19c Compression Types