ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 臨時表空間已滿的解決方法

臨時表空間已滿的解決方法

原创 Linux操作系统 作者:hky87 时间:2009-10-19 17:29:59 0 删除 编辑

臨時表空間主要用來存放由排序、匯總、索引產生的臨時數據。

臨時表空間已滿的解決方法:

以下方法均經過我實際操作,可行方法。

一、利用中轉臨時表空間:新建一個臨時表空間,修改默認臨時表空間

1.      create temporary tablespace temp2 tempfile ‘D:\ORACLE\ORADATA\ORCL\TEMP02.dbf’ size 20M reuse autoextend on next 640k maxsize unlimited; --創建中轉表空間

2.      alter database default temporary tablespace temp2;--修改默認表空間

3.      drop tablespace temp including contents and datafiles;--刪除原來的臨時表空間

4.      create temporary tablespace temp tempfile ‘D:\ORACLE\ORADATA\ORCL\TEMP.dbf’ size 20M reuse autoextend on next 640k maxsize unlimited;--重新創建臨時表空間

5.      alter database default temporary tablespace temp;--重置默認臨時表空間為temp表空間

6.      drop tablespace temp2 including contents and datafile;--刪除中轉用的臨時表空間

7.      alter user scott temporary tablespace temp;--重新指定用戶臨時表空間為重建的臨時表空間

二、重啟數據庫(上次遇到這個問題時,重啟庫之後數據庫突然變得很慢,不知道是否跟我做了alter system flush shared_pool操作有關,過段時間后,速度正常了)

三、Kill掉正在使用臨時段的進程

1.      查看誰在使用臨時段

SELECT se.username, SID, serial#, sql_address, machine, program, TABLESPACE,

       segtype, CONTENTS

  FROM v$session se, v$sort_usage su

 WHERE se.saddr = su.session_addr

2.      Kill掉這些進程

alter system kill session ‘sid,serial#’

3.      temp表空間進行碎片整理

alter tablespace temp coalesce;(不能對臨時表空間進行碎片整理?)

四、使用診斷時間

1、確定temp表空間的ts#

select ts#, name from ts$;

0,SYSTEM

1,UNDOTBS1

2,SYSAUX

3,TEMP

4,USERS

5,UNDOTBS2

6,EXAMPLE

7,HR_DATA

8,TEMP2

9,TEMP1

2、執行清理操作

3、alter session set events ‘immediate trace name DROP_SEGMENTS level 4’;

其中,level值為ts#+1;

查看表空間使用情況:

SELECT a.tablespace_name "表空間名(M)", total / 1024 / 1024  "表空間大小(M)",

       free / 1024 / 1024  "表空間剩余大小(M)",

       (total - free) / 1024 / 1024  "表空間使用大小(M)",

       ROUND ((total - free) / total, 4) * 100 "使用率 %"

  FROM (SELECT   tablespace_name, SUM (BYTES) free

            FROM dba_free_space

        GROUP BY tablespace_name) a,

       (SELECT   tablespace_name, SUM (BYTES) total

            FROM dba_data_files

        GROUP BY tablespace_name) b

 WHERE a.tablespace_name = b.tablespace_name

order by 5 desc;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10314474/viewspace-616902/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-10-09

  • 博文量
    87
  • 访问量
    238053