今天在查数据的时候报错  ORA-01652:无法通过16(在表空间temp1中)扩展 temp 字段

查看表空间使用明细

SELECT b.tablespace,
       b.segfile#,
       b.segblk#,
       b.blocks,
       b.blocks * 32 / 1024 / 1024,
       a.sid,
       a.serial#,
       a.username,
       a.osuser,
       a.status,
       c.sql_text,
       b.contents
  FROM v$session
a, v$sort_usage b, v$sql c
 WHERE a.saddr
= b.session_addr
   AND a.sql_address
= c.address(+)
 ORDER BY b.blocks DESC ;

查看临时表空间情况

SELECT D.TABLESPACE_NAME,
       SPACE "SUM_SPACE(M)",
       BLOCKS SUM_BLOCKS,
       USED_SPACE "USED_SPACE(M)",
       ROUND(NVL (USED_SPACE, 0)
/ SPACE * 100 , 2)
"USED_RATE(%)",
       NVL(FREE_SPACE, 0 )
"FREE_SPACE(M)"
  FROM ( SELECT TABLESPACE_NAME,
               ROUND(SUM (BYTES)
/ (1024 * 1024), 2 ) SPACE,
               SUM(BLOCKS)
BLOCKS
          FROM DBA_TEMP_FILES
         GROUP BY TABLESPACE_NAME)
D,
       ( SELECT TABLESPACE_NAME,
               ROUND(SUM (BYTES_USED)
/ (1024 * 1024), 2 )
USED_SPACE,
               ROUND(SUM (BYTES_FREE)
/ (1024 * 1024), 2 )
FREE_SPACE
          FROM V$TEMP_SPACE_HEADER
         GROUP BY TABLESPACE_NAME)
F
 WHERE D.TABLESPACE_NAME
= F.TABLESPACE_NAME(+)

查看临时表空间是否自动增加

select tablespace_name,file_name,bytes/1024/1024 file_size,autoextensible from dba_temp_files;

解决办法,增大表空间/删除某些垃圾文件/更改表空间自动增长

更改表空间设置为自动增加
  1. -- 首先查询你的表空间的临时表空间对应的数据文件名
  2. select file_id from dba_temp_files where tablespace_name=你的表空间名;
  3. -- 使用刚刚查询出来的file_id更改时间表空间的增长方式为自动增长
  4. alter database tempfile file_id autoextend on next 100M maxsize 1G;

问题解决;

其他一些关于此的知识

1、查看临时表空间 (dba_temp_files视图)(v_$tempfile视图)

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用户查看



2、缩小临时表空间大小

alter database tempfile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\TELEMT\TEMP01.DBF'
resize 100M;



3、扩展临时表空间:

方法一、增大临时文件大小:

SQL> alter database tempfile ‘/u01/app/oracle/oradata/orcl/temp01.dbf’ resize 100m;

方法二、将临时数据文件设为自动扩展:

SQL> alter database tempfile ‘/u01/app/oracle/oradata/orcl/temp01.dbf’ autoextend on next 5m maxsize unlimited;

方法三、向临时表空间中添加数据文件:

SQL> alter tablespace temp add tempfile ‘/u01/app/oracle/oradata/orcl/temp02.dbf’ size 100m;



4、创建临时表空间:

SQL> create temporary tablespace temp1 tempfile ‘/u01/app/oracle/oradata/orcl/temp11.dbf’ size 10M;



5、更改系统的默认临时表空间:

--查询默认临时表空间

select * from database_properties where property_name='DEFAULT_TEMP_TABLESPACE';

--修改默认临时表空间

alter database default temporary tablespace temp1;

所有用户的默认临时表空间都将切换为新的临时表空间:

select username,temporary_tablespace,default_ from dba_users;

--更改某一用户的临时表空间:

alter user scott temporary tablespace temp;



6、删除临时表空间

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

SQL> alter database tempfile ‘/u01/app/oracle/oradata/orcl/temp02.dbf’ drop;

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

SQL> drop tablespace temp1 including contents and datafiles cascade constraints;



7、查看临时表空间的使用情况(GV_$TEMP_SPACE_HEADER视图必须在sys用户下才能查询)

GV_$TEMP_SPACE_HEADER视图记录了临时表空间的使用大小与未使用的大小

dba_temp_files视图的bytes字段记录的是临时表空间的总大小

SELECT temp_used.tablespace_name,

       total - used as "Free",

       total as "Total",

       round(nvl(total - used, 0) * 100 / total, 3) "Free percent"

  FROM (SELECT tablespace_name, SUM(bytes_used) / 1024 / 1024 used

          FROM GV_$TEMP_SPACE_HEADER

         GROUP BY tablespace_name) temp_used,

       (SELECT tablespace_name, SUM(bytes) / 1024 / 1024 total

          FROM dba_temp_files

         GROUP BY tablespace_name) temp_total

 WHERE temp_used.tablespace_name = temp_total.tablespace_name



8、查找消耗资源比较的sql语句

Select se.username,

       se.sid,

       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

 

9、查看当前临时表空间使用大小与正在占用临时表空间的sql语句

select sess.SID, segtype, blocks * 8 / 1000 "MB", sql_text

  from v$sort_usage sort, v$session sess, v$sql sql

 where sort.SESSION_ADDR = sess.SADDR

   and sql.ADDRESS = sess.SQL_ADDRESS

 order by blocks desc;



10、临时表空间组介绍

  1)创建临时表空间组:

create temporary tablespace tempts1 tempfile '/home/oracle/temp1_02.dbf' size 2M tablespace group group1;

create temporary tablespace tempts2 tempfile '/home/oracle/temp2_02.dbf' size 2M tablespace group group2;

 

 2)查询临时表空间组:dba_tablespace_groups视图

select * from dba_tablespace_groups;

GROUP_NAME                     TABLESPACE_NAME

------------------------------ ------------------------------

GROUP1                         TEMPTS1

GROUP2                         TEMPTS2



 3)将表空间从一个临时表空间组移动到另外一个临时表空间组:

alter tablespace tempts1 tablespace group GROUP2 ;

select * from dba_tablespace_groups;



GROUP_NAME                     TABLESPACE_NAME

------------------------------ ------------------------------

GROUP2                         TEMPTS1

GROUP2                         TEMPTS2



 4)把临时表空间组指定给用户

alter user scott temporary tablespace GROUP2;



 5)在数据库级设置临时表空间

alter database <db_name> default temporary tablespace GROUP2; 



 6)删除临时表空间组 (删除组成临时表空间组的所有临时表空间)

drop tablespace tempts1 including contents and datafiles;

select * from dba_tablespace_groups;

GROUP_NAME                     TABLESPACE_NAME

------------------------------ ------------------------------

GROUP2                         TEMPTS2



drop tablespace tempts2 including contents and datafiles;

select * from dba_tablespace_groups;

GROUP_NAME                     TABLESPACE_NAME



11、对临时表空间进行shrink(11g新增的功能)

--将temp表空间收缩为20M

alter tablespace temp shrink space keep 20M; 

--自动将表空间的临时文件缩小到最小可能的大小

ALTER TABLESPACE temp SHRINK TEMPFILE ’/u02/oracle/data/lmtemp02.dbf’; 



临时表空间作用

Oracle临时表空间主要用来做查询和存放一些缓冲区数据。临时表空间消耗的主要原因是需要对查询的中间结果进行排序。

重启数据库可以释放临时表空间,如果不能重启实例,而一直保持问题sql语句的执行,temp表空间会一直增长。直到耗尽硬盘空间。

网上有人猜测在磁盘空间的分配上,oracle使用的是贪心算法,如果上次磁盘空间消耗达到1GB,那么临时表空间就是1GB。

也就是说当前临时表空间文件的大小是历史上使用临时表空间最大的大小。



临时表空间的主要作用:

  索引create或rebuild;

  Order by 或 group by;

  Distinct 操作;

  Union 或 intersect 或 minus;

  Sort-merge joins;

  analyze。

oracle临时表空间 ORA-01652:无法通过16(在表空间XXX中)扩展 temp 字段的更多相关文章

  1. 无法通过128在表空间temp中扩展temp字段

    truncate 表后在执行,这个原因是数据太大了

  2. oracle暂时表空间 ORA-01652:无法通过16(在表空间XXX中)扩展 temp 字段

    今天在查数据的时候报错  ORA-01652:无法通过16(在表空间temp1中)扩展 temp 字段 查看表空间使用明细 SELECT b.tablespace,        b.segfile# ...

  3. oracle创建用户和角色、管理授权以及表空间操作

    show user 显示当前用户connect username/password@datebasename as sysdba 切换用户和数据库 和用户身份 Oracle登录身份有三种: norma ...

  4. Oracle备份恢复之无备份情况下恢复undo表空间

    UNDO表空间存储着DML操作数据块的前镜像数据,在数据回滚,一致性读,闪回操作,实例恢复的时候都可能用到UNDO表空间中的数据.如果在生产过程中丢失或破坏了UNDO表空间,可能导致某些事务无法回滚, ...

  5. oracle表空间查询维护命令大全之三(暂时表空间)史上最全

    --UNDO表空间汇总 --查看全部的表空间名字 SELECT NAME FROM V$TABLESPACE; --创建新的UNDO表空间,并设置自己主动扩展參数; CREATE UNDO TABLE ...

  6. ORA-01652: 无法通过 128 (在表空间 TEMP 中) 扩展 temp 段(EXP-00056: 遇到 ORACLE 错误 1652 ORA-01652: unable to extend temp segment by 128 in tablespace TEMP)

    数据库报 ORA-01652: 无法通过 128 (在表空间 TEMP 中) 扩展 temp 段 两种解决方式: 第一种) sql>select * from v$tempfile; 发现tem ...

  7. ORA-01652:无法通过128(在表空间temp中)扩展temp段 解决方法

    ORA-01652:无法通过128(在表空间temp中)扩展temp段 解决方法 (2016-10-21 16:49:53)   今天在做一个查询的时候,报了一个"ORA-01652无法通过 ...

  8. ora-01652无法通过128(在表空间temp中)扩展temp段

    今天提交请求后,提示ORA-01652: 无法通过 128 (在表空间 TEMP 中) 扩展 temp 段.最后通过ALTER DATABASE TEMPFILE '/*/*/db/apps_st/d ...

  9. ORA-01652:无法通过128(在表空间TEMP中)扩展temp段

    在Oracle数据库中进行order by or group by.索引的创建和重创建.distinct操作.union & intersect & minus sort-merge ...

随机推荐

  1. python获取指定时间差的时间

    在分析数据的时间经常需要截取一定范围时间的数据,比如三天之内,两小时前等等时间要求的数据,因此将该部分经常需要用到的功能模块化,方便以后以后用到的时候复用.在此,也分享给大家. <span st ...

  2. [OpenCV]在显示窗口中截图

    [OpenCV]在显示窗口中截图 简介 介绍使用OpenCV实现简单的截图功能.首先阐述实现此功能的基本步骤,然后给出实现代码,最后贴出实验结果以及遇到的问题. 基本步骤 我们需要知道OpenCV使用 ...

  3. Python 妙用heapq

    小顶堆求TopK大 大顶堆求BtmK小 题外话 Python有一个内置的模块,heapq标准的封装了最小堆的算法实现.下面看两个不错的应用. 小顶堆(求TopK大) 话说需求是这样的: 定长的序列,求 ...

  4. Dynamics CRM 开启图表的3D效果展示

    CRM中的图表在我们的业务场景中用的很多,用户可以根据自己的实际需求来构建图表查看数据.我们平时看到的图表都是平面的,像下图中的这种,那有没有一种方式可以让展示3D效果看起来更立体呢,答案是可以的. ...

  5. The type org.apache.http.HttpResponse cannot be resolved. It is indirectly referenced from required

    在Android 6.0(API 23)中,Google已经移除了移除了Apache HttpClient相关的类.HttpResponse类.缺失jar包使用HttpResponse等会报错: Th ...

  6. Android简易实战教程--第十三话《短信备份和还原~三》

    之前写过短信备份的小案例,哪里仅仅是虚拟了几条短信信息.本篇封装一个业务类,且直接通过内容提供者,访问本系统的短信信息,再提供对外接口.如果想要短信备份和短信还原,直接复制这段代码即可.对于您调用这个 ...

  7. C++中struct类型增强

    struct类型的加强: C语言的struct定义了一组变量的集合,C编译器并不认为这是一种新的类型. C++中的struct是一个新类型的定义声明. demo struct Student { ch ...

  8. 【Android应用开发】 推送原理解析 极光推送使用详解 (零基础精通推送)

    作者 : octopus_truth 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/45046283 推送技术产生场景 : -- ...

  9. debian 安装jdk

    JDK下载http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javase6- ...

  10. 【Vbox】centos虚拟机安装usb网卡驱动

    前面安装增强pack之后 usb设备是可以识别了,但是无法正常使用,应该是无线网卡驱动没有的原因. 查看usb设备 os:centos6.6 内核:2.6.32-504.el6.x86_64 [roo ...