Oracle / 表空间
Oracle数据库表空间使用情况查询脚本
查询Oracle数据库中11g和19c版本表空间的使用情况,包括总空间、已使用空间、剩余空间、使用百分比和文件数量。
SQL#Oracle#表空间#使用情况#查询#性能
适用版本:11g, 19c
上生产前,先在测试库跑一遍,确认版本、权限和影响范围。涉及数据或配置变更时,先备份,备好回退方案。
脚本使用说明
这些脚本供学习和日常运维参考。执行前请自行验证脚本是否适合你的环境,做好必要备份,并承担执行风险。因使用脚本造成的损失,本站在法律允许的范围内不承担责任。依法应承担的责任仍由本站承担。
oracle-tablespace-usage-query.sql
环境与权限
Oracle数据库11g或19c版本,具有查询权限
使用方式
- 下载脚本,连接需要查看的数据库或 PDB;在 19c 多租户环境中,该查询显示当前容器,不会自动汇总所有 PDB。
使用方式 · bash
sqlplus -L /nolog- 按现场认证方式登录后执行下载的文件。
使用方式 · sql
@oracle-tablespace-usage-query.sql完整脚本
Oracle · sql
SET LINESIZE 2222
SET PAGESIZE 1000
SET HEADING ON
SET WRAP ON
-- 定义列的显示格式和标题
COLUMN tbsname HEADING 'Name'
COLUMN total_gb FORMAT 99,990.99 HEADING 'Total(GB)'
COLUMN used_gb FORMAT 99,990.99 HEADING 'Used(GB)'
COLUMN left_gb FORMAT 99,990.99 HEADING 'Left(GB)'
COLUMN used_percent FORMAT 990.99 HEADING 'Used(%)'
COLUMN count_file FORMAT 9999 HEADING 'File Count'
-- 查询当前连接容器的表空间使用情况
SELECT d.tablespace_name AS tbsname,
ROUND(d.tablespace_size * (SELECT value FROM v$parameter WHERE name = 'db_block_size') / 1024 / 1024 / 1024, 2) AS total_gb,
ROUND(d.used_space * (SELECT value FROM v$parameter WHERE name = 'db_block_size') / 1024 / 1024 / 1024, 2) AS used_gb,
ROUND((d.tablespace_size - d.used_space) * (SELECT value FROM v$parameter WHERE name = 'db_block_size') / 1024 / 1024 / 1024, 2) AS left_gb,
ROUND(d.used_percent, 2) AS used_percent,
(SELECT COUNT(file_name) FROM dba_data_files WHERE tablespace_name = d.tablespace_name) AS count_file
FROM dba_tablespace_usage_metrics d
ORDER BY total_gb DESC;