代码改变世界

ORA-25153: Temporary Tablespace is Empty

  abce  阅读(1293)  评论(0编辑  收藏  举报

在一测试环境做测试的时候发生以下错误:

1
2
3
4
5
6
7
8
9
10
11
12
SQL> exec dbms_stats.gather_table_stats(ownname=>'SYS',tabname=>'TT',method_opt=>'for columns size 1 id',cascade=>true);
BEGIN dbms_stats.gather_table_stats(ownname=>'SYS',tabname=>'TT',method_opt=>'for columns size 1 id',cascade=>true); END;
 
*
ERROR at line 1:
ORA-25153: Temporary Tablespace is Empty
ORA-06512: at "SYS.DBMS_STATS", line 24281
ORA-06512: at "SYS.DBMS_STATS", line 24332
ORA-06512: at line 1
 
 
SQL>

 

查看临时表空间:temp表空间是处于online状态

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SQL> select tablespace_name,status from dba_tablespaces;
 
TABLESPACE_NAME                STATUS
------------------------------ ---------
SYSTEM                         ONLINE
SYSAUX                         ONLINE
UNDOTBS1                       ONLINE
TEMP                           ONLINE
USERS                          ONLINE
EXAMPLE                        ONLINE
TEST                           ONLINE
 
7 rows selected.
 
SQL>

但是没有发现临时文件:

1
2
SQL> select name from v$tempfile;    --发现临时文件丢失
no rows selected

查看物理文件:文理文件仍然存在

1
2
3
4
5
6
7
8
9
10
11
12
$ ll
total 2678324
-rw-r----- 1 ora11 oinstall  10076160 Oct 25 14:39 control01.ctl
-rw-r----- 1 ora11 oinstall  10076160 Oct 25 14:39 control02.ctl
-rw-r----- 1 ora11 oinstall 363077632 Oct 25 14:33 example01.dbf
-rw-r----- 1 ora11 oinstall  52429312 Oct 25 14:33 redo01.log
-rw-r----- 1 ora11 oinstall  52429312 Oct 25 14:33 redo02.log
-rw-r----- 1 ora11 oinstall  52429312 Oct 25 14:38 redo03.log
-rw-r----- 1 ora11 oinstall 587210752 Oct 25 14:38 sysaux01.dbf
-rw-r----- 1 ora11 oinstall 922755072 Oct 25 14:38 system01.dbf
-rw-r----- 1 ora11 oinstall  62922752 Aug 14 06:02 temp01.dbf
-rw-r----- 1 ora11 oinstall  52436992 Oct 25 14:33 test01.dbf

从物理文件的时间戳可以看出temp文件最后一次访问时间

根据时间查看alert日志,发现在对应的时间做个重建控制文件操作,并且在重建控制完成后启动数据库后在alert日志中发现以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
*********************************************************************
WARNING: The following temporary tablespaces contain no files.
         This condition can occur when a backup controlfile has
         been restored.  It may be necessary to add files to these
         tablespaces.  That can be done using the SQL statement:
  
         ALTER TABLESPACE <tablespace_name> ADD TEMPFILE
  
         Alternatively, if these temporary tablespaces are no longer
         needed, then they can be dropped.
           Empty temporary tablespace: TEMP
*********************************************************************

说明是重建控制文件后,丢失了临时文件。(rman恢复数据库时也会发生类似现象)

只要把临时文件重新添加即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
SQL> alter tablespace temp add tempfile '/u01/app/oracle/oradata/db11/temp01.dbf';
 
Tablespace altered.
 
  
SQL> select * from v$tempfile;
 
     FILE# CREATION_CHANGE# CREATION_        TS#     RFILE# STATUS  ENABLED         BYTES     BLOCKS CREATE_BYTES BLOCK_SIZE NAME
---------- ---------------- --------- ---------- ---------- ------- ---------- ---------- ---------- ------------ ---------- ----------------------------------------
         1          1727770 25-OCT-16          3          1 ONLINE  READ WRITE   62914560       7680     62914560       8192 /u01/app/oracle/oradata/db11/temp01.dbf
 
SQL> select tablespace_name,file_name from dba_temp_files;
 
TABLESPACE_NAME                FILE_NAME
------------------------------ -------------------------------------------------------------------------------------------
TEMP                           /u01/app/oracle/oradata/db11/temp01.dbf
 
SQL> exec dbms_stats.gather_table_stats(ownname=>'SYS',tabname=>'TT',method_opt=>'for columns size 1 id',cascade=>true);
 
PL/SQL procedure successfully completed.
 
SQL>

  

编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2015-10-25 创建一个已经存在数据的MySQL复制
点击右上角即可分享
微信分享提示