因为临时表空间很大了,同时我想把临时表空间设置为临时表空间组,删除原来老的表空间后,发现物理文件没有删除掉,并且不能手动删除,同时在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下删除临时表空间的数据文件,删除不了,要重启一上数据库。
时间: 2024-10-12 21:03:55