临时表空间过大的解决方法

简介:
Temporary tablespace是oracle里临时表空间,临时表空间主要用途是在数据库进行排序运算、管理索引、访问视图等操作时提供临时的运算空间,当运算完成之后系统会自动清理。当oracle里需要用到sort的时候,PGA中sort_area_size大小不够时,将会把数据放入临时表空间里进行排序,同时如果有异常情况的话,也会被放入临时表空间,正常来说,在完成Select语句、create index等一些使用TEMP表空间的排序操作后,Oracle是会自动释放掉临时段的。
但有些有侯我们则会遇到临时段没有被释放,TEMP表空间几乎满的状况,甚至是我们重启了数据库仍没有解决问题。下面介绍一下此种情况的处理方法。
yang@rac1>conn system/yang as sysdba
已连接。
sys@rac1>@showtbs.sql

TABLESPACE_NAME  STATUS    CONTENTS  EXTENT_MAN   total(M)    free(M)    used(M) utilization%
---------------- --------- --------- ---------- ---------- ---------- ---------- ------------
SYSAUX           ONLINE    PERMANENT LOCAL             683         35        648  94.83
UNDOTBS1         ONLINE    UNDO      LOCAL              80         50         30  37.89
USERS            ONLINE    PERMANENT LOCAL            1231       1228          4  .29
SYSTEM           ONLINE    PERMANENT LOCAL            1170        416        754  64.41
EXAMPLE          ONLINE    PERMANENT LOCAL             300        222         78  25.9
TEMP             ONLINE    TEMPORARY LOCAL              97          1         96  98.97

已选择6行。

TABLESPACE_NAME      BLOCK_SIZE CONTENTS  EXTENT_MAN ALLOCATIO SEGMEN STATUS    LOGGING   FOR PLU
-------------------- ---------- --------- ---------- --------- ------ --------- --------- --- ---
SYSTEM                     8192 PERMANENT LOCAL      SYSTEM    MANUAL ONLINE    LOGGING   NO  NO
SYSAUX                     8192 PERMANENT LOCAL      SYSTEM    AUTO   ONLINE    LOGGING   NO  NO
UNDOTBS1                   8192 UNDO      LOCAL      SYSTEM    MANUAL ONLINE    LOGGING   NO  NO
TEMP                       8192 TEMPORARY LOCAL      UNIFORM   MANUAL ONLINE    NOLOGGING NO  NO
USERS                      8192 PERMANENT LOCAL      SYSTEM    AUTO   ONLINE    LOGGING   NO  NO
EXAMPLE                    8192 PERMANENT LOCAL      SYSTEM    AUTO   ONLINE    NOLOGGING NO  YES

已选择6行。

TABLESPACE_NAME      INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS PCT_INCREASE
-------------------- -------------- ----------- ----------- ----------- ------------
SYSTEM                        65536                       1  2147483645
SYSAUX                        65536                       1  2147483645
UNDOTBS1                      65536                       1  2147483645
TEMP                        1048576     1048576           1                        0
USERS                         65536                       1  2147483645
EXAMPLE                       65536                       1  2147483645

已选择6行。
解决办法:
1 创建一个可共替换的临时表空间temp02
sys@rac1>create temporary tablespace temp02 tempfile 'd:\oracle\oradata\oracl\temp02.dbf' size 512m
autoextend on next 1m maxsize unlimited;
表空间已创建。
2 更改数据库的默认临时表空间
sys@rac1>alter database default temporary tablespace temp02;
数据库已更改。
3 删除使用过大的临时表空间
sys@rac1>drop tablespace temp including contents and datafiles;
表空间已删除。
4 创建新的临时表空间
sys@rac1>create temporary tablespace temp tempfile 'd:\oracle\oradata\oracl\temp01.dbf' size 512m au
toextend on next 1m maxsize unlimited;
表空间已创建。
5 重置数据库的临时表空间
sys@rac1>alter database default temporary tablespace temp;
数据库已更改。
6 删除临时替代的临时表空间。
sys@rac1>drop tablespace temp02 including contents and datafiles;
表空间已删除。
sys@rac1>@showtbs.sql
TABLESPACE_NAME      STATUS    CONTENTS  EXTENT_MAN   total(M)    free(M)    used(M) utilization%
-------------------- --------- --------- ---------- ---------- ---------- ---------- ------------
SYSAUX               ONLINE    PERMANENT LOCAL             683         35        648        94.83
UNDOTBS1             ONLINE    UNDO      LOCAL              80         50         30        37.89
USERS                ONLINE    PERMANENT LOCAL            1231       1228          4          .29
SYSTEM               ONLINE    PERMANENT LOCAL            1170        416        754        64.41
EXAMPLE              ONLINE    PERMANENT LOCAL             300        222         78         25.9
TEMP                 ONLINE    TEMPORARY LOCAL             512

已选择6行。
TABLESPACE_NAME      BLOCK_SIZE CONTENTS  EXTENT_MAN ALLOCATIO SEGMEN STATUS    LOGGING   FOR PLU
-------------------- ---------- --------- ---------- --------- ------ --------- --------- --- ---
SYSTEM                     8192 PERMANENT LOCAL      SYSTEM    MANUAL ONLINE    LOGGING   NO  NO
SYSAUX                     8192 PERMANENT LOCAL      SYSTEM    AUTO   ONLINE    LOGGING   NO  NO
UNDOTBS1                   8192 UNDO      LOCAL      SYSTEM    MANUAL ONLINE    LOGGING   NO  NO
TEMP                       8192 TEMPORARY LOCAL      UNIFORM   MANUAL ONLINE    NOLOGGING NO  NO
USERS                      8192 PERMANENT LOCAL      SYSTEM    AUTO   ONLINE    LOGGING   NO  NO
EXAMPLE                    8192 PERMANENT LOCAL      SYSTEM    AUTO   ONLINE    NOLOGGING NO  YES
已选择6行。
TABLESPACE_NAME      INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS PCT_INCREASE
-------------------- -------------- ----------- ----------- ----------- ------------
SYSTEM                        65536                       1  2147483645
SYSAUX                        65536                       1  2147483645
UNDOTBS1                      65536                       1  2147483645
TEMP                        1048576     1048576           1                        0
USERS                         65536                       1  2147483645
EXAMPLE                       65536                       1  2147483645

已选择6行。
sys@rac1> 
相关文章
|
6月前
|
存储 SQL 关系型数据库
面试官:mysql 表删除一半数据,表空间会变小吗?
这期面试官提的问题是: MySQL 表删除一半数据,表空间是否会变小?为什么?
|
10月前
|
消息中间件 关系型数据库 Shell
记录贴:sentry磁盘占用过大如何清理?
记录贴:sentry磁盘占用过大如何清理?
851 0
|
iOS开发
Mac系统存储空间占用空间过大解决办法
Mac系统存储空间占用空间过大解决办法
761 0
Mac系统存储空间占用空间过大解决办法
|
SQL Go 数据库
MSSQL收缩事务日志&日志文件过大无法收缩
原文:MSSQL收缩事务日志&日志文件过大无法收缩   一.MS SQL SERVER 2005 --1.清空日志 exec('DUMP TRANSACTION 数据库名 WITH NO_LOG') --2.
2298 0