應用場景:臨時表空間滿了,無法釋放

 

解決方法總結如下:
--1 創建中轉臨時表空間
create temporary tablespace temp02
tempfile '/oradata/CRPT_TEMP_TRA.dbf'
size 20G reuse autoextend on next 1M ;

 

--2 修改使用者臨時表空間為中轉臨時表空間
alter user crmreport temporary tablespace temp02

 

--3 刪除使用者原始的臨時表空間 TBS_CRPT_TEMP
drop tablespace TBS_CRPT_TEMP including contents and datafiles;

 

--4 重建使用者原始的臨時表空間TBS_CRPT_TEMP
create temporary tablespace TBS_CRPT_TEMP
tempfile '/oradata/CRPT_TEMP.dbf'
size 30G reuse autoextend on next 1M ;

 

--5 重新設置使用者的臨時表空間為新建的原始臨時表空間
alter user crmreport temporary tablespace TBS_CRPT_TEMP

 

--6 刪除中轉臨時表空間
drop tablespace temp02 including contents and datafiles;

 

注意:
在刪除temp臨時表空間之前,先把運行在temp臨時表空間的sql語句kill掉,這樣的sql語句多為排序的語句,查詢方法如下:


1.Selectse.username,se.sid,se.serial#,su.extents,su.blocks*to_number(rtrim(p.value))asSpace,

2.tablespace,segtype,sql_text
3.from v$sort_usage su,v$parameter p,v$session se,v$sql s
4.where p.name='db_block_size' and su.session_addr=se.saddr ands.hash_value=su.sqlhash
5.and s.address=su.sqladdr
6.order by se.username,se.sid;
--查詢出來之後,kill掉這些sql語句的session:
alter system kill session 'SID,SERIAL#';
創作者介紹
創作者 shadow 的頭像
shadow

資訊園

shadow 發表在 痞客邦 留言(0) 人氣()