Запрос мой блок размера оракула - PullRequest
18 голосов
/ 01 февраля 2011

Есть ли способ узнать размер блока моей базы данных Oracle, если у меня нет доступа к представлению v$parameter?

Спасибо! * * 1004

е.

Ответы [ 4 ]

20 голосов
/ 01 февраля 2011

Вы можете сделать это:

select distinct bytes/blocks from user_segments;
2 голосов
/ 27 октября 2016

В oracle размер блока устанавливается для табличного пространства. Вы можете запросить user_tablespaces или dba_tablespaces (если у вас есть доступ) и посмотреть размер блока для каждого табличного пространства; эти представления обычно выполняются мгновенно.

Вы также можете присоединить любой из этих 2 к dba_tables, user_tables или all_tables и умножить количество блоков на размер блока, чтобы получить общий размер таблицы в байтах (разделите на 1024 * 1024, чтобы получить размер в МБ, и др.)

1 голос
/ 01 февраля 2018

Поскольку размер блока различен для каждого табличного пространства, лучше использовать следующий запрос:

select block_size, tablespace_name from dba_tablespaces;
1 голос
/ 04 февраля 2015

Да, тогда у вас есть большая проблема.Запросы user_segments могут быть очень медленными, особенно при запуске SAP или Infor BAAN, которые создают десять тысяч сегментов и имеют тенденцию фрагментировать словарь данных.Лучше всего убедить вашего администратора баз данных предоставить вам доступ каким-либо образом, возможно, через представление с v _ $.

Альтернатива, которая работает лучше: когда вы можете создавать сегменты, у вас есть доступ к табличному пространству (обратите внимание, чтоОтличный не работает, когда у вас нет сегментов).Этот список обычно короче, поэтому, например, используйте:

выбор байтов / блоков из user_ts_quotas

Это все еще оставляет проблему социальной инженерии с локальным администратором базы данных, когда пользователь настолько ограничен, чтонет квоты: -)

...