Апр 182011
 

Временные табличные пространства (temporary tablespaces) отличаются от обычных и узнать количество свободного места в них тем же способом, что и в предыдущем посте, не получится. Тут немного сложнее: общий размер пространства по-прежнему есть сумма размеров всех составляющих его файлов, а вот аналога DBA_FREE_SPACE для temporary tablespaces нет, поэтому придётся подсчитать сумму размеров всех временных сегментов с группировкой по имени пространства:

SELECT  
	A.tablespace_name TABLESPACE, 
	ROUND(D.bytes_total / 1073741824, 2) gb_total,
	ROUND(SUM(A.used_blocks * D.block_size) / 1073741824, 2) gb_used,
	ROUND(100 - SUM(A.used_blocks * D.block_size) / D.bytes_total * 100)
	|| '%' "%FREE"    
FROM v$sort_segment A,
	(
		SELECT   
			B.name,
			C.block_size, 
			SUM(C.bytes) bytes_total
		FROM     v$tablespace B, v$tempfile C
		WHERE    B.ts# = C.ts#
		GROUP BY B.name, C.block_size
	) D
WHERE    A.tablespace_name = D.name
GROUP BY A.tablespace_name, D.bytes_total;

P.S. Эстеты могут объединить результат этого запроса с запросом из предыдущего поста с помощью UNION, чтобы иметь полную картину перед глазами.

  One Response to “Свободное место во временных табличных пространствах”

  1. Можно тоже самое получить используя вьюхи $TEMP_SPACE_HEADER и $TEMP_EXTENT_POOL

    Спасибо за отличный блог.

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre lang="" line="" escaped="" cssfile="">

(обязательно)

(обязательно)