跳过正文

Oracle 删除并重建 TEMP 临时表空间操作实战

Greatfinish
作者
Greatfinish
记录 Oracle、PostgreSQL、达梦、Linux、存储与生产环境故障处理经验。

如果您想重新创建临时表空间,请按照以下步骤操作👌

查找现有临时表空间详细信息
#

脚本如下:

set linesize 200
col file_name for a60
select tablespace_name,file_name from dba_temp_files;

操作结果如下:

SQL> set linesize 200
SQL> col file_name for a60
SQL> select tablespace_name,file_name from dba_temp_files;

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

SQL>

创建另一个临时表空间 TEMP1
#

脚本如下:

CREATE TEMPORARY TABLESPACE TEMP1 TEMPFILE '/u01/app/oracle/oradata/orcl/temp02.dbf' SIZE 2G;

操作结果如下:

SQL> CREATE TEMPORARY TABLESPACE TEMP1 TEMPFILE '/u01/app/oracle/oradata/orcl/temp02.dbf' SIZE 2G;

Tablespace created.

SQL>

移动默认数据库临时表空间
#

脚本如下:

ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP1;

操作结果如下:

SQL> ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP1;

Database altered.

SQL>

如果任何会话正在使用临时空间,则看情况杀死它们
#

脚本如下:

SELECT b.tablespace,b.segfile#,b.segblk#,b.blocks,a.sid,a.serial#,
a.username,a.osuser, a.status
FROM v$session a,v$sort_usage b
WHERE a.saddr = b.session_addr;

ALTER SYSTEM KILL SESSION 'SID,SERIAL#' IMMEDIATE;

操作结果如下:

SQL> SELECT b.tablespace,b.segfile#,b.segblk#,b.blocks,a.sid,a.serial#,
a.username,a.osuser, a.status
FROM v$session a,v$sort_usage b
WHERE a.saddr = b.session_addr;  2    3    4

no rows selected

SQL>

删除原始临时表空间
#

脚本如下:

DROP TABLESPACE temp INCLUDING CONTENTS AND DATAFILES;

操作结果如下:

SQL> DROP TABLESPACE temp INCLUDING CONTENTS AND DATAFILES;

Tablespace dropped.

SQL>

如果要将名称从 TEMP1 重新更改为 TEMP,请按照以下步骤操作👌

创建TEMP表空间
#

脚本如下:

CREATE TEMPORARY TABLESPACE TEMP TEMPFILE '/u01/app/oracle/oradata/orcl/temp03.dbf' SIZE 2000M;

操作结果如下:

SQL> CREATE TEMPORARY TABLESPACE TEMP TEMPFILE '/u01/app/oracle/oradata/orcl/temp03.dbf' SIZE 2000M;

Tablespace created.

SQL>

将 TEMP 设置为默认表空间
#

脚本如下:

ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp;

操作结果如下:

SQL> ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp;

Database altered.

SQL>

删除表空间 TEMP1 的临时表
#

脚本如下:

DROP TABLESPACE temp1 INCLUDING CONTENTS AND DATAFILES;

操作结果如下:

SQL> DROP TABLESPACE temp1 INCLUDING CONTENTS AND DATAFILES;

Tablespace dropped.

SQL>