Топ-100
 

Менеджер пространств СУБД 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 

-----

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

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

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

SELECT a.tablespace_name,
       ROUND (maxbytes / 1073741824) MAX, 
       ROUND (a.bytes_alloc /1073741824,4) megs_alloc, 
       ROUND ( (a.bytes_alloc - NVL (b.bytes_free,0)) / 1073741824,4) megs_used, 
       ROUND (NVL (b.bytes_free, 0) / 1073741824,4) 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

 

или

select a."name" "tablespace_name",
       a."count",
       round(a."all"/1024,4) "MAX", 
       round(a."alloc"/1024,4) "megs_alloc",
       round(a."used"/1024,4) "megs_used",
       '0' "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 

-----

При выделении в дереве "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

Для просмотра списка сгенерированных команд нажать кнопку "Show SQL"

ля создания файлов нажать кнопку "Create new datafile"

 

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

 

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

Resize datafile
CerebroSQL - alter datafile resize file.

Последовательность действий

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

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

  • В поле "New size datafile" ввести новый размер

  • Нажать кнопку "Apply

Новый размер файлов в случаи успешного выполнения операции отобразится в списке "Datafile list" после завершения операции.

При возникновении ошибки, процесс остановится. Текст ошибки будет указан в поле "Status"

 

Страница "Move"

Страница предназначена для массового перемещения объектов как внутри одного табличного пространства, так и в другое табличное пространства для оптимизации структуры хранения данных и повышения производительности системы ввода/вывода. 

CerebroSQL - Oracle move objects.jpg

Последовательность действий:

  • На странице "TABLESPACE" выделить табличные пространства объекты из которых необходимо перенести

или

  • На странице "SCHEMA" выделить схемы объекты которых необходимо перенести

  • Нажать кнопку "Load list object" для отображения списка объектов в выделенных пространствах

  • В списке "A list of database objects" выбрать объекты который необходимо перенести

Из контекстного меню окна возможно массовое выделение объектов определенных типов

  • Выбрать табличное пространство в которое необходимо перенести выбранные объекты в поле "Transfer to"

  • Указать уровень параллельности выполнения операции в поле "Parallel"

  • Указать дополнительные опции

    • Compress - сжимать объекты

    • Nologging - запретить логирование операции в журналах REDO

    • Compute statistics - обновить статистику

    • Online - выполнять операцию без блокировки перемещаемого объекта.

Примеры сгенерированных команд:

ALTER TABLE "SYS"."AQ$_SCHEDULER$_REMDB_JOBQTAB_L" MOVE TABLESPACE SYSTEM   PARALLEL 10
ALTER TABLE "SYS"."AQ$_SCHEDULER$_REMDB_JOBQTAB_S" MOVE TABLESPACE SYSTEM   PARALLEL 10
ALTER TABLE "SYS"."AQ$_SCHEDULER_FILEWATCHER_QT_S" MOVE TABLESPACE SYSTEM   PARALLEL 10
ALTER TABLE "SYS"."AQ$_SCHEDULES" MOVE TABLESPACE SYSTEM   PARALLEL 10
ALTER TABLE "SYS"."AQ$_SUBSCRIBER_LWM" MOVE PARTITION "SYS_P7" TABLESPACE SYSTEM   PARALLEL 10
ALTER TABLE "SYS"."AQ$_SUBSCRIBER_LWM" MOVE PARTITION "SYS_P12" TABLESPACE SYSTEM   PARALLEL 10
ALTER TABLE "SYS"."AQ$_SUBSCRIBER_LWM" MOVE PARTITION "SYS_P16" TABLESPACE SYSTEM   PARALLEL 10
ALTER INDEX "SYS"."HS$_CLASS_INIT_PK" REBUILD ONLINE TABLESPACE SYSTEM  PARALLEL 10 COMPUTE STATISTICS
ALTER INDEX "SYS"."HS$_CLASS_INIT_UK1" REBUILD ONLINE TABLESPACE SYSTEM  PARALLEL 10 COMPUTE STATISTICS
ALTER INDEX "SYS"."HS$_FDS_CLASS_PK" REBUILD ONLINE TABLESPACE SYSTEM  PARALLEL 10 COMPUTE STATISTICS
ALTER INDEX "SYS"."HS$_FDS_CLASS_UK1" REBUILD ONLINE TABLESPACE SYSTEM  PARALLEL 10 COMPUTE STATISTICS
ALTER TABLE "SYS"."KOTAD$" MOVE LOB(SYS_NC_ROWINFO$) STORE AS (TABLESPACE SYSTEM)  PARALLEL 10
ALTER TABLE "SYS"."KOTTBX$" MOVE LOB(SYS_NC_ROWINFO$) STORE AS (TABLESPACE SYSTEM)  PARALLEL 10
ALTER TABLE "SYS"."TABCOMPART$" MOVE LOB(BHIBOUNDVAL) STORE AS (TABLESPACE SYSTEM)  PARALLEL 10

  • Запуск процесса переноса объектов выполняется нажатием кнопки "RUN"

  • Для остановки процесса нажать кнопку "STOP"

  • Для просмотра списка выполняемых команд нажать кнопку "Show SQL"