刪除臨時表空間釋放空間


由於操作系統空間不足,客戶需要清理刪除臨時表空間,測試環境模擬場景進行操作。

一、前期環境准備

SQL>  create temporary tablespace temp_b tempfile '/11.2.0.4/app/oracle/oradata/tt11204/temp_b.dbf' size 10m;
Tablespace created.
SQL> alter user yang temporary tablespace temp_b;
SQL>conn yang/yang
執行如下SQL報錯,臨時表空間不足

SQL> select * from dba_objects,dba_segments order by 1,2,3,4,5,6

ORA-01652: unable to extend temp segment by 128 in tablespace TEMP_B

select file_name,file_id,tablespace_name,bytes/1024/1024/1024,blocks,status,AUTOEXTENSIBLE from dba_temp_files

 
         

FILE_NAME FILE_ID TABLESPACE_NAME BYTES/1024/1024/1024 BLOCKS STATUS AUTOEX
------------------------------------------------------------ ---------- -------------------- -------------------- ---------- -------------- ------
/11.2.0.4/app/oracle/oradata/tt11204/temp01.dbf 1 TEMP .028320313 3712 ONLINE YES
/11.2.0.4/app/oracle/oradata/tt11204/temp_b.dbf 3 TEMP_B .009765625 1280 ONLINE NO

對臨時表空間自擴展后

SQL> alter database tempfile '/11.2.0.4/app/oracle/oradata/tt11204/temp_b.dbf' AUTOEXTEND On;
再次執行
SQL> select * from dba_objects,dba_segments order by 1,2,3,4,5,6
修改用戶默認表空間,與實際情況進行模擬還原
SQL> alter user yang temporary tablespace temp;

 

 二、問題現象准備

以下為實際操作步驟

查詢臨時表空間組 NULL
SQL> select * from dba_tablespace_groups;
SQL> select property_value from database_properties where property_name='DEFAULT_TEMP_TABLESPACE';
TEMP 數據庫默認臨時表空間

SQL> select username,TEMPORARY_TABLESPACE from dba_users where ACCOUNT_STATUS='OPEN' order by 2;
USERNAME             TEMPORARY_TABLESPACE
-------------------- ------------------------------
SYSTEM               TEMP
SYS                  TEMP
TEST                 TEMP
TT                   TEMP
TESTA                TEMP
YANG                 TEMP
ZABBIX               TEMP
SCOTT                TEMP
8 rows selected.

SQL> select file_id,tablespace_name,bytes/1024/1024/1024 from dba_temp_files

FILE_ID TABLESPACE_NAME BYTES/1024/1024/1024
---------- -------------------- --------------------
1 TEMP .028320313
2 TEMP_B .009765625   通過上述查詢可以發現,數據庫不存在臨時表空間組,默認臨時表空間是TEMP,而另一個表空間temp_b並無人使用,因此進行刪除回收空間。

刪除臨時表空間一直hang住,也不報錯ALERT無任何有效信息

SQL> drop tablespace temp_b including contents and datafiles;

 

三、問題處理

新開session 查詢event
SQL>  select INST_ID,sid,serial#,USERNAME,STATUS,MACHINE,SQL_ID,EVENT,(sysdate-LOGON_TIME)*86400 as "s",LAST_CALL_ET from

gv$session where status='ACTIVE' and username is not null; INST_ID SID SERIAL# USERNAME STATUS MACHINE SQL_ID EVENT s LAST_CALL_ET ------- ------ ------- -------------------- ---------- -------------------- -------------------- ------------------------------ ------- ------------ 1 11 19289 SYS ACTIVE enmo 2ymxxw3mapxd9 SQL*Net message to client 5 0 1 72 621 SYS ACTIVE enmo 9mzfur1h8f49p enq: TS - contention 1203 77

可以發現等待事件
 enq: TS - contention 

SQL> select sid,username,event,sql_id,BLOCKING_SESSION from gv$session where sid=72;

SID USERNAME EVENT SQL_ID BLOCKING_SESSION
------ -------------------- ------------------------------ -------------------- ----------------
72 SYS enq: TS - contention 9mzfur1h8f49p 66

SQL> select INST_ID,sid,serial#,USERNAME,STATUS,MACHINE,SQL_ID,EVENT,(sysdate-LOGON_TIME)*86400 as "s",LAST_CALL_ET from gv$session where sid=66;

INST_ID SID SERIAL# USERNAME STATUS MACHINE SQL_ID EVENT s LAST_CALL_ET
------- ------ ------- -------------------- ---------- -------------------- -------------------- ------------------------------ ------- ------------
1 66 1 ACTIVE enmo smon timer 828829 828830

 
         
當臨時段存在被使用的情況時,臨時段將被保護,無法被刪除。

SQL>  select USERNAME,SESSION_ADDR,SQL_ID,TABLESPACE,CONTENTS,BLOCKS from v$sort_usage

USERNAME SESSION_ADDR SQL_ID TABLESPACE CONTENTS BLOCKS
-------------------- ---------------- -------------------------- --------
SYS 00000000F57220D0 c61dmq2mac2m9 TEMP TEMPORARY 128
YANG 00000000F57D9550 c5zk3pjstds2b TEMP_B TEMPORARY 17152

找到使用臨時段的session kill

問題處理。


SQL> select INST_ID,sid,serial#,USERNAME,STATUS,MACHINE,SQL_ID,EVENT,(sysdate-LOGON_TIME)*86400 as "s",LAST_CALL_ET from gv$session where saddr='&SESSION_ADDR ';

SQL>alter system kill session 'sid,serial#' immediate;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM