怎么查看当前oracle库下的表空间temp大小或者默认大小

要查看 Oracle 数据库中 临时表空间(TEMP Tablespace)的大小或默认设置,可以使用以下几种方法。这些方法适用于 Oracle 11g、12c、19c、21c 等主流版本。


✅ 一、查看当前数据库的默认临时表空间

sql 复制代码
SELECT property_name, property_value
FROM database_properties
WHERE property_name = 'DEFAULT_TEMP_TABLESPACE';

输出示例:

复制代码
PROPERTY_NAME                | PROPERTY_VALUE
----------------------------|-----------------
DEFAULT_TEMP_TABLESPACE     | TEMP

这表示新建用户若未指定临时表空间,将默认使用 TEMP


✅ 二、查看临时表空间的总大小、已用、空闲情况

临时表空间在 Oracle 中是通过 临时文件(tempfiles) 管理的,不是普通数据文件。因此不能用 dba_data_files,而要用 dba_temp_files

1. 查看所有临时表空间及其文件大小

sql 复制代码
SELECT 
    tf.tablespace_name,
    tf.file_name,
    tf.bytes / 1024 / 1024 AS size_mb,
    tf.maxbytes / 1024 / 1024 AS max_size_mb,
    tf.autoextensible
FROM dba_temp_files tf
ORDER BY tf.tablespace_name;
  • bytes:当前分配的大小(MB)
  • maxbytes:最大可扩展到的大小(如果启用了自动扩展)
  • autoextensible:是否自动扩展(YES/NO)

2. 查看每个临时表空间的总容量

sql 复制代码
SELECT 
    tablespace_name,
    SUM(bytes) / 1024 / 1024 AS total_mb,
    SUM(maxbytes) / 1024 / 1024 AS max_total_mb
FROM dba_temp_files
GROUP BY tablespace_name;

✅ 三、查看临时表空间的实际使用情况(当前已用)

临时表空间的"已用空间"是动态的,可通过以下视图查看:

sql 复制代码
SELECT 
    s.tablespace,
    s.segfile#,
    s.segblk#,
    s.blocks * t.block_size / 1024 / 1024 AS used_mb,
    s.extents
FROM v$sort_segment s
JOIN dba_tablespaces t ON t.tablespace_name = s.tablespace;

或者更常用的是查看当前所有会话占用的临时空间

sql 复制代码
SELECT 
    s.sid,
    s.serial#,
    s.username,
    su.tablespace,
    su.segtype,
    su.blocks * (SELECT block_size FROM dba_tablespaces WHERE tablespace_name = su.tablespace) / 1024 / 1024 AS used_mb
FROM v$sort_usage su
JOIN v$session s ON su.session_addr = s.saddr
ORDER BY used_mb DESC;

这能告诉你谁在用 temp、用了多少


✅ 四、查看临时表空间是否为大文件表空间(Bigfile)

sql 复制代码
SELECT tablespace_name, bigfile
FROM dba_tablespaces
WHERE contents = 'TEMPORARY';
  • BIGFILE = 'YES':表示该临时表空间只能有一个 tempfile,但可超大(如 32TB)
  • BIGFILE = 'NO':传统 smallfile 表空间,可有多个 tempfile

✅ 五、补充:如何知道某个用户使用哪个临时表空间?

sql 复制代码
SELECT username, temporary_tablespace
FROM dba_users
WHERE username = 'SCOTT';  -- 替换为你的用户名

🔚 总结常用命令

目的 SQL
查默认临时表空间 SELECT property_value FROM database_properties WHERE property_name = 'DEFAULT_TEMP_TABLESPACE';
查 tempfile 大小 SELECT file_name, bytes/1024/1024 FROM dba_temp_files;
查当前 temp 使用 SELECT * FROM v$sort_usage;
查用户临时表空间 SELECT temporary_tablespace FROM dba_users WHERE username = 'XXX';

⚠️ 注意:查询 dba_* 视图需要 DBA 权限或 SELECT_CATALOG_ROLE。普通用户可用 all_*user_* 视图,但对 temp 信息有限。

如果你没有 DBA 权限,可以尝试用 v$tempfile(需有访问动态性能视图权限):

sql 复制代码
SELECT name, bytes/1024/1024 AS size_mb FROM v$tempfile;

希望这能帮你全面掌握 Oracle 临时表空间的查看方法!如需扩容或监控建议,也可继续提问。

相关推荐
yoyo_zzm1 小时前
Laravel8.x新特性全解析
数据库·nginx
码界奇点2 小时前
基于Python的新浪微博数据爬虫系统设计与实现
数据库·爬虫·python·毕业设计·新浪微博·源代码管理
我科绝伦(Huanhuan Zhou)2 小时前
探索技术世界:我的GitHub数据库工具宝库
数据库·github
猫的玖月3 小时前
(一)MY SQL概述
数据库·sql
脑子进水养啥鱼?4 小时前
PostgreSQL .history 文件
数据库·postgresql
倔强的石头_4 小时前
5 个真实案例带你避坑:DolphinDB 实时写入、流订阅与高可用调优
数据库
虹科网络安全4 小时前
艾体宝新闻|Redis 月度更新速览:2026 年 3 月
数据库·redis·缓存
Nturmoils4 小时前
DolphinDB 实时时序数据处理踩坑实录:5 类生产故障排查与优化
数据库
csdn2015_4 小时前
postgresql 拼接字段
数据库