物理备库temp文件丢失需手动重建:首选alter database create tempfile(覆盖控制文件路径并重定向至本地),或先设standby_file_management=manual再add tempfile;unnamed占位符须offline drop清理,重建后需验证v$tempfile状态并恢复auto模式。

物理备库上 TEMP 文件丢失不会导致启动失败,但首次执行排序、哈希连接等操作时必然报 ORA-01157 / ORA-01110 —— 必须手动重建,不能等自动恢复,也不能从主库拷贝文件。
为什么 ALTER DATABASE CREATE TEMPFILE 是首选操作
备库控制文件里仍存有主库路径的 temp01.dbf 记录(比如 /u01/oradata/PRIM/temp01.dbf),直接 ALTER TABLESPACE TEMP ADD TEMPFILE 会因路径冲突报 ORA-01119;而 CREATE TEMPFILE 能覆盖原记录并重定向到本地路径。
-
REUSE参数必须显式指定,否则 Oracle 检查物理文件存在性会失败 - 必须在
MOUNT状态下执行,OPEN状态下 MRP 进程已接管,DDL 会被拦截 - 示例:
ALTER DATABASE CREATE TEMPFILE '/u01/oradata/PRIM/temp01.dbf' AS '/u01/oradata/STBY/temp01.dbf' SIZE 100M REUSE; - 执行后立即查
V$TEMPFILE,确认STATUS为ONLINE且路径是本地有效路径
standby_file_management=AUTO 时为什么 ADD TEMPFILE 会失败
当 standby_file_management=AUTO,Oracle 会拦截所有数据文件级 DDL(包括 ADD TEMPFILE),防止手动操作破坏日志应用一致性。这不是权限问题,而是机制强制。
- 先执行:
ALTER SYSTEM SET standby_file_management=MANUAL SCOPE=BOTH; - 再确认:
SHOW PARAMETER standby_file_management返回MANUAL - 此时才能用
ALTER TABLESPACE TEMP ADD TEMPFILE '/u02/oradata/STBY/temp02.dbf' SIZE 200M AUTOEXTEND ON; - 操作完成后建议切回:
ALTER SYSTEM SET standby_file_management=AUTO;,避免后续新增数据文件漏同步
UNNAMED tempfile 怎么清理
备库出现 UNNAMED00123 是 standby_file_management=AUTO 下路径映射失败的占位符,它不占用磁盘但会干扰监控、触发误报,且无法通过 DROP INCLUDING DATAFILES 删除。
- 先查出占位符路径:
SELECT NAME FROM V$TEMPFILE WHERE NAME LIKE '%UNNAMED%'; - 执行离线丢弃:
ALTER DATABASE TEMPFILE '/u01/oradata/STBY/UNNAMED00123' OFFLINE DROP; - 该命令只从控制文件移除记录,不校验文件是否存在,执行后立刻生效
- 之后再
ADD TEMPFILE或CREATE TEMPFILE就不会和占位符冲突
重建后查询仍报 ORA-01652 怎么办
新 tempfile 已上线,但老会话可能还绑定着已失效的临时段句柄,尤其当它们正在执行长排序或 PL/SQL 批处理时。
- 查残留段:
SELECT SEGMENT_NAME, SESSION_ADDR FROM V$SORT_SEGMENT WHERE TABLESPACE_NAME = 'TEMP'; - 核对
SESSION_ADDR是否还在V$SESSION中活跃;若已断连但段未释放,需重启实例(仅紧急场景) - 检查用户默认临时表空间:
SELECT PROPERTY_VALUE FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME = 'DEFAULT_TEMP_TABLESPACE';,确保不是指向已失效的旧表空间 - 应用层连接池(如 Tomcat JDBC Pool)必须清空或重启,否则复用旧连接仍会失败
最易被忽略的是:CREATE TEMPFILE 后没验证 V$TEMPFILE 的 STATUS,以及忘了把 standby_file_management 切回 AUTO —— 这会导致后续主库新增临时文件时,备库无法自动创建对应文件。











