Топ-100
 
CerebroSQL

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

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

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

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

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

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

Дерево "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вободное место в табличных пространствах

 

 

Для просмотра общей информации о всех табличных пространствах, в дереве "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"

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

Base information

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

CerebroSQL - Oracle tablespace info.jpg

->Запрос для извлечения данных<-

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

-----

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

Служит для создания табличных пространств в базе данных Oracle

CerebroSQL - Create new tablespace page.

Последовательность создания табличного пространства

  • В блоке "Tablespace type" выбрать тип создаваемого табличного пространства

    • Standard -  обычное пространство для хранения данных

    • Temporary - временное табличное пространство

    • UNDO - пространство отмены

    • Big - "большое" табличное пространство.

  • Tablespace name - имя табличного пространства или "or list" список создаваемых табличных пространств. Одна строчка соответствует имени одного создаваемого пространства

  • Folder - папка на диске сервера в которой будут созданы файлы входящие в табличное пространство

при раскрытии списка, выводится путь для создания файлов БД. Имя файла формируется по маске, где:

$TSNAME - имя пространства из списка "or list"

Строка формируется запросом

->Запрос для извлечения данных<-

select file_name, file_id from DBA_DATA_FILES
where file_id = (select max(file_id) from DBA_DATA_FILES)

-----

т.е. извлекается пусть создания последнего файла данных 

  • Loging type - флаг по умолчанию для всех создаваемых объектов указывающий на запрет сохранения данных в журналах REDO

  • Compress - флаг по умолчанию для всех создаваемых таблиц в пространстве указывающий на необходимость сжатия данных 

  • Temporary group - используется для пространств типа "Temporary". Служит для объединения нескольких пространств в одну группу для повышения производительности работы с временными объектами

  • Storage parameter - параметры файла данных

    • Size [MB] - начальный размер файла данных в мегабайтах​

    • Autoextend - включить автоматическое увеличение размера файла данных

      • Next [MB] - значение на которое следует увеличивать размер файла данных

      • Max [MB] - максимальный размер файла данных в мегабайтах

Кнопки
  • Create tablespace - создать табличные пространства

  • Clear page - очистить страницу

  • Show sql - показать команды SQL для создания табличных пространств

 
Страница "ADD DATAFILE"

Страница предназначена для массового создания файлов данных в табличных пространствах.

CerebroSQL - add new datafile in Oracle tablespace.jpg

Порядок действий

  • Выделить табличное пространство в которое необходимо добавить файлы данных в дереве "Tablespace list"

Если необходимо создать несколько файлов данных:

  1. Установить флаг "Autoname"

    1. В поле "Prefix" ввести префикс имени создаваемых файлов

    2. В поле "Current max number" ввести текущий максимальный номер файла в выбранном табличном пространстве

    3. В поле "Count file" указать количество создаваемых файлов

  • В поле "File name" ввести полное имя файла и путь.

В случаи если планируется создание множества файлов данных, то в имени необходимо использовать шаблон:

$PREF - префикс имени, если поле "Prefix" заполнено, то берется данное значение, в противном случаи - это имя табличного пространства

Если autoname = true

$NUM - номер файла, значение формируется в цикле по условию inc(current max number)

Если autoname = false

$NUM = количество файлов в пространстве увеличенное на 1 

  • Указать начальный размер создаваемых файлов в поле "Size [MB]", например 100 (значение в МБ)

  • Если необходимо разрешить автоматическое расширение файлов данных установить переключатель "Autoextend"

    • Указать величину на которую база будет увеличивать размер файлов данных в поле "Next [MB]"

    • Указать максимальный размер файла данных в поле "Max [MB]" или оставить 0 - maxsize