Топ-100
top of page
Волнистый абстрактный фон
CerebroSQL

Менеджер пространств СУБД Oracle

Oracle storage manager - модуль позволяет управлять табличными пространствами, файлами данных. Отслеживать утилизацию места в них, в том числе про активно, собирая статистику по динамике утилизации и оценивая необходимость в добавлении файлов.

TSManager general
Страница "TABLESPACE SIZE"

Страница "TABLESPACE SIZE"

 

На странице отображается информация о размере табличных пространств/файлах данных базы данных Oracle, свободном месте в них

CerebroSQL - Oracle tablespace size page
Переключатель "Query using"

Переключатель "Query using"

Определяет используемые запросы для формирования дерева "Tree tablespace" и информации о свободном месте в табличных пространствах в списке "Size object

Дерево "Tree tablespace"

Дерево "Tree tablespace"

 

Обновление списке осуществляется при нажатии кнопки "TABLESPACE SIZE" или кнопки "Refresh tree"

 

  • Переключатель "Quick (do not use dba_free_space)"

select t.tablespace_name,       

       t.contents,       

       t.status       

  from DBA_TABLESPACES t 

order by t.contents, t.tablespace_name 

  • Переключатель "Full (use dba_free_space)"

select t.tablespace_name,       

       t.contents,       

       t.status,

       case  when t.CONTENTS<>'TEMPORARY' then           

             (select count(*)||' | '||

                     round(sum(bytes)/1024/1024/1024,2)||' GB'

                from DBA_DATA_FILES d

               where d.TABLESPACE_NAME=t.TABLESPACE_NAME)

             else           

             (select count(*)||' | '||

                     round(sum(bytes)/1024/1024/1024,2)||' GB'

                from DBA_TEMP_FILES d

               where d.TABLESPACE_NAME=t.TABLESPACE_NAME)

       end "COUNT|ALLOC"       

  from DBA_TABLESPACES t 

order by t.contents, t.tablespace_name 

Cвободное место в табличных пространствах

Cвободное место в табличных пространствах

Формат данных в списке "Size object"

 

 

Для просмотра общей информации о всех табличных пространствах, в дереве "Tree tablespace" выделить узел "TABLESPACE"

  • Quick (do not use dba_free_space)

select a."name" "tablespace_name",
       a."count",
       round(a."all",2) "MAX", 
       round(a."alloc"/1024,4) "megs_alloc",
       round(a."used"/1024,4) "megs_used",
       a."all" - a."used" "megs_free",
       round(((a."all"-a."alloc"+(a."alloc"-a."used"))/a."all")*100,2) "FREE", round(((a."all"-a."alloc"+(a."alloc"-a."used"))/a."all")*100) "FREE1",
       a."counts",
       a."StatusTS"
from ( 
select tablespace_name "name",
       count(file_name) "count", 
       round(sum(DECODE(autoextensible,'YES',maxbytes,'NO',bytes))/1024/1024) "all",
       round(sum(bytes)/1024/1024) "alloc",
       round(sum(user_bytes)/1024/1024) "used",
       count(*) "counts"
       ,(select status from DBA_TABLESPACES dt where dt.TABLESPACE_NAME = d.tablespace_name) "StatusTS"
  from DBA_DATA_FILES d
group by tablespace_name 
union all
SELECT h.tablespace_name "name",
         count(f.FILE_NAME ) "count",
         ROUND (SUM (DECODE(f.autoextensible,'YES',f.maxbytes,'NO',f.bytes)) / 1048576) "all",
         ROUND (SUM (h.bytes_free + h.bytes_used) / 1048576) "alloc",
         ROUND (SUM (NVL (p.bytes_used, 0)) / 1048576) "used",
         count(*) "Counts"
         ,(select status from DBA_TABLESPACES dt where dt.TABLESPACE_NAME =  h.tablespace_name) "StatusTS"
    FROM sys.v_$TEMP_SPACE_HEADER h,
         sys.v_$Temp_extent_pool p,
         dba_temp_files f
   WHERE     p.file_id(+) = h.file_id
         AND p.tablespace_name(+) = h.tablespace_name
         AND f.file_id = h.file_id 
         AND f.tablespace_name = h.tablespace_name
GROUP BY h.tablespace_name) a
order by 7

  • Full (use dba_free_space!)

SELECT a.tablespace_name,
       ROUND (maxbytes / 1024/1024) MAX, 
       ROUND (a.bytes_alloc /1073741824,4) megs_alloc, 
       ROUND ( (a.bytes_alloc - NVL (b.bytes_free,0)) / 1073741824,4) megs_used, 
       round((maxbytes - (a.bytes_alloc - NVL(b.bytes_free, 0)) + NVL(b.bytes_free, 0))/1024/1024,2) megs_free,
       ROUND(100-(((a.bytes_alloc - NVL(b.bytes_free, 0)) / 1024 / 1024)/ (maxbytes / 1024 / 1024))*100) "FREE",
       ROUND(100-(((a.bytes_alloc - NVL(b.bytes_free, 0)) / 1024 / 1024)/ (maxbytes / 1024 / 1024))*100,2) "FREE1",
       a."counts"
       ,(select status from DBA_TABLESPACES dt where dt.TABLESPACE_NAME =  a.tablespace_name) "StatusTS"
  FROM (  SELECT f.tablespace_name, 
                 SUM (f.bytes) bytes_alloc,
                 SUM ( DECODE (f.autoextensible,'YES', f.maxbytes,'NO', f.bytes))maxbytes,
          count(*) "counts"
            FROM dba_data_files f 
        GROUP BY tablespace_name) a,
       (  SELECT f.tablespace_name, SUM (f.bytes) bytes_free 
            FROM dba_free_space f
        GROUP BY tablespace_name) b
WHERE a.tablespace_name = b.tablespace_name(+)
UNION ALL 
  SELECT h.tablespace_name, 
         ROUND (SUM (DECODE(f.autoextensible,'YES',f.maxbytes,'NO',f.bytes)) / 1073741824,4) MAX,
         ROUND (SUM (h.bytes_free + h.bytes_used) / 1073741824,4) megs_alloc,
         ROUND (SUM (NVL (p.bytes_used, 0)) / 1073741824,2) megs_used,
         ROUND (SUM ( (h.bytes_free + h.bytes_used) - NVL (p.bytes_used, 0))/ 1073741824,4)megs_free,
         ROUND(100-(ROUND (SUM (h.bytes_free + h.bytes_used) / 1048576))/(ROUND (SUM (DECODE(f.autoextensible,'YES',f.maxbytes,'NO',f.bytes)) / 1048576))*100,4) "FREE",
         ROUND(100-(SUM (NVL (p.bytes_used, 0)) / 1048576)/(SUM (h.bytes_free + h.bytes_used) / 1048576)*100,4) "FREE1",
count(*) "counts"
         ,(select status from DBA_TABLESPACES dt where dt.TABLESPACE_NAME =  h.tablespace_name) "StatusTS"
    FROM sys.v_$TEMP_SPACE_HEADER h,
         sys.v_$Temp_extent_pool p,
         dba_temp_files f 
   WHERE     p.file_id(+) = h.file_id 
         AND p.tablespace_name(+) = h.tablespace_name
         AND f.file_id = h.file_id 
         AND f.tablespace_name = h.tablespace_name 
GROUP BY h.tablespace_name ORDER BY 7

 

При выделении в дереве "Tree tablespace" узлов PERMANENT (пространства данных), TEMPORARY (табличные пространства для временных данных), UNDO (табличные пространства UNDO) в списке "Size object" выводится информация о файлах данных и их размере.

При выделении в дереве "Tree tablespace" имени табличного пространства, в списке "Size object" выводится информация о файлах данных указанного пространства 

Структура данных в списке "Size object"

 

  • Name - имя табличного пространства/файла данных

  • Max - максимально возможный размер в МБ

  • Free - свободно в МБ

  • Progress bar - графическое отображение свободного места в процентах

 

Подробная информация о объекте

1. При выделении в списке "Size object" табличного пространства, в блоке "Tablespace info" выводится следующая информация из представления DBA_TABLESPACES:

 

  • TABLESPACE_NAME

  • BLOCK_SIZE

  • STATUS

  • CONTENTS

  • LOGGING

  • FORCE_LOGGING

  • EXTENT_MANAGEMENT

  • SEGMENT_SPACE_MANAGEMENT

  • DEF_TAB_COMPRESSION

  • RETENTION

 

select t.TABLESPACE_NAME "tablespace_name",
       t.BLOCK_SIZE "block_size",
       t.STATUS "Status",
       t.CONTENTS "Contents",
       t.LOGGING "Logging",
       t.FORCE_LOGGING "Force",
       t.EXTENT_MANAGEMENT "EXTENT_MANAGEMENT",
       t.SEGMENT_SPACE_MANAGEMENT "SEGMENT_SPACE_MANAGEMENT",
       t.DEF_TAB_COMPRESSION "Compression",
       t.retention "retention"
   from DBA_TABLESPACES t where tablespace_name=$$tablespace_name

При выделении в дереве "Tree tablespace" узлов PERMANENT (пространства данных), TEMPORARY (табличные пространства для временных данных), UNDO (табличные пространства UNDO) в списке "Size object" выводится информация о файлах данных и их размере.

При выделении в дереве "Tree tablespace" имени табличного пространства, в списке "Size object" выводится информация о файлах данных указанного пространства 

Структура данных в списке "Size object"

 

  • Name - имя табличного пространства/файла данных

  • Max - максимально возможный размер в МБ

  • Free - свободно в МБ

  • Progress bar - графическое отображение свободного места в процентах

 

Дополнительная информация о объекте

1. В списке "Size object" представлена информация по всем табличным пространствам

В блоке "Tablespace info"

select t.TABLESPACE_NAME "tablespace_name",       
       t.BLOCK_SIZE "block_size",       
       t.STATUS "Status",       
       t.CONTENTS "Contents",       
       t.LOGGING "Logging",       
       t.FORCE_LOGGING "Force",       
       t.EXTENT_MANAGEMENT "EXTENT_MANAGEMENT",       
       t.SEGMENT_SPACE_MANAGEMENT "SEGMENT_SPACE_MANAGEMENT",       
       t.DEF_TAB_COMPRESSION "Compression",       
       t.retention "retention"  
  from DBA_TABLESPACES t 
where tablespace_name=$$TABLESPACE_NAME

2. В списке "Size object" представлена информация по всем файлам данных

В блоке "Tablespace info"

Переключатель "Quick (do not use dba_free_space)"

select df.FILE_ID,
      round(df.BYTES/1024/1024) "SizeMB",
      round(df.MAXBYTES/1024/1024) "MaxMB",
      round(df.USER_BYTES/1024/1024) "UsedMB",
      round( df.BYTES - df.USER_BYTES ) "FreeAlloc",
      round(df.MAXBYTES/1024/1024) - round(df.BYTES/1024/1024) "FreeDF",
      '-' "FreeTS"
 from DBA_DATA_FILES df
where file_name = $$FILE_NAME

Переключатель "Full (use dba_free_space)"

select df.FILE_ID,
      round(df.BYTES/1024/1024,4) "SizeMB",
      round(df.MAXBYTES/1024/1024,4) "MaxMB",
      round((df.BYTES - sum(fs.BYTES))/1024/1024,4) "UsedMB",
      round(sum(fs.BYTES/1024/1024),4) "FreeAlloc",
      round((df.MAXBYTES-(df.BYTES-sum(fs.BYTES)))/1024/1024,4)  "FreeDF",
      '-' "FreeTS"
 from DBA_DATA_FILES df,
      DBA_FREE_SPACE fs
where file_name = $$FILE_NAME
  and fs.FILE_ID= df.FILE_ID
 group by df.FILE_ID, df.BYTES, df.MAXBYTES

Страница "TABLESPACE INFO"

Страница "TABLESPACE INFO"

Подробная информация о табличных пространствах, статистика по изменению размера пространств.

Base information

Общая информация о табличном пространстве, список файлов в него входящих

CerebroSQL - Oracle tablespace info

select t.STATUS,
      t.CONTENTS,
      t.LOGGING,
      t.FORCE_LOGGING,
      t.RETENTION,
      t.BIGFILE
 from DBA_TABLESPACES t
where t.TABLESPACE_NAME = $$TABLESPACE_NAME
         
select file_name,
      round((bytes)/1073741824, 3) "Allocate",
      case when maxbytes>0 then
          round((maxbytes)/1073741824,3)  else
          round((bytes)/1073741824,3)
          end as "MaxSize"
 from DBA_DATA_FILES
where tablespace_name =$$TABLESPACE_NAME 
order by bytes ,lpad(file_id,4) desc

Resize tablespace info

Статистика по изменению размера выбранного табличного пространства (используются данные Oracle diagnostics  pack)

CerebroSQL - Oracle resize tablespace.jp

SELECT BEGIN_INTERVAL_TIME,
      END_INTERVAL_TIME,
      B.NAME,
      ROUND((TABLESPACE_SIZE*8*1024)/1024/1024/1024,2)||' | '||
      ROUND((TABLESPACE_MAXSIZE*8*1024)/1024/1024/1024,2) "ALLOC",
      ROUND((TABLESPACE_USEDSIZE*8*1024)/1024/1024/1024,2) USEDSIZE
 FROM DBA_HIST_TBSPC_SPACE_USAGE A
      JOIN V$TABLESPACE B ON (A.TABLESPACE_ID = B.TS#)
      JOIN DBA_HIST_SNAPSHOT C ON (A.SNAP_ID = C.SNAP_ID)
WHERE NAME = $$TABLESPACE_NAME
ORDER BY 1 DESC

    
select SIZE_MB_MIN,
      SIZE_MB_MAX,
      MAXSIZE_MB,
      MIN_USEDSIZE_MB,
      MAX_USEDSIZE_MB,
      DAYS,
      (MAXSIZE_MB-MAX_USEDSIZE_MB) "Free",
      Round((SIZE_MB_MAX-SIZE_MB_MIN)/nvl(DAYS,1)) "DAY_RES"
 from
(SELECT Min(ROUND((TABLESPACE_SIZE*8*1024)/1024/1024/1024)) SIZE_MB_MIN,
       Max(ROUND((TABLESPACE_SIZE*8*1024)/1024/1024/1024)) SIZE_MB_MAX,
       Max(ROUND((TABLESPACE_MAXSIZE*8*1024)/1024/1024/1024)) MAXSIZE_MB,
       min(ROUND((TABLESPACE_USEDSIZE*8*1024)/1024/1024/1024)) MIN_USEDSIZE_MB,
       Max(ROUND((TABLESPACE_USEDSIZE*8*1024)/1024/1024/1024)) MAX_USEDSIZE_MB,
       trunc(Max(END_INTERVAL_TIME))- trunc(min(BEGIN_INTERVAL_TIME)) DAYS
  FROM DBA_HIST_TBSPC_SPACE_USAGE A
       JOIN V$TABLESPACE B ON (A.TABLESPACE_ID = B.TS#)
       JOIN DBA_HIST_SNAPSHOT C ON (A.SNAP_ID = C.SNAP_ID)
 WHERE NAME = $$TABLESPACE_NAME)

Resize database info

Статистика по изменению размера всех табличных пространств в базе данных (используются данные Oracle diagnostics  pack)

CerebroSQL - Oracle resize all tablespac

Колонки

  • Name - имя табличного пространства

  • Max size - максимальный размер табличного пространства

  • Min alloc - минимальный размер фалов данных

  • Max alloc - максимальный размер фалов данных

  • Min data - минимальный объем данных в пространстве

  • Max data - максимальный объем данных в пространстве

  • Day mon - количество дней за которые собрана статистика

  • Free - свободно в пространстве (ГБ)

  • DayRes - изменение размера пространства в среднем в день

  • Day - количество дней на которые, ориентировочно, хватит свободного места

select Name,
      MAXSIZE_MB,
      SIZE_MB_MIN,
      SIZE_MB_MAX,
      MIN_USEDSIZE_MB,
      MAX_USEDSIZE_MB,
      DAYS,
      (MAXSIZE_MB-MAX_USEDSIZE_MB) "Free",
      Round((SIZE_MB_MAX-SIZE_MB_MIN)/nvl(DAYS,1)) "DAY_RES"
 from
(SELECT NAME,
      Min(ROUND((TABLESPACE_SIZE*8*1024)/1024/1024/1024,2)) SIZE_MB_MIN,
      Max(ROUND((TABLESPACE_SIZE*8*1024)/1024/1024/1024,2)) SIZE_MB_MAX,
      Max(ROUND((TABLESPACE_MAXSIZE*8*1024)/1024/1024/1024,2)) MAXSIZE_MB,
      min(ROUND((TABLESPACE_USEDSIZE*8*1024)/1024/1024/1024,2)) MIN_USEDSIZE_MB,
      Max(ROUND((TABLESPACE_USEDSIZE*8*1024)/1024/1024/1024,2)) MAX_USEDSIZE_MB,
      trunc(Max(END_INTERVAL_TIME))- trunc(min(BEGIN_INTERVAL_TIME)) DAYS
 FROM DBA_HIST_TBSPC_SPACE_USAGE A
      JOIN V$TABLESPACE B ON (A.TABLESPACE_ID = B.TS#)
      JOIN DBA_HIST_SNAPSHOT C ON (A.SNAP_ID = C.SNAP_ID)
group by name)
order by "DAY_RES" desc

Base information