详解如何删除Oracle数据库临时表空间

 更新时间:2024年03月11日 10:09:52   作者:lzyever  
因生产环境磁盘空间不足,影响了业务,短时间内无法扩容磁盘,经过排查发现,可以释放temp临时表空间来临时释放部分空间,本文记录了如何释放临时表空间的详细操作步骤,需要的朋友可以参考下

前言

因生产环境磁盘空间不足,影响了业务,短时间内无法扩容磁盘,经过排查发现,可以释放temp临时表空间来临时释放部分空间。

本文记录了如何释放临时表空间的详细操作步骤。

1、查看旧的临时表空间

首先查看旧的临时表空间的空间占用情况

SQL>select tablespace_name,tablespace_size/1024/1024, allocated_space/1024/1024,free_space/1024/1024 from dba_temp_free_space;
    TABLESPACE_NAME      TABLESPACE_SIZE/1024/1024 ALLOCATED_SPACE/1024/1024 FREE_SPACE/1024/1024
    -------------------- ------------------------- ------------------------- --------------------
    TEMP  

                               23069                     23069                23067

2、新建temp表空间

创建新的临时表空间,用于替换旧的临时表空间

SQL>create temporary tablespace temp1 tempfile ‘+DATA' size 100m autoextend on;  
Tablespace created.  

3、修改默认临时表空间

将新的临时表空间设置为默认的临时表空间

SQL>alter database default temporary tablespace temp1;  
Database altered. 

4、查看新建的临时表空间使用情况

新的临时表空间被设置为默认临时表空间后,新的临时数据会写到新的临时表空间中,下面查看新建的临时标快的空间占用情况

SQL>select tablespace_name,tablespace_size/1024/1024 total, allocated_space/1024/1024 allocated ,free_space/1024/1024 free from dba_temp_free_space;

tablespace_name       total                       allocated                   free
-------------------- ------------------------- ------------------------- --------------------
TEMP                     23069                     23069                23067
TEMP1                    100                         3                   99

5、查看临时表空间使用情况

5.1、查看谁在使用临时表空间

下面的SQL查询哪些会话在占用旧的临时表空间

SQL>Col PROGRAM for a20
SQL>Col MACHINE for a20
SQL>col username for a15
SQL>SELECT se.username,
sid,
serial#,
sql_address,
machine,
program,
tablespace,
segtype,
contents
FROM v$session se,v$sort_usage su
WHERE se.saddr=su.session_addr order by 7,1;

5.2、然后查看用户的状态是active还是inactive,如果是inactive,直接kill即可

如果旧的临时表空间的会话是active,需要谨慎,不能直接kill,需要等待会话消失或者变成inactive状态。如果是inactive状态,可以直接kill会话。

SQL>select * from v$session where sid=‘1042';  
SQL>alter system kill session ‘1042,48682';

5.3、查看临时表空间上正在执行哪些SQL

上面的SQL查看哪些会话运行在旧的临时表空间, 下面的SQL将查询active会话中,正在执行的SQL语句。以此来判断是否是关键的事物。

SQL>Col tablespace name for a20  
SQL>SELECT se.username,  
se.sid,  
se.serial#,  
su.extents,  
su.blocks \* to\_number(rtrim(p.value)) AS Space,  
tablespace,  
segtype,  
sql\_text  
FROM v$sort\_usage su,v$parameter p ,v$session se,v$sql s  
WHERE p.NAME = ‘db\_block\_size'  
AND su.session\_addr = se.saddr  
AND s.hash\_value = su.sqlhash  
AND s.address = su.sqladdr  
ORDER BY se.username ,se.sid;

6、确定旧的临时表空间没有在被使用,直接删除即可

通过上面的两个SQL语句确认旧的临时表空间上没有会话和事物之后,就可以删除旧的临时表空间了。

SQL>drop tablespace temp including contents and datafiles;

到此这篇关于详解如何删除Oracle数据库临时表空间的文章就介绍到这了,更多相关删除Oracle临时表空间内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 优化Oracle停机时间及数据库恢复

    优化Oracle停机时间及数据库恢复

    优化Oracle停机时间及数据库恢复...
    2007-03-03
  • Oracle存储过程语法代码示例详解

    Oracle存储过程语法代码示例详解

    本文讲解Oracle存储过程语法,包括总体结构、存储过程声明、参数定义、变量声明、游标声明、行数据类型声明、变量赋值、条件判断、WHILE循环、FOR循环、游标使用、异常捕捉、异常处理、存储过程调用、存储过程代码示例调用代码示例、调用结果展示,感兴趣的朋友一起看看吧
    2025-04-04
  • Oracle数据库下载及安装图文操作步骤

    Oracle数据库下载及安装图文操作步骤

    本文将介绍Oracle数据库下载及安装等一系列步骤,需要了解的朋友可以参考下
    2012-12-12
  • Oracle单实例升级补丁全过程记录

    Oracle单实例升级补丁全过程记录

    这篇文章主要介绍了Oracle单实例升级补丁,oracle19.3升级补丁到19.18,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-08-08
  • Oracle获取GUID和生成批量插入语句实现方法

    Oracle获取GUID和生成批量插入语句实现方法

    这篇文章主要给大家介绍了关于Oracle获取GUID和生成批量插入语句实现的相关资料,文中通过图文以及示例代码介绍的非常详细,对大家学习或者工作具有一定的参考价值,需要的朋友可以参考下
    2023-08-08
  • Oracle LogMiner的使用实例代码

    Oracle LogMiner的使用实例代码

    这篇文章主要给大家分享了关于Oracle LogMiner的使用实例代码,文中通过示例代码介绍了关于查询当前日志组、业务用户插入操作、归档日志切换、业务用户插入操作以及归档日志切换等等的相关功能,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-07-07
  • WIN7下ORACLE10g服务端和客户端的安装图文教程

    WIN7下ORACLE10g服务端和客户端的安装图文教程

    WIN7下安装ORACLE10gd的服务端和客户端的方法,在安装之前需要先卸载oracle 10g,具体安装方法和详细说明大家可以参考下本文
    2017-07-07
  • 在Linux下安装Oracle

    在Linux下安装Oracle

    在Linux下安装Oracle...
    2007-03-03
  • 解决Oracle批量修改问题

    解决Oracle批量修改问题

    这篇文章主要介绍了解决Oracle批量修改问题,需要的朋友可以参考下
    2017-08-08
  • Oracle数据库执行脚本常用命令小结

    Oracle数据库执行脚本常用命令小结

    这篇文章主要介绍了Oracle数据库执行脚本常用命令小结的相关资料,需要的朋友可以参考下
    2015-12-12

最新评论