oracle臨時表空間相關

wanglinghua0907發表於2023-12-29

檢視臨時表空間大小

select tablespace_name,file_name,sum(bytes)/1024/1024/1024 GB from dba_temp_files group by tablespace_name,file_name;(臨時表空間)


臨時表空間新增資料檔案

alter tablespace tmp1 add tempfile '/oracle/app/oradata/wlh1/tmp02.dbf' size 55m autoextend on;


檢視使用者預設temp表空間

select username,TEMPORARY_TABLESPACE from dba_users;

 

建新的temp表空間

CREATE temporary TABLESPACE ntemp  TEMPFILE '+NEWDATA/rac/ntemp01.dbf' SIZE 100m  autoextend off;

 

如果使用者的預設表空間只有一個,修改全部的預設temp表空間

alter database default temporary tablespace ntemp;

 

如果使用者的預設表空間有多個,分別重新設定這些使用者的預設temp表空間

select 'alter user  '||username||'  TEMPORARY   TABLESPACE  temp03;' from dba_users where TEMPORARY_TABLESPACE='TEMP';

 

刪除temp表空間(如果用的到的話)

drop tablespace ntemp including contents and datafiles;



--查詢temp表空間使用率:

select df.tablespace_name "Tablespace",

       df.totalspace "Total(MB)",

       nvl(FS.UsedSpace, 0) "Used(MB)",

       (df.totalspace - nvl(FS.UsedSpace, 0)) "Free(MB)",

       round(100 * (1 - (nvl(fs.UsedSpace, 0) / df.totalspace)), 2) "Pct. Free(%)"

  FROM (SELECT tablespace_name, round(SUM(bytes) / 1048576) TotalSpace

          FROM dba_TEMP_files

         GROUP BY tablespace_name) df,

       (SELECT tablespace_name,

               ROUND(SUM(bytes_used) / 1024 / 1024) UsedSpace

          FROM gV$temp_extent_pool

         GROUP BY tablespace_name) fs

 WHERE df.tablespace_name = fs.tablespace_name(+);


1、使用如下語句檢視一下認誰在用臨時段

SELECT

se.USERNAME,

se.sid,

se.SERIAL#,

se.sql_address,

se.machine,

se.program,

su.tablespace,

su.segtype,

su.contents

FROM

v$session se,

v$sort_usage su

WHERE se.saddr=su.session_addr;


2、殺死正在使用臨時段的會話

SQL>Altersystem kill session 'sid,serial#';


3、把TEMP表空間回縮一下

SQL>alter tablespace TEMP coalesce;



來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/69980685/viewspace-3002138/,如需轉載,請註明出處,否則將追究法律責任。

相關文章