Oracle Temp 表空間切換
版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/xuzhenxiang/article/details/46883671
一.TEMP表空間作用
臨時表空間主要用途是在資料庫進行排序運算、管理索引、訪問檢視等操作時提供臨時的運算空間,當運算完成之後系統會自動清理。當 oracle 裡需要用到 sort 的時候, PGA 中 sort_area_size 大小不夠時,將會把資料放入臨時表空間裡進行排序,同時如果有異常情況的話,也會被放入臨時表空間 , 正常來說,在完成 Select 語句、create index 等一些使用 TEMP 表空間的排序操作後, Oracle 是會自動釋放掉臨時段的。注意這裡的釋放,僅僅是將這些空間標記為空閒,並可重用,真正佔用的磁碟空間並沒有釋放。所以 Temp 表空間可能會越來越大。
排序是很耗資源的, Temp 表空間滿了 , 關鍵是最佳化你的語句,儘量使排序減少才是上策 .
總結為:
臨時表空間的主要作用:
索引create或rebuild;
Order by 或 group by;
Distinct 操作;
Union 或 intersect 或 minus;
Sort-merge joins;
analyze.
二、oracle temp表空間切換
2.1 查詢TEMP表空間使用情況:
SELECT temp_used.tablespace_name,
total - used AS "Free",
total AS "Total",
ROUND (NVL (total - used, 0) * 100 / total, 3) "Free percent"
FROM ( SELECT tablespace_name, SUM (bytes_used) / 1024 / 1024 used
FROM GV$TEMP_SPACE_HEADER
GROUP BY tablespace_name) temp_used,
( SELECT tablespace_name, SUM (bytes) / 1024 / 1024 total
FROM dba_temp_files
GROUP BY tablespace_name) temp_total
WHERE temp_used.tablespace_name = temp_total.tablespace_name;
資料庫預設表空間:
SQL> SELECT PROPERTY_NAME, PROPERTY_VALUE
2 FROM DATABASE_PROPERTIES
3 WHERE PROPERTY_NAME = 'DEFAULT_TEMP_TABLESPACE';
2.2 新建Temp2表空間
create temporary tablespace temp1 tempfile 'D:\APP\ADMINISTRATOR\ORADATA\SDXJ\TEMP2.dbf' size 20M autoextend on next 1M maxsize unlimited
tablespace group ''
extent management local uniform size 1M;
2.3 修改資料庫預設表空間為Temp1
SQL> alter database default temporary tablespace temp1;
資料庫已更改。
2.4 刪除原來表空間
退出session,刪除原表空間
DROP TABLESPACE TEMP INCLUDING CONTENTS AND DATAFILES;
刪除完成。
三、Temp 表空間一些常用查詢
3.1、更改系統的預設臨時表空間:
--查詢預設臨時表空間
select * from database_properties where property_name='DEFAULT_TEMP_TABLESPACE';
--修改預設臨時表空間
alter database default temporary tablespace temp1;
--所有使用者的預設臨時表空間都將切換為新的臨時表空間:
select username,temporary_tablespace,default_ from dba_users;
--更改某一使用者的臨時表空間:
alter user scott temporary tablespace temp;
3.2 查詢消耗資源比較的sql語句
/* Formatted on 2015/7/14 21:58:17 (QP5 v5.163.1008.3004) */
SELECT se.username,
se.sid,
su.extents,
su.blocks * TO_NUMBER (RTRIM (p.VALUE)) AS Space,
tablespace,
segtype,
sql_text
FROM v$sort_usage su,
v$parameter p,
v$session se,
v$sql s
WHERE p.name = 'db_block_size'
AND su.session_addr = se.saddr
AND s.hash_value = su.sqlhash
AND s.address = su.sqladdr
ORDER BY se.username, se.sid
3.3、檢視當前臨時表空間使用大小與正在佔用臨時表空間的sql語句
select sess.SID, segtype, blocks * 8 / 1000 "MB", sql_text
from v$sort_usage sort, v$session sess, v$sql sql
where sort.SESSION_ADDR = sess.SADDR
and sql.ADDRESS = sess.SQL_ADDRESS
order by blocks desc;
4.4 對臨時表空間進行shrink(11g新增的功能)
--將temp表空間收縮為20M
alter tablespace temp1 shrink space keep 20M;
--自動將表空間的臨時檔案縮小到最小可能的大小
ALTER TABLESPACE temp1 SHRINK TEMPFILE ’.../temp01.dbf’;
總結: 至此Temp表空間維護完成。
---------------------
作者:奮鬥的小鳥_oracle
來源:CSDN
原文:https://blog.csdn.net/xuliq/article/details/46883671
版權宣告:本文為博主原創文章,轉載請附上博文連結!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/90618/viewspace-2639913/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle temp 表空間Oracle
- ORACLE線上切換undo表空間Oracle
- Oracle切換undo表空間操作步驟Oracle
- UNDO表空間空間回收及切換
- Oracle RMAN備份為什麼會大量使用temp表空間?Oracle
- Oracle表空間Oracle
- oracle 表空間Oracle
- 增加oracle表空間Oracle
- 檢視temp表空間的消耗明細情況
- oracle 表移動表空間Oracle
- Oracle表移動表空間Oracle
- Oracle表空間切換路徑,解決硬碟滿導致的ORA-01653問題Oracle硬碟
- oracle表空間的整理Oracle
- Oracle 批量建表空間Oracle
- Oracle清理SYSAUX表空間OracleUX
- ORA-01652:無法通過128(在表空間TEMP中)擴充套件temp段套件
- ORA-01652 無法透過128 (在表空間 TEMP中)擴充套件temp段套件
- [轉]ORA-01652 無法通過128 (在表空間 TEMP中)擴充套件temp段套件
- Oracle 表空間增加檔案Oracle
- Oracle OCP(49):表空間管理Oracle
- Oracle表空間收縮方案Oracle
- Oracle RMAN 表空間恢復Oracle
- Oracle新建使用者、表空間、表Oracle
- oracle建立臨時表空間和資料表空間以及刪除Oracle
- Oracle的表空間quota詳解Oracle
- oracle臨時表空間相關Oracle
- oracle sql 表空間利用率OracleSQL
- Oracle OCP(47):表空間的建立Oracle
- 【Oracle 恢復表空間】 實驗Oracle
- 【TABLESPACE】Oracle表空間最佳實踐Oracle
- 12C關於CDB、PDB 臨時temp表空間的總結
- oracle 建立表空間和使用者Oracle
- Oracle建立表空間和使用者Oracle
- Oracle中新建表空間、使用者Oracle
- Oracle中表空間、表、索引的遷移Oracle索引
- oracle表空間增長趨勢分析Oracle
- Oracle OCP(46):表空間、段、區、塊Oracle
- 【TABLESPACE】Oracle 表空間結構說明Oracle