您的位置:首頁技術文章
文章詳情頁

oracle丟失temp表空間的處理方法

瀏覽:120日期:2023-05-30 16:13:47

之前有做臨時表空間的切換,切換后沒drop tablespace就刪除了temp01.dbf結果排序跟查dba_temp_files報錯

SQL> select tablespace_name,file_id,file_name,bytes/1024/1024 Mbytes from dba_temp_files;
select tablespace_name,file_id,file_name,bytes/1024/1024 Mbytes from dba_temp_files
 *
ERROR at line 1:
ORA-01116: error in opening database file 201
ORA-01110: data file 201: "/home/oracle/oradata/osa/temp01.dbf"
ORA-27041: unable to open file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3

兩種方法可以恢復

1、重啟數據庫

重啟后系統會自動重建,數據庫會提示re-creating在bdump的alter_sid.log中

Re-creating tempfile /home/oracle/oradata/osa/temp01.db

2、重建

alter tablespace temp add tempfile '/oracle/oradata/osa/temp03.dbf' size 50m;
alter tablespace temp drop tempfile '/oracle/oradata/osa/temp01.dbf' ;

Oracle 11g的Temp表空間怎么恢復?

答案是系統會自動重建;

實驗如下:

我們先查看Temp表空間對應的數據文件

SQL> select FILE_NAME,TABLESPACE_NAME,STATUS from dba_temp_files;

FILE_NAME				 TABLESPACE_NAME									    STATUS
---------------------------------------- ------------------------------------------------------------------------------------------ ---------------------
/u01/oracle/oradata/orcl/temp01.dbf	 TEMP											    ONLINE


然后登陸到sys用戶下,shutdown immediate

在文件系統層面去刪除該數據文件

cd /u01/oracle/oradata/orcl/
ls
rm -f temp01.dbf

啟動過程中,可觀察到Alert日志中出現如下語句

Re-creating tempfile /u01/oracle/oradata/orcl/temp01.dbf

然后Oracle正常啟動,查看文件系統,又多了temp01.dbf
實驗結束。

還有一種情況,考慮到生產環境,數據庫需要7*24小時的運轉,假如說運行過程中temp數據文件出問題,而該問題又沒有導致數據庫異常關閉的情況下,該如何修復? 值得注意的是,temp表有排序的功能。

由于實驗過程不好模擬,我們需要執行的操作就是丟一個temp02.dbf的數據文件給臨時表空間,然后去掉temp01.dbf的數據文件就可以了。

標簽: Oracle
相關文章:
国产综合久久一区二区三区