因为临时表空间很大了,同时我想把临时表空间设置为临时表空间组,删除原来老的表空间后,发现物理文件没有删除掉,并且不能手动删除,同时在DBA_TEMP_FILES和DBA_TABLESPACES里都没找到数据文件和临时表空间,后来重启一下数据库就可以删除了,在此记录一下。
我按下面的步骤进行的操作:
-----查询有哪些临时表空间,以及用户现在的默认临时表空间。

SELECT TABLESPACE_NAME FROM DBA_TABLESPACES;

SELECT DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE FROM DBA_USERS
WHERE USERNAME='P_USER';

 

----新建临时表空间组。

CREATE TEMPORARY TABLESPACE TEMP1_1 TEMPFILE 'E:\ORADATA\PDB\TEMP1_1.DBF' SIZE 2000M
TABLESPACE GROUP TMP_GRP1;

CREATE TEMPORARY TABLESPACE TEMP1_2 TEMPFILE 'E:\ORADATA\PDB\TEMP1_2.DBF' SIZE 2000M
TABLESPACE GROUP TMP_GRP1;

CREATE TEMPORARY TABLESPACE TEMP1_3 TEMPFILE 'E:\ORADATA\PDB\TEMP1_3.DBF' SIZE 2000M
TABLESPACE GROUP TMP_GRP1;

 

----查询临时表空间组情况。

SELECT * FROM DBA_TABLESPACE_GROUPS;

----将用户指定到临时表空间

ALTER USER P_USER TEMPORARY TABLESPACE TMP_GRP1;

 

----切换所有用户到指定临时表空间

ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TMP_GRP1;

 

----再次查询用户默认临时表空间情况

SELECT DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE FROM DBA_USERS
WHERE USERNAME='P_USER';

 

-----查看临时表空间文件情况

SELECT TABLESPACE_NAME,FILE_NAME,BYTES/1024/1024 FILE_SIZE,AUTOEXTENSIBLE FROM DBA_TEMP_FILES;
SELECT STATUS,ENABLED, NAME, BYTES/1024/1024 FILE_SIZE FROM V_$TEMPFILE;--SYS用户查看

 

       ------删除临时表空间的一个数据文件:

ALTER DATABASE TEMPFILE 'E:\ORADATA\PDB\PXTMP01.DBF' OFFLINE;
ALTER DATABASE TEMPFILE 'E:\ORADATA\PDB\PXTMP01.DBF' DROP;
ALTER DATABASE TEMPFILE 'E:\ORADATA\PDB\PXTMP01.DBF' OFFLINE;
ALTER DATABASE TEMPFILE 'E:\ORADATA\PDB\PXTMP02.DBF' DROP;
   

   ------删除临时表空间(彻底删除):

DROP TABLESPACE QX_TEMP INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;

   有时候在windows下删除临时表空间的数据文件,删除不了,要重启一上数据库。