ORA-25153: Temporary Tablespace is Empty 解決方法

tieshuai發表於2008-01-11

2008年的春節馬上就要到來,深圳的冬天,日光依舊,一顆漂浮的心,在美麗浪漫的 煙雨 裡,終於開始安靜下來。前途是光明的,愛情是甜蜜的,秋香的出現,讓每一天都充滿激情,樂趣,突然發現,世界是多麼的美好,這是一個美麗的 冬天。

下面,是我做的Oracle 10G 裡面控制檔案恢復後,臨時表空間為空的處理方法,這是Oracle 10G 的一個bug,在11G裡面已經沒有這個問題。

問題: ORA-25153: Temporary Tablespace is Empty

我們先檢視錶空間

SQL> select tablespace_name,status from dba_tablespaces;

TABLESPACE_NAME                STATUS
------------------------------ ---------
SYSTEM                         ONLINE
UNDOTBS1                       ONLINE
SYSAUX                         ONLINE
TEMP                           ONLINE
USERS                          ONLINE
RECOVERY_TBS                   ONLINE
都temp online 線上。

 SQL> select tablespace_name,file_name from dba_temp_files;

no rows selected

就會發現,dba_temp_files 原來如此。

SQL> alter tablespace temp add tempfile '/oradata/elife02/temp01.dbf' SQL>  select FILE_NAME,TABLESPACE_NAME,STATUS from dba_temp_files;

FILE_NAME TABLESPACE_NAME STATUS

----------------------------------- ------------------------------ ---------

/oradata/elife02/temp01.dbf TEMP AVAILABLE

還可以指定預設的臨時表空間

SQL>alter database  default temporary tablespace temp;

下面,我們來了解一下臨時表的用途:

disk sort:

自己的理解是排序始終是在記憶體裡完成的,如果要排序的資料量很大,在記憶體裡不能完成,oracle會分階段來排序,每次先排一部分,並且把排好序的資料臨時存放在使用者default temporary tablespace中的temp segment上,而臨時表空間對應的tempfile屬於disk檔案,這就是disk sort的由來。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/701141/viewspace-135994/,如需轉載,請註明出處,否則將追究法律責任。

相關文章