[小e筆記]之錯誤案例——ORA-25153錯誤

錯誤描述如下:

SQL> select dbms_metadata.get_ddl('TABLE','TEST') from dual;

ERROR:

ORA-25153: Temporary Tablespace is Empty

ORA-06512: at "SYS.DBMS_LOB", line 664

ORA-06512: at "SYS.DBMS_METADATA", line 3825

ORA-06512: at "SYS.DBMS_METADATA", line 5678

ORA-06512: at line 1

no rows selected

解決方法:  --很簡單解決的

(1)故障定位

SQL> select name from v$tempfile;    --發現臨時文件丟失

no rows selected

也會從警告日誌中可以看出確實臨時文件

SMON: enabling tx recovery

*********************************************************************

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

*********************************************************************

(2)指定臨時文件

SQL> alter tablespace temp add tempfile '/u01/oracle/oradata/elvis/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           920166 17-OCT-12          3          1 ONLINE  READ WRITE

  71303168       8704     71303168       8192

/u01/oracle/oradata/elvis/temp01.dbf

SQL> set long 9999;

SQL> select dbms_metadata.get_ddl('TABLE','TEST') from dual;

DBMS_METADATA.GET_DDL('TABLE','TEST')

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

  CREATE TABLE "SYS"."TEST"

   (    "ID" NUMBER(*,0),

        "SCN" NUMBER(*,0)

   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING

  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DE

FAULT CELL_FLASH_CACHE DEFAULT)

  TABLESPACE "TEST"

OK沒有問題了

總結:臨時文件丟失不會影響運行中的數據庫,但臨時文件還是必不可少的,因爲Oracle使用臨時文件來存儲大規模排序操作和散列操作的中間結果等等作用,如果臨時文件丟失,完全可以在創建一個,而且臨時文件丟失不會有數據丟失的情況。因爲永久數據對象不會存儲在臨時文件中,總之Oracle既然創造了臨時文件,就有它特有的意義。

 

elvis

2012.10.20

知識共享~共同進步

轉載請註明:

 http://blog.csdn.net/elvis_dataguru/article/details/8092095

發佈了54 篇原創文章 · 獲贊 42 · 訪問量 30萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章