Как в Oracle БД измерить размер/объем данных в выборке/селекте
При селекте в таблице в БД Oracle выводятся различные столбцы с разными типами данных, в основном varchar2, number,date,rowid. Как правильно установить размер в Мб определенной выборки?
Отслеживать
задан 28 дек 2022 в 19:01
Под «размером» имеется ввиду кол-во выводимых элементов?
28 дек 2022 в 19:16
Нет, объем в Мб данных, то есть сколько весит выборка
28 дек 2022 в 19:30
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Не уверен что точно правильно понял вопрос. Тогда ответ можно разделить на два, например на вот таких:
- «сколько трафика затрачено на заполнение грида на форме» (или просто выполнение запроса и fetch до последней строки в любом клиенте, что в SQL-Plus, что в любой графической IDE вроде SQL Developer и прочих) — типа 100 строк на экране появилось после нажатия на кнопку на форме — пришло (по сети) 5 МБ например. Это можно вычислить через дельту из предствления V$SESSTAT для анализируемой сессии, замеряя значения для метрики «bytes sent via SQL*Net to client». Запоминаем текущее значение, жмём кнопку на форме / как-то иначе выполняем запрос, форма заполняется / результат появляется на экране — снова берём значение из V$SESSTAT, и из второго вычитаем первое (потому что вьюшка эта кумулятивная, суть накапливает значения метрик). Вот и всё — результат будет в байтах.
- Вторая версия — «сколько занимает информация на экране», тогда для всех полей выполняем функцию LENGTH(), суммируем, ну и умножаем на количество строк. С идеей что каждый символ или цифра на экране — это один байт (или 2-4 байта, если всякие Unicode-кракозябры)
P.S. Тут скорее интересен вопрос — зачем может быть нужно знать то что Вы спрашиваете 🙂
Как определить размер таблиц в Oracle?
Сегодня мы покажем, как определить размер таблиц в Oracle. В любой базе данных, в том числе и в базах данных Oracle, таблицы являются основными инструментами для сохранения информации. Удобство таблиц неоспоримо: они состоят из столбцов и строк, что обеспечивает удобное чтение располагаемой информации. Однако любая таблица может быть ограничена в размерах, поэтому иногда важно понимать размер таблицы, чтобы ориентироваться на вероятный объем сохраненной информации.
Не зная размер таблицы, может сложиться такая ситуация, что приложение, которое использует ее для записи, перестает нормально функционировать, потому что просто не может ничего записать. С базами Oracle — это довольно частая ситуация, особенно когда используется бесплатная версия этой базы данных. А в бесплатной версии размер таблиц ограничен лицензионным соглашением, а это значит, что рано или поздно, но все равно можно « у переться в потолок».
Как определить размер таблицы Oracle?
- с таблицами нужно работать с правами администратора;
- при вычислении размера таблиц нужно использовать пользователя, под которым работает «демон» Oracle;
- в самом скрипте нужно обязательно указывать владельца таблицы.
Заключение
Узнать размер базы данных Oracle непросто, но возможно. То есть специальной какой-то кнопки или функции нет, поэтому приходится пользоваться большими массивными скриптами. Мы представили 2 скрипта на обозрение. Если по каким-то причинам они вам не подходят, тогда можно поискать в сети другие. На специализированных форумах администраторы баз данных Oracle делятся такими скриптами.
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
Как узнать размер таблицы в oracle
- x$ таблицы
- V$ представления (A — H)
- V$ представления (I — R)
- V$ представления (S — X)
- Лимиты
- Фоновые процессы
- Параметры инициализации
- Недокум. параметры
- События ожидания (A — E)
- События ожидания (F — P)
- События ожидания (R — W)
- Статистики
- ORA-600
- ORA-04100 . ORA-07499
- История
- Механизмы хранения
- Вопросы и ответы
- Системные переменные
- Администрирование
- ZhiDBA for Oracle
- ZhiSQL for Oracle
- DBAScript for Oracle
- ZhiDBA for Oracle
- ZhiSQL for Oracle
- DBAScript for Oracle
Вход на сайт
- Главная /
- СУБД /
- Oracle Database /
- Вопросы и ответы /
- Как посмотреть размер таблицы?
Как посмотреть размер таблицы?
Информация о материале Автор: Сергей Жилин Категория: Вопросы и ответы Oracle Опубликовано: 11 октября 2010 Просмотров: 40291
Размер занимаемого таблицей табличного пространства можно посмотреть в представлении dba_extents с помощью следующего запроса:
SELECT owner, segment_name, segment_type,tablespace_name, ROUND(SUM (BYTES) / 1024 / 1024) "SIZE (MB)", SUM (blocks) blocks, COUNT (*) extents FROM dba_extents WHERE owner = ‘HR’ AND segment_name = 'EMPLOYEES' AND segment_type = ‘TABLE’ GROUP BY owner, segment_name, segment_type, tablespace_name
Размер таблицы так же можно посмотреть и в представлении dba_extents:
SELECT a.owner "Схема", a.table_name "Таблица", b.bytes "Размер (Мб)", TRUNC((a.blocks * 100) / b.blocks) "Занято(%)", b.extents "Экстентов" FROM dba_tables a, ( SELECT owner, segment_name, sum(bytes)/1024/1024 bytes, sum(blocks) blocks, count(*) extents FROM dba_extents WHERE segment_type = 'TABLE' GROUP BY owner, segment_name ) b WHERE a.owner = 'HR' AND a.table_name = 'EMPLOYEES' AND a.owner = b.owner AND a.table_name = b.segment_name
Эти два последние запроса можно использовать и для определения размера схемы. Достаточно убрать только лишние столбцы из GROUP BY и WHERE.
Использование пакета sys.dbms_space то же даёт представление о размере таблицы:
SET ECHO OFF; SET SERVEROUTPUT ON; DECLARE var1 number; var2 number; var3 number; var4 number; var5 number; var6 number; var7 number; BEGIN sys.dbms_space.unused_space('HR', 'EMPLOYEES', 'TABLE', var1, var2, var3, var4, var5, var6, var7); dbms_output.put_line('Всего блоков в сегменте = ' || var1); dbms_output.put_line('Всего байт в сегменте = ' || var2); dbms_output.put_line('Неиспользованных блоков = ' || var3); dbms_output.put_line('Неиспользованных байт = ' || var4); dbms_output.put_line('Номер файла последнего экстента, который содержит данные = ' || var5); dbms_output.put_line('Номер блока последнего экстента, который содержит данные = ' || var6); dbms_output.put_line('Последний блок в пределах экстента, который содержит данные = ' || var7); end; / SET ECHO ON;
Самое популярное
- Как посмотреть план запроса?
- Как посмотреть, когда у пользователя последний раз менялся пароль?
- Как вычислить разницу между двумя датами в соседних строках одного столбца?
- Как преобразовать TIMESTAMP в DATE?
- Как узнать, какие опции Oracle используются базой данных?
You have no rights to post comments
Главная
SELECT file_name, CEIL (blocks * t.block_size / 1024 / 1024) current_mb,
CEIL ((NVL (hwm, 1) * t.block_size) / 1024 / 1024) smallest_mb
FROM dba_data_files a,
dba_tablespaces t,
(SELECT file_id, MAX (block_id + blocks — 1) hwm
FROM dba_extents
GROUP BY file_id) b
WHERE t.tablespace_name = a.tablespace_name
AND a.file_id = b.file_id(+);
ALTER DATABASE DATAFILE ‘/app/oracle/db/product/11.2.0/dbhome_1/dbs/poolData01.dbf’ RESIZE 3000M;