Ответ 1
Вы можете сделать это:
select distinct bytes/blocks from user_segments;
Можно ли указать размер блока моей базы данных Oracle, если у меня нет доступа к представлению v$parameter
?
Спасибо!
е.
Вы можете сделать это:
select distinct bytes/blocks from user_segments;
В оракуле размер блока задается для табличного пространства. Вы можете запросить области user_tablespaces или dba_tablespaces (если у вас есть доступ) и посмотреть размер блока для каждого табличного пространства; эти представления обычно запускаются мгновенно.
Вы также можете присоединиться к любому из этих 2 к dba_tables, user_tables или all_tables и умножить количество блоков на размер блока, чтобы получить общий размер таблицы в байтах (разделите на 1024 * 1024, чтобы получить размер в MB, и др.)
Да, тогда у вас есть серьезная проблема. Запрос user_segments может быть очень медленным, особенно при запуске SAP или Infor BAAN, которые создают десять тысяч сегментов и имеют тенденцию фрагментировать словарь данных. Лучше всего убедить своего администратора базы данных предоставить вам доступ в некотором роде, возможно, через представление с помощью v_ $.
Альтернатива, которая работает лучше: когда вы можете создавать сегменты, у вас есть доступ к табличному пространству (обратите внимание, что отличительный элемент не работает, когда у вас нет сегментов). Этот список обычно короче, поэтому, например, используйте:
выберите байты/блоки из user_ts_quotas
Это все еще оставляет вас с проблемой социальной инженерии с местным администратором баз данных, когда пользователь настолько ограничен, что у него нет квоты: -)
Поскольку размер блока для каждого табличного пространства отличается, лучше использовать следующий запрос:
select block_size, tablespace_name from dba_tablespaces;