您的位置:首页技术文章

oracle临时表空间的作用与创建及相关操作详解

【字号: 日期:2023-03-08 16:57:11浏览:4作者:猪猪
目录
  • 1.1 临时表空间作用
  • 1.2 临时表空间和临时表空间组
  • 1.3 临时表空间操作
    • (1) 查看表空间
    • (2) 查看表空间详细信息
    • (3) 查看除临时表空间外 表空间对应的数据文件
    • (4) 查看临时表空间对应的数据文件
    • (5) 查看临时表空间组信息
    • (6) 查看默认的临时表空间
  • 1.4 创建临时表空间
    • 补充:对临时文件进行删除
      • 总结

        1.1 临时表空间作用

        用来存放用户的临时数据,临时数据就是在需要时被覆盖,关闭数据库后自动删除,其中不能存放永久临时性数据。

        如:

        当用户对大量数据进行排序时,排序在PGA中进行,若数据过多,导致内存不足,oracle会把需要排序的数据分为多份,每次取一份在PGA中排序,其余部分放在临时表空间,直至所有数据排序完成,不过临时表空间在硬盘上,数据交换降低性能

        1.2 临时表空间和临时表空间组

        临时表空间组是由一组临时表空间组成的组,临时表空间组和临时表空间不能同名。临时表空间组不能显式地被创建和删除;当把第一个临时表空间分配某个临时表空间组时,会自动创建临时表空间组;当把临时表空间组内最后一个临时表空间删除时,会自动删除临时表空间组;

        1.3 临时表空间操作

        (1) 查看表空间

        select * from v$tablespace;
        

        (2) 查看表空间详细信息

        select * from dba_tablespaces;
        

        CONTENTS字段值为TEMPORARY,即临时表空间

        (3) 查看除临时表空间外 表空间对应的数据文件

        select * from dba_data_files;
        

        (4) 查看临时表空间对应的数据文件

        select * from dba_temp_files;
        

        select * from v$tempfile;
        

        (5) 查看临时表空间组信息

        select * from dba_tablespace_groups;
        

        (6) 查看默认的临时表空间

        select * from database_properties where PROPERTY_NAME="DEFAULT_TEMP_TABLESPACE";
        

        1.4 创建临时表空间

        (1) 创建不属于组的临时表空间

        create temporary tablespace temp2 tempfile "D:\software\oracle\oradata\orcl\temp2a.dbf" size 10m autoextend on ;
        

        (2) 属于组的临时表空间

        create temporary tablespace temp3 tempfile "D:\software\oracle\oradata\orcl\temp3a.dbf" size 10m autoextend on
        	tablespace group temp_group ;
        

        (2) 临时表空间加入或移除临时表空间组

        把temp2加入到temp_group 中

        alter tablespace temp2 tablespace group temp_group;
        

        把temp2移除emp_group

        alter tablespace temp2 tablespace group "";
        

        (3)给临时表空间添加一个临时文件

        alter tablespace temp2 add tempfile "D:\software\oracle\oradata\orcl\temp2b.dbf" size 10m autoextend on;
        

        (4)修改系统默认的临时表空间

        修改为一个组

        alter  database default temporary tablespace temp_group ;
        

        修改为一个临时表空间

        alter  database default temporary tablespace temp2;
        

        补充:对临时文件进行删除

        alter  tablespace temp drop tempfile "/m/oracle/oradata4/temp05.dbf";
        alter  tablespace temp drop tempfile "/m/oracle/oradata5/temp06.dbf";
        alter  tablespace temp drop tempfile "/m/oracle/oradata5/temp07.dbf";
        alter tablespace temp add tempfile "/m/oracle/oradata4/temp05.dbf" size 1G reuse;
        alter tablespace temp add tempfile "/m/oracle/oradata5/temp06.dbf" size 1G reuse;
        alter tablespace temp add tempfile "/m/oracle/oradata5/temp07.dbf" size 1G reuse;

        删除过程:

        SQL> alter database tempfile '/u01/app/oracle/oradata/temp2' drop including datafiles;
        alter database tempfile '/u01/app/oracle/oradata/temp2' drop including datafiles
        *
        ERROR at line 1:
        ORA-25152: TEMPFILE cannot be dropped at this time

        通过查看官方针对ORA-25152的描述信息,发现如下:

        ORA-25152: TEMPFILE cannot be dropped at this time
        Cause: An attempt was made to drop a TEMPFILE being used by online users
        Action: The TEMPFILE has been taken offline. Try again, later

        可能是临时表空间被占用,执行以下脚本,查询出占用临时表空间的会话信息,使用alter system kill命令杀掉会话进程,即可解决问题。

        也可以等待一段时间之后,对临时表空间临时文件进行删除即可 。

        总结

        到此这篇关于oracle临时表空间的作用与创建及相关操作的文章就介绍到这了,更多相关oracle临时表空间创建内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

        标签: Oracle