Запросить мой размер оракула

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

Спасибо!

е.

Ответы

Ответ 1

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

select distinct bytes/blocks from user_segments;

Ответ 2

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

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

Ответ 3

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

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

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

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

Ответ 4

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

select block_size, tablespace_name from dba_tablespaces;