发布网友 发布时间:2022-04-30 07:06
共3个回答
懂视网 时间:2022-04-30 11:27
OR REPLACE PROCEDURE show_space(p_segname IN VARCHAR2, p_owner IN VARCHAR2 DEFAULT USER, p_type IN VARCHAR2 DEFAULT ‘TABLE‘, p_partition IN VARCHAR2 DEFAULT NULL) AS l_free_blks NUMBER; l_total_blocks NUMBER; l_total_bytes NUMBER; l_unused_blocks NUMBER; l_unused_bytes NUMBER; l_lastusedextfileid NUMBER; l_lastusedextblockid NUMBER; l_last_used_block NUMBER; l_segment_space_mgmt VARCHAR2(255); l_unformatted_blocks NUMBER; l_unformatted_bytes NUMBER; l_fs1_blocks NUMBER; l_fs1_bytes NUMBER; l_fs2_blocks NUMBER; l_fs2_bytes NUMBER; l_fs3_blocks NUMBER; l_fs3_bytes NUMBER; l_fs4_blocks NUMBER; l_fs4_bytes NUMBER; l_full_blocks NUMBER; l_full_bytes NUMBER; PROCEDURE p(p_label IN VARCHAR2, p_num IN NUMBER) IS BEGIN dbms_output.put_line(rpad(p_label, 40, ‘.‘) || to_char(p_num, ‘999,999,999,999‘)); END; BEGIN EXECUTE IMMEDIATE ‘select ts.segment_space_management from dba_segments seg,dba_tablespaces ts where seg.segment_name = :p_segname and (:p_partition is null or seg.partition_name = :p_partition) and seg.owner = :p_owner and seg.tablespace_name=ts.tablespace_name‘ INTO l_segment_space_mgmt USING p_segname, p_partition, p_partition, p_owner; -- exception -- when too_many_rows -- then -- dbms_output.put_line(‘This must be a partitioned table,use p_partition => ‘); -- return; -- end; IF l_segment_space_mgmt = ‘AUTO‘ THEN dbms_space.space_usage(p_owner, p_segname, p_type, l_unformatted_blocks, l_unformatted_bytes, l_fs1_blocks, l_fs1_bytes, l_fs2_blocks, l_fs2_bytes, l_fs3_blocks, l_fs3_bytes, l_fs4_blocks, l_fs4_bytes, l_full_blocks, l_full_bytes, p_partition); p(‘Unformatted Blocks ‘, l_unformatted_blocks); p(‘FS1 Blocks (0-25) ‘, l_fs1_blocks); p(‘FS2 Blocks (25-50) ‘, l_fs2_blocks); p(‘FS3 Blocks (50-75) ‘, l_fs3_blocks); p(‘FS4 Blocks (75-100) ‘, l_fs4_blocks); p(‘Full Blocks ‘, l_full_blocks); ELSE dbms_space.free_blocks(segment_owner => p_owner, segment_name => p_segname, segment_type => p_type, freelist_group_id => 0, free_blks => l_free_blks); END IF; dbms_space.unused_space(segment_owner => p_owner, segment_name => p_segname, segment_type => p_type, partition_name => p_partition, total_blocks => l_total_blocks, total_bytes => l_total_bytes, unused_blocks => l_unused_blocks, unused_bytes => l_unused_bytes, last_used_extent_file_id => l_lastusedextfileid, last_used_extent_block_id => l_lastusedextblockid, last_used_block => l_last_used_block); p(‘Total Blocks ‘, l_total_blocks); p(‘Total Bytes ‘, l_total_bytes); p(‘Total MBytes ‘, trunc(l_total_bytes / 1024 / 1024)); p(‘Unused Blocks‘, l_unused_blocks); p(‘Unused Bytes ‘, l_unused_bytes); p(‘Last Used Ext FileId‘, l_lastusedextfileid); p(‘Last Used Ext BlockId‘, l_lastusedextblockid); p(‘Last Used Block‘, l_last_used_block); END;–用法演示
create table test_space
AS
select * from dba_tables;
/
SYS@orcl> exec show_space(‘TEST_SPACE‘);
Total Blocks ……………………… 112
Total Bytes ……………………… 917,504
Total MBytes ……………………… 0
Unused Blocks……………………… 3
Unused Bytes ……………………… 24,576
Last Used Ext FileId……………….. 1
Last Used Ext BlockId………………. 115,608
Last Used Block……………………. 5
PL/SQL 过程已成功完成。
SYS@orcl> delete from test_space;
已删除3044行。
SYS@orcl> commit;
提交完成。
SYS@orcl> exec show_space(‘TEST_SPACE‘);
Total Blocks ……………………… 112
Total Bytes ……………………… 917,504
Total MBytes ……………………… 0
Unused Blocks……………………… 3
Unused Bytes ……………………… 24,576
Last Used Ext FileId……………….. 1
Last Used Ext BlockId………………. 115,608
Last Used Block……………………. 5
PL/SQL 过程已成功完成。
SYS@orcl> truncate table test_space;
表被截断。
SYS@orcl> exec show_space(‘TEST_SPACE’);
Total Blocks ……………………… 8
Total Bytes ……………………… 65,536
Total MBytes ……………………… 0
Unused Blocks……………………… 7
Unused Bytes ……………………… 57,344
Last Used Ext FileId……………….. 1
Last Used Ext BlockId………………. 101,872
Last Used Block……………………. 1
PL/SQL 过程已成功完成。
drop table test_space;
版权声明:本文为博主原创文章,未经博主允许不得转载。
Oracle查看对象空间使用情况show_space
标签:show-space oracle
热心网友 时间:2022-04-30 08:35
查看“oracle”临时表空间当前使用了多少空间,可按照以下程序。
SELECT d.tablespace_name "Name", d.status "Status",
TO_CHAR (NVL (a.BYTES / 1024 / 1024, 0), '99,999,990.90') "Size (M)",
TO_CHAR (NVL (a.BYTES - NVL (f.BYTES, 0), 0) / 1024 / 1024,
'99999999.99'
) USE,
TO_CHAR (NVL ((a.BYTES - NVL (f.BYTES, 0)) / a.BYTES * 100, 0),
'990.00'
) "Used %"
FROM SYS.dba_tablespaces d,
(SELECT tablespace_name, SUM (BYTES) BYTES
FROM dba_data_files
GROUP BY tablespace_name) a,
(SELECT tablespace_name, SUM (BYTES) BYTES
FROM dba_free_space
GROUP BY tablespace_name) f
WHERE d.tablespace_name = a.tablespace_name(+)
AND d.tablespace_name = f.tablespace_name(+)
AND NOT (d.extent_management LIKE 'LOCAL' AND d.CONTENTS LIKE 'TEMPORARY')
UNION ALL
SELECT d.tablespace_name "Name", d.status "Status",
TO_CHAR (NVL (a.BYTES / 1024 / 1024, 0), '99,999,990.90') "Size (M)",
TO_CHAR (NVL (t.BYTES, 0) / 1024 / 1024, '99999999.99') USE,
TO_CHAR (NVL (t.BYTES / a.BYTES * 100, 0), '990.00') "Used %"
FROM SYS.dba_tablespaces d,
(SELECT tablespace_name, SUM (BYTES) BYTES
FROM dba_temp_files
GROUP BY tablespace_name) a,
(SELECT tablespace_name, SUM (bytes_cached) BYTES
FROM v$temp_extent_pool
GROUP BY tablespace_name) t
WHERE d.tablespace_name = a.tablespace_name(+)
AND d.tablespace_name = t.tablespace_name(+)
AND d.extent_management LIKE 'LOCAL'
AND d.CONTENTS LIKE 'TEMPORARY';
热心网友 时间:2022-04-30 09:53
1、查看临时表空间 (dba_temp_files视图)(v_$tempfile视图)