表空间与存储

文件路径、盘符一律用占位:/u01/oradata/appdb/。不要把真实挂载点写进笔记仓库。

谁快满了

SELECT
  tablespace_name,
  round(used_percent, 1) AS used_pct
FROM dba_tablespace_usage_metrics
ORDER BY used_percent DESC;

数据文件:

SELECT tablespace_name, file_name, autoextensible,
       round(bytes/1024/1024) AS mb
FROM dba_data_files
ORDER BY tablespace_name;

TEMP

临时表空间被排序、哈希、索引创建打满时,会话会报无法分配临时段。

SELECT tablespace_name, round(used_blocks*8/1024) AS used_mb
FROM v$temp_space_header;

SELECT username, sql_id, extents, blocks
FROM v$tempseg_usage;

处理顺序:先找大 SQL,再考虑加临时文件。不要一上来就扩到「很大就行」。

UNDO

长查询或大事务会把 UNDO 吃满,表现为快照过旧或无法扩展。

SELECT tablespace_name, status, round(bytes/1024/1024) AS mb
FROM dba_undo_extents;

SHOW PARAMETER undo_retention;

UNDO_RETENTION 只是目标,空间不够时实例还是会复用过期段。

注意

AUTOEXTEND 不是无限。文件系统满了,数据文件也伸不出去。ASM 和文件系统的查看方式不同,先确认存储层。

参考:Tablespaces