Определим сколько места занимают схемы, для этого выполним следующий запрос:
Код:
SELECT
OWNER,
CASE
WHEN (S.BYTES / 1024 / 1024 / 1024 / 1024) > 1 THEN TO_CHAR(S.BYTES / 1024 / 1024 / 1024 / 1024) || ' PB' --Petabytes
WHEN (S.BYTES / 1024 / 1024 / 1024 / 1024) > 1 THEN TO_CHAR(S.BYTES / 1024 / 1024 / 1024 / 1024) || ' TB' --Terabyte
WHEN (S.BYTES / 1024 / 1024 / 1024) > 1 THEN TO_CHAR(S.BYTES / 1024 / 1024 / 1024) || ' GB' --Gigabyte
WHEN (S.BYTES / 1024 / 1024) > 1 THEN TO_CHAR(S.BYTES / 1024 / 1024) || ' MB' --Megabyte
WHEN (S.BYTES / 1024) > 1 THEN TO_CHAR(S.BYTES / 1024) || ' KB' --Kilobyte
ELSE TO_CHAR(S.BYTES) || ' B' --Byte
END CASE
FROM (SELECT OWNER,
SUM(BYTES) AS BYTES
FROM DBA_SEGMENTS
GROUP BY OWNER) S
ORDER BY S.BYTES DESC
Определим сколько места занимают таблицы в Oracle:
Код:
SELECT S.SEGMENT_NAME, S.BYTES
FROM DBA_SEGMENTS S
WHERE OWNER = '<название схемы>'
AND S.SEGMENT_TYPE = 'TABLE'
Определим сколько места занимает таблица в Oracle:
Код:
SELECT S.BYTES
FROM DBA_SEGMENTS S
WHERE OWNER = '<название схемы>'
AND S.SEGMENT_TYPE = 'TABLE'
AND S.SEGMENT_NAME = '<название таблицы>'
Определим сколько места занимает индекс в определенной схеме в Oracle:
Код:
SELECT S.BYTES
FROM DBA_SEGMENTS S
WHERE OWNER = '<название схемы>'
AND S.SEGMENT_TYPE = 'INDEX'
AND S.SEGMENT_NAME = '<название индекса>'
Определим сколько места занимают индексы в определенной схеме Oracle:
Код:
SELECT S.BYTES
FROM DBA_SEGMENTS S
WHERE OWNER = '<название схемы>'
AND S.SEGMENT_TYPE = 'INDEX'