如何清理oracle 10g服务器中的临时表空间,请提供linux平台的步骤

如何清理oracle 10g服务器中的临时表空间,请提供linux平台的步骤,oracle,oracle10g,Oracle,Oracle10g,我想清理包含数据文件的Temp表空间 temp01.dbf和temp02.dbf,所以请建议我应该放弃 temp01.dbf文件或删除临时表空间。下面给出了Temp表空间的数据文件 33G temp01.dbf 1.5G temp02.dbf 创建临时表空间Temp CREATE TEMPORARY TABLESPACE TEMP2 TEMPFILE ‘/u01/app/oradata/temp01.dbf′ SIZE 2000M ; CREATE TEMPOR

我想清理包含数据文件的
Temp
表空间
temp01.dbf
temp02.dbf
,所以请建议我应该放弃
temp01.dbf
文件或删除临时表空间。下面给出了
Temp
表空间的数据文件

33G     temp01.dbf
1.5G    temp02.dbf
  • 创建临时表空间Temp

       CREATE TEMPORARY TABLESPACE TEMP2 TEMPFILE  ‘/u01/app/oradata/temp01.dbf′ SIZE 2000M ; 
    
       CREATE TEMPORARY TABLESPACE TEMP TEMPFILE '/u01/app/temp/temp01.dbf′ SIZE 2000M;
    
  • 移动默认数据库临时表空间

       ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp2;
    
       a.  Find Session Number from V$SORT_USAGE: 
      SELECT USERNAME, SESSION_NUM, SESSION_ADDR FROM V$SORT_USAGE; 
    
       b.  Find Session ID from V$SESSION:
    
      If the resultset contains any rows then your next step will be to find the SID from the V$SESSION view. You can find session id by using SESSION_NUM or SESSION_ADDR from previous resultset.
    
      SELECT SID, SERIAL#, STATUS FROM V$SESSION WHERE SERIAL#=SESSION_NUM;
      OR
      SELECT SID, SERIAL#, STATUS FROM V$SESSION WHERE SADDR=SESSION_ADDR; 
    
       c.  Kill Session:
    
       Now kill the session with IMMEDIATE.
    
        ALTER SYSTEM KILL 'SID,SERIAL#' IMMEDIATE; 
    
       DROP TABLESPACE temp INCLUDING CONTENTS AND DATAFILES;
    
           ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp;
    
  • 确保没有会话正在使用旧的临时表空间

       ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp2;
    
       a.  Find Session Number from V$SORT_USAGE: 
      SELECT USERNAME, SESSION_NUM, SESSION_ADDR FROM V$SORT_USAGE; 
    
       b.  Find Session ID from V$SESSION:
    
      If the resultset contains any rows then your next step will be to find the SID from the V$SESSION view. You can find session id by using SESSION_NUM or SESSION_ADDR from previous resultset.
    
      SELECT SID, SERIAL#, STATUS FROM V$SESSION WHERE SERIAL#=SESSION_NUM;
      OR
      SELECT SID, SERIAL#, STATUS FROM V$SESSION WHERE SADDR=SESSION_ADDR; 
    
       c.  Kill Session:
    
       Now kill the session with IMMEDIATE.
    
        ALTER SYSTEM KILL 'SID,SERIAL#' IMMEDIATE; 
    
       DROP TABLESPACE temp INCLUDING CONTENTS AND DATAFILES;
    
           ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp;
    
  • Drop temp表空间

       ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp2;
    
       a.  Find Session Number from V$SORT_USAGE: 
      SELECT USERNAME, SESSION_NUM, SESSION_ADDR FROM V$SORT_USAGE; 
    
       b.  Find Session ID from V$SESSION:
    
      If the resultset contains any rows then your next step will be to find the SID from the V$SESSION view. You can find session id by using SESSION_NUM or SESSION_ADDR from previous resultset.
    
      SELECT SID, SERIAL#, STATUS FROM V$SESSION WHERE SERIAL#=SESSION_NUM;
      OR
      SELECT SID, SERIAL#, STATUS FROM V$SESSION WHERE SADDR=SESSION_ADDR; 
    
       c.  Kill Session:
    
       Now kill the session with IMMEDIATE.
    
        ALTER SYSTEM KILL 'SID,SERIAL#' IMMEDIATE; 
    
       DROP TABLESPACE temp INCLUDING CONTENTS AND DATAFILES;
    
           ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp;
    
  • 重新创建表空间温度

       CREATE TEMPORARY TABLESPACE TEMP2 TEMPFILE  ‘/u01/app/oradata/temp01.dbf′ SIZE 2000M ; 
    
       CREATE TEMPORARY TABLESPACE TEMP TEMPFILE '/u01/app/temp/temp01.dbf′ SIZE 2000M;
    
  • 6移动表空间Temp,返回到新的Temp表空间

       ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp2;
    
       a.  Find Session Number from V$SORT_USAGE: 
      SELECT USERNAME, SESSION_NUM, SESSION_ADDR FROM V$SORT_USAGE; 
    
       b.  Find Session ID from V$SESSION:
    
      If the resultset contains any rows then your next step will be to find the SID from the V$SESSION view. You can find session id by using SESSION_NUM or SESSION_ADDR from previous resultset.
    
      SELECT SID, SERIAL#, STATUS FROM V$SESSION WHERE SERIAL#=SESSION_NUM;
      OR
      SELECT SID, SERIAL#, STATUS FROM V$SESSION WHERE SADDR=SESSION_ADDR; 
    
       c.  Kill Session:
    
       Now kill the session with IMMEDIATE.
    
        ALTER SYSTEM KILL 'SID,SERIAL#' IMMEDIATE; 
    
       DROP TABLESPACE temp INCLUDING CONTENTS AND DATAFILES;
    
           ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp;
    
  • 为表空间临时删除

      DROP TABLESPACE temp2 INCLUDING CONTENTS AND DATAFILES;
    

  • 谢谢@anudepks!只是想指出一点,在第5步中,句子应该如下:

     CREATE TEMPORARY TABLESPACE TEMP TEMPFILE '/u01/app/temp/temp.dbf′ SIZE 2000M;
    

    (请注意,文件名已从temp01.dbf更改为temp.dbf)。否则会出现错误,因为该文件已经存在,并且该文件将在步骤7中删除。

    定义“清理”?是否要收缩数据文件?若然,原因为何?是否有理由相信他们不会只是恢复到目前的规模?增长和收缩数据文件不是特别有效。@Justin Cave非常感谢您的响应,不,我不想收缩数据文件,我想删除。可能吗?我是新的,但我想免费33G大小。因为我需要空间,所以请建议如何清除temp,而不影响服务器lavel上的DB中的任何内容,任何人都可以逐步向我提供命令。这没有多大意义。没有
    TEMP
    表空间的数据库基本上是不可用的。这是安装在你笔记本电脑上的玩具数据库吗?还是一个真正的生产数据库?@Justin Cave非常感谢。这是真实的生产数据库。现在oracle服务器上还剩下3 GB的空间,这就是为什么我想以任何方式发布33G大小,请建议。好的。那么你想缩小数据文件吗?是否有理由相信他们不会只是恢复到目前的规模?增长和缩小数据文件并不是特别有效。非常感谢much@anudeepks,在上面的脚本的帮助下,它在服务器上的大小为33G。再次感谢您。@AnandYadav,如果答案对您有帮助,请将其标记为正确(单击我答案旁边的勾号)