今天在查数据的时候报错  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. JavaScript DOM详解

    欢迎转载,转载请标明出处: http://blog.csdn.net/johnny901114/article/details/52727448 本文出自:[余志强的博客] 一.DOM概述 D: Do ...

  2. Swift按照数组元素出现的次数及大小排序

    要求如下: 1.已知一个数组,按照单个元素在数组中出现的次数作为重新排序的依据,个数多的排在前面 2.相同个数时候,元素值大的排前面 例子: [1, 2, 2, 3, 5, 5] 经过计算得到的结果是 ...

  3. Ajax 异步加载

    AJAX (Asynchronous JavaScript and XML,异步的 JavaScript 和 XML).它不是新的编程语言,而是一种使用现有标准的新方法,是在不重新加载整个页面的情况下 ...

  4. 搭建ejabberd集群

    搭建ejabberd集群(金庆的专栏 2016.8)以2台机器搭建一个ejabberd集群.2台机器都是外网一块网卡,内网另一块网卡.新建一个域名,添加2台机器的外网IP.分别用源码安装ejabber ...

  5. 使用OpenCV读、操作、写图像并与bash合作对某个目录下所有图像进行类似处理

    我门要对某个目录下所有图像文件进行统一处理,如果图像的数量过多,那么手动地一张张处理就会显得有些麻烦.本文使用OpenCV和bash来完成我们指定的任务. 任务 将目录A下的所有统一格式的jpg图像变 ...

  6. activiti源码编译

    个小时,大家安装的时候一定要耐心. 最终编译之后的效果部分如下图所示: 因为我这里有些xml文件没有去除验证,所以有红色的警告,不过也不影响使用. 下面看一下下载之后文件的变化如下图所示: 我们导入主 ...

  7. 好用的有多种样式的搜索界面创建UISearchBar

    之前看到一个别人封装的第三方PYSearch,相当于一个完整的搜索界面,今天在这里进行代码说明一下. 将PYSearch拖进项目或者使用Pods进行加库,我是直接拖进项目中进行使用 PYSearch库 ...

  8. time,gettimeofday,clock_gettime

    time()提供了秒级的精确度 1.头文件 <time.h> 2.函数原型 time_t time(time_t * timer) 函数返回从UTC1970-1-1 0:0:0开始到现在的 ...

  9. [ExtJS5学习笔记]第十七节 Extjs5的panel组件增加accodion成为折叠导航栏

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/39102335 官方例子:http://dev.sencha.com/ext/5.0.1 ...

  10. CentOs查看文件的几种方式

    有许多命令都可以查看文件,不同的命令有不同的优点,可以针对不同的需要分别选择命令以提高效率:   cat     由第一行开始显示内容,并将所有内容输出   tac     从最后一行倒序显示内容,并 ...