怎么查看当前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 临时表空间的查看方法!如需扩容或监控建议,也可继续提问。

相关推荐
爱喝水的鱼丶15 小时前
SAP-ABAP:SELECT查询性能优化基础——索引匹配、条件顺序与缓冲机制利用技巧
数据库·性能优化·select·sap·abap·开发交流·交流学习
zhoupenghui16815 小时前
ClickHouse merge引擎详解以及应用
数据库·clickhouse·merge·mergetree
@insist12315 小时前
信息系统管理工程师-任务、标准、EDM 过程与关键域
java·大数据·数据库
qq_3660862215 小时前
关于接口路径中中文值解码问题
java·开发语言·数据库
ClouGence16 小时前
数据库为什么需要 SSL?一文了解 SSL 连接原理与配置
数据库·开源
一十九的酒16 小时前
Oracle 密码恢复实战:使用 SPARE4 哈希值还原用户密码
数据库·oracle·密码丢失·密码恢复·账户锁定
冰暮流星16 小时前
mysql之新建表及对表的查询
android·数据库·mysql
C语言Plus16 小时前
C++ SqlBuilder一个简单、灵活且类型安全的 C++ SQL 构建器库
数据库·sql·安全·c++20
喝茶与编码16 小时前
真实业务场景:高并发 Upsert 死锁频发?InnoDB 锁机制与重试机制深度解析
数据库·python
BreezeJiang16 小时前
做完 AI 日记本后,我终于理解了:向量数据库不是用来替代 MySQL 的
数据库