做完數據庫的恢復后,臨時表空間不可用,物理文件已經被刪除,具體解決方法如下:
1、查詢dba_temp_files發現臨時文件不可用:
SQL> select file_name from dba_temp_files;
未選定行
2、重建臨時表空間出錯:
SQL> create temporary tablespace temp tempfile
2 'F:\oracle\oradata\orcl\temp.dbf' size 500m
3 extent management local;
create temporary tablespace temp tempfile
*
ERROR 位于第 1 行:
ORA-01543: 表空間 'TEMP' 已經存在
2 'F:\oracle\oradata\orcl\temp.dbf' size 500m
3 extent management local;
create temporary tablespace temp tempfile
*
ERROR 位于第 1 行:
ORA-01543: 表空間 'TEMP' 已經存在
SQL> drop tablespace temp;
drop tablespace temp
*
ERROR 位于第 1 行:
ORA-12906: 不能刪除默認的臨時表空間
3、查詢dba_tablespaces發現temp臨時表空間存在:
SQL> select tablespace_name from dba_tablespaces;
TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS
CWMLITE
DRSYS
EXAMPLE
INDX
TEMP
TOOLS
ASE_TEST
PERFSTAT
STUDENT_DATA
------------------------------
SYSTEM
UNDOTBS
CWMLITE
DRSYS
EXAMPLE
INDX
TEMP
TOOLS
ASE_TEST
PERFSTAT
STUDENT_DATA
已選擇11行。
4、創建新的臨時文件:
SQL> create temporary tablespace temp1 tempfile
2 'F:\oracle\oradata\orcl\temp1.dbf' size 500m
3 extent management local;
2 'F:\oracle\oradata\orcl\temp1.dbf' size 500m
3 extent management local;
表空間已創建。
SQL> select tablespace_name from dba_tablespaces;
TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS
CWMLITE
DRSYS
EXAMPLE
INDX
TEMP
TOOLS
ASE_TEST
PERFSTAT
STUDENT_DATA
------------------------------
SYSTEM
UNDOTBS
CWMLITE
DRSYS
EXAMPLE
INDX
TEMP
TOOLS
ASE_TEST
PERFSTAT
STUDENT_DATA
TABLESPACE_NAME
------------------------------
TEMP1
------------------------------
TEMP1
已選擇12行。
5、重新指定臨時表空間:
SQL> alter database default temporary tablespace temp1;
數據庫已更改。
SQL> select file_name from dba_temp_files;
FILE_NAME
------------------------------------------------------------
------------------------------------------------------------
F:\ORACLE\ORADATA\ORCL\TEMP1.DBF
6、刪除temp臨時表空間:
SQL> drop tablespace temp;
表空間已丟棄。
注:如果要是物理文件還存在,則可以直接把物理文件添加進temp表空間就可以:
alter tablespace temp add tempfile '物理文件名';