精华内容
下载资源
问答
  • oracle删除临时表空间一直处于等待状态
    2019-03-27 16:39:00

    现象:

    新建一个临时表空间mytemp 然后将其改为默认临时表空间后,执行一条带order by的查询语句,查询出结构后,

    修改默认临时表空间为原来的temp,然后执行 drop tablespace mytemp including contents and datafiles

    将mytemp临时表空间删除时,发现这条语句一直处于等待状态,然后将刚刚执行查询语句的会话结束,

    则该语句立即生效,说明虽然默认临时表空间已经修改,但刚刚那条查询语句还在实用mytemp临时表空间,

    故不能删除,只有使用结束后才能删除.

    建议:

    【1】 将刚刚执行查询语句的会话结束;不行的话再执行第二步;

    【2】 先把默认表空间切换到别的临时表空间上,再drop temp;
              建议drop前重启前数据库,在mount模式下drop,我怀疑,是因为有些事务正在使用temp,所以才无法drop;

     

     

    转载于:https://www.cnblogs.com/tzhyy/p/10608593.html

    更多相关内容
  • Oracle临时表空间主要用来做查询和存放一些缓冲区数据。临时表空间消耗的主要原因是需要对查询的中间结果进行排序。临时表空间的主要作用:索引create或rebuildOrder by 或 group byDistinct 操作Union 或 intersect...

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

    索引create或rebuild

    Order by 或 group by

    Distinct 操作

    Union 或 intersect 或 minus

    Sort-merge joins

    analyze

    重启数据库可以释放临时表空间,如果不能重启实例,而一直保持问题sql语句的执行,temp表空间会一直增长。即使重建了临时表空间,过一段时间后,临时表空间的使用率就达到99%,然后,表空间就开始增长,直到耗尽硬盘空间。如下图所示临时表空间,刚建立时是8G,现在已到32G:

    033ba4e3616f058a2dfab9d1768a0e2b.png

    为了防止临时表空间无限制的增加,我采用隔一段时间就重建临时表空间的方法,为了方便,我保留两组语句,轮流执行即可,假定现在临时表空间名称是temp,新建一个tempa表空间,删除temp表空间,方法如下:

    create  temporary  tablespace  TEMPA  TEMPFILE  '/opt/app/oracle/oradata/orcl/tempa01.dbf '  SIZE  8192M  REUSE  AUTOEXTEND  ON  NEXT  1024K  MAXSIZE  UNLIMITED;  --创建中转临时表空间

    alter  database  default  temporary  tablespace  tempa;      --改变缺省临时表空间

    drop  tablespace  temp  including  contents  and  datafiles;    --删除原来临时表空间

    新建的临时表空间如下图所示:

    过一段时间,当临时表空间增长到一定的程度,再新建一个temp表空间,删除tempa表空间,即:

    b063eb72c1899acf7d3b220d7a3e50d4.png

    create  temporary  tablespace  TEMP  TEMPFILE  '/opt/app/oracle/oradata/orcl/temp01.dbf '  SIZE  8192M  REUSE  AUTOEXTEND  ON  NEXT  1024K  MAXSIZE  UNLIMITED;  --创建中转临时表空间

    alter  database  default  temporary  tablespace  temp;    --改变缺省临时表空间

    drop  tablespace  tempa  including  contents  and  datafiles;  --删除原来临时表空间

    这样就可以保证临时表空间不至于过大,防止过多的占用有限的硬盘空间。

    =====================================================

    用下面语句可查看当前临时表空间使用空间大小与正在占用临时表空间的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;

    下面语句查询临时表空间的空闲程度:

    select 'the ' || name || ' temp tablespaces ' || tablespace_name ||

    ' idle ' ||

    round(100 - (s.tot_used_blocks / s.total_blocks) * 100, 3) ||

    '% at ' || to_char(sysdate, 'yyyymmddhh24miss')

    from (select d.tablespace_name tablespace_name,

    nvl(sum(used_blocks), 0) tot_used_blocks,

    sum(blocks) total_blocks

    from v$sort_segment v, dba_temp_files d

    where d.tablespace_name = v.tablespace_name(+)

    group by d.tablespace_name) s,

    v$database;

    0b1331709591d260c1c78e86d0c51c18.png

    展开全文
  • 1、查看临时表空间 (dba_temp_files视图)(v_$tempfile视图)select tablespace_name,file_name,bytes/1024/1024 file_size,au1、查看临时表空间 (dba_temp_files视图)(v_$tempfile视图)select tablespace_name,file_...

    5268f80b9b1e01f982625ef6fac83ca1.png

    1、查看临时表空间 (dba_temp_files视图)(v_$tempfile视图)select tablespace_name,file_name,bytes/1024/1024 file_size,au

    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 default temporary tablespace GROUP2;

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

    drop tablespace tempts1 including contents and datafiles;

    select * from dba_tablespace_groups;

    GROUP_NAME TABLESPACE_NAME

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

    GROUP2 TEMPTS2

    1428d0e076c3959ab11d28a39bc84fab.png

    5268f80b9b1e01f982625ef6fac83ca1.png

    本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

    本文系统来源:php中文网

    展开全文
  • 【处理】清空临时表空间Oracle1.启动数据库 startup2.查看当前的数据库默认表空间:SQL>select * from database_properties whereproperty_name='DEFAULT_TEMP_TABLESPACE';确认当前的临时表空间为TEMP3...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

    【问题】数据库临时表空间占用空间太大,暂用大量磁盘空间。

    【处理】清空临时表空间

    Oracle1.启动数据库 startup

    2.查看当前的数据库默认表空间:

    SQL>select * from database_properties whereproperty_name='DEFAULT_TEMP_TABLESPACE';

    确认当前的临时表空间为TEMP

    3.查看目前临时表空间的大小:

    SQL>select file_name,tablespace_name,bytes/1024/1024"MB",autoextensible from dba_temp_files;

    4.创建另一个临时表空间

    SQL>create temporary tablespace TEMP2 TEMPFILE'D:\app\Administrator\oradata\orcl\temp02.dbf' SIZE 10M REUSE AUTOEXTEND ON NEXT 1MMAXSIZE UNLIMITED;

    5.改变缺省临时表空间为刚刚创建的新临时表空间temp2

    SQL>alter database default temporary tablespace temp2;

    6.删除原来临时表空间

    SQL>drop tablespace temp including contents and datafiles;

    7.重新创建临时表空间temp

    SQL>create temporary tablespace TEMP TEMPFILE'D:\app\Administrator\oradata\orcl\temp01.dbf' SIZE 512M REUSE AUTOEXTEND ON NEXT 1MMAXSIZE UNLIMITED;

    8.重置缺省临时表空间为新建的temp表空间

    SQL>alter database default temporary tablespace temp;

    9.删除中转用临时表空间

    SQL>drop tablespace temp2 including contents and datafiles;

    10.重新指定用户表空间为重建的临时表空间

    SQL>alter user scott temporary tablespace temp;

    展开全文
  • set line 199 col file_name format a50 select tablespace_name,file_name,bytes/1024/1024 file_size,autoextensible from dba_temp_files; alter tablespace temp add tempfile size 100m;...
  • Oracle查询临时表空间的占用

    千次阅读 2021-05-07 09:51:26
    可以使用以下语句查询是哪个session number的哪个sql占用了较大的临时表空间select inst_id,username,session_num,sql_id,tablespace,segtype,sum(blocks)*8/1024/1024 size_in_gb from gV$TEMPSEG_USAGE group by ...
  • oracle操作临时表空间

    千次阅读 2021-05-02 04:43:13
    1、查看临时表空间 (dba_temp_files视图)(v_$tempfile视图)selectt ablespace_name,file_name,bytes/1024/1024 file_size,autoextensible from dba_temp_files;selectstatus,enabled, name, bytes/1024/1024 file_...
  • --查表空间使用率情况(含临时表空间) SELECT d.tablespace_name "Name", d.status "Status", TO_CHAR (NVL (a.BYTES / 1024 / 1024, 0), '99,999,990.90') "Size (M)", TO_CHAR (NVL (a.BYTES - NVL (f.BYTES, 0)....
  • 第一步骤:将临时文件offline alter database tempfile xx offline; alter database tempfile xx offline; alter database tempfile xx offline;... 也可以等待一段时间之后,对临时表空间临时文件进行删除即可 。
  • 进行oracle程序性能优化时,还要注意undo空间和临时表空间的使用率,如果过高的话,也会导致程序运行缓慢。一般使用率至少需要小于80%。程序运行中报错:ORA-01652:无法通过128(在表空间TEMP中)扩展temp段。数据库...
  • Oracle-临时表空间

    千次阅读 2021-05-03 09:45:44
    一:临时表空间查询--查看数据库表空间数据文件select * from dba_data_files;--查看数据库临时表空间文件select * from dba_temp_files;--查看数据库临时表空间使用情况select * from dba_temp_free_space;--查看...
  • Oracle如何删除表空间

    千次阅读 2021-06-14 11:08:34
    很多小伙伴在刚刚学习Oracle的时候,想要删除不要的表空间。但很多情况下,没有进行正确的操作,这个就会导致Oracle无法使用,那如何正确的删除表空间呢?具体的操作如下:
  • 管理员用户登录oracle数据库[oracle@DBORACLE ~]$ sqlplus / as sysdbaSQL*Plus: Release 11.2.0.4.0 Production on Tue Jan 1 14:59:27 2019Copyright (c) 1982, 2013, Oracle. All rights reserved.Connected to:...
  • 在处理一则ORA-600 [4194]案例时,参考MOS文档:Step by step to resolve ORA-600 4194 4193 4197 on database crash (文档 ...Linux环境下oracle创建和删除表空间及用户#su - oracle $ sqlplus /no...
  • ORACLE数据库临时表空间不足通用解决方案原因分析:1.ORACLE临时表空间是由oracle数据库定时对表空间进行释放,但也会出现表空间释放不及时的现象。这属于oracle问题,无参数进行配置来解决,只能通过重定向临时表...
  • oracle 默认临时表空间

    2021-05-06 06:55:06
    我们可以通过下面的语句来查询数据库的默认临时表空间:SQL> select * from database_properties where property_name = 'DEFAULT_TEMP_TABLESPACE';默认临时表空间的限制:1. 默认临时表空间必须是TEMPORARY的:...
  • 1, Oracle 数据库,临时表空间 FASTTEMP 满,需要清理。 2, 解决方法思考 1, 创建新的临时表空间 FASTTEMP2 及文件 2, 用 FASTTEMP2 替换 FASTTEMP 3, 删除 FASTTEMP 临时表空间及其文件 4, 创建新的临时表空间 ...
  • Oracle临时表空间过大解决方法

    千次阅读 2021-05-02 10:14:24
    详情:解决Oracle临时表空间过大有两种方法,方法一增加临时表空间的大小,方法二重建临时表空间,解决临时表空间过大的问题。方案一:增加临时表空间的大小--1.临时表空间的使用情况SELECT D.tablespace_name,SPACE...
  • /*第1步:创建临时表空间 */ /*第2步:创建数据表空间 */ /*第3步:创建用户并指定表空间 注意新建的oracle用户必须以C##开头*/ /*第4步:给用户授予权限 */
  • Oracle 临时表空间 SQL语句

    千次阅读 2021-09-11 12:51:18
    --删除临时表空间数据文件 alter tablespace tempdata drop tempfile '/oradata/orcl/tempdata02.dbf' including datafiles; --调整临时表空间数据文件大小 alter database tempfile '/oradata/orcl/tempdata01.dbf...
  • Oracle 临时表空间满的清理

    千次阅读 2021-05-01 05:58:05
    正常来说,在完成所送select语句、createindex等一些使用TEMP表空间的排序操作后,Oracle是会自动释放掉临时段的。但有些有侯我们则会遇到临时段没有被释放,TEMP表空间几乎满的状况,甚至是我们重启了数据库仍没有...
  • oracle删除表空间及数据文件方法

    千次阅读 2020-06-01 22:23:58
    -删除空的表空间,但是不包含物理文件 drop tablespace tablespace_name; --删除非空表空间,但是不包含物理文件 drop tablespace tablespace_name including contents; --删除表空间,包含物理文件 drop ...
  • oracle数据库清理临时表空间

    千次阅读 2021-05-04 04:15:21
    方法一、重启库 库重启时,Smon进程会完成临时段释放,TEMP表空间的清理操作,不过很多的时侯我们的库是不允许down的,所以这种方法缺少了一点的应用机会,不过这种方法还是很好用的。 法二、Metalink给出的一个方法 ...
  • CREATE GLOBAL TEMPORARY TABLE TABLENAME (COL1 VARCHAR2(10),COL2 NUMBER) ON ...--ON COMMIT DELETE ROWS 说明临时表是事务指定,每次提交后Oracle将截断表(删除全部行)------------------------------------...
  • oracle表空间的导出,用户的删除表空间删除,用户新建,表空间新建,数据导入的shell使用非oracle用户执行该脚本参数说名$1:base表空间的用户名$2:同步表空间的用户名使用场景测试用,base表空间用于升级建立...
  • 删除Oracle临时表

    2021-05-02 10:35:09
    1. 停止所有实例管理控制台——群集控制器 界面,可以停止所有实例,... 执行下面查询语句,先查出哪些表,看看这些表能不能删,如果查询出来的都是临时表,再执行上面的删除语句(所谓的临时表,就是表名以VT开头...
  • Oracle 删除用户和表空间

    千次阅读 2021-05-08 04:17:11
    版权声明:本文为博主原创文章,未经博主允许不得转载。...步骤一: 删除userdrop user ×× cascade说明: 删除了user,只是删除了该user下的schema objects,是不会删除相应的tablespace的。步骤二...
  • 删除Oracle数据文件/临时文件

    千次阅读 2020-06-25 16:58:43
    有些时候,想删除一个数据文件(临时文件),在10g之前的版本,要删除一个数据文件,必须删除该数据文件所属的表空间(特殊处理方法除外)。不太懂数据库的朋友直接os级别删除数据文件,导致数据库不能正常启动;稍微等点...
  • 解决oracle临时表空间的报错

    千次阅读 2021-05-02 00:49:42
    报错信息:[HY000](1652) [Oracle][ODBC][Ora]ORA-01652:无法通过128 (在表空间TEMP中)扩展temp段原因分析:oracle临时表空间不足,事务执行一般将会报ora-01652无法扩展临时段的错误。因为oracle总是尽量分配连续...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 47,206
精华内容 18,882
关键字:

orcle删除临时表空间