臨時表空間作用

2021-05-24 11:37:54 字數 3571 閱讀 7319

oracle臨時表空間主要用來做查詢和存放一些緩衝區資料。臨時表空間消耗的主要原因是需要對查詢的中間結果進行排序。

重啟資料庫可以釋放臨時表空間,如果不能重啟例項,而一直保持問題sql語句的執行,temp表空間會一直增長

oracle臨時表空間主要用來做查詢和存放一些緩衝區資料。臨時表空間消耗的主要原因是需要對查詢的中間結果進行排序。

重啟資料庫可以釋放臨時表空間,如果不能重啟例項,而一直保持問題sql語句的執行,temp表空間會一直增長。直到耗盡硬碟空間。

網上有人猜測在磁碟空間的分配上,oracle使用的是貪心演算法,如果上次磁碟空間消耗達到1gb,那麼臨時表空間就是1gb。也就是說當前臨時表空間檔案的大小是歷史上使用臨時表空間最大的大小。

臨時表空間的主要作用:

索引create或rebuild

order by 或 group by

distinct 操作

union 或 intersect 或 minus

sort-merge joins

analyze 

檢視臨時表空間大小

檢視臨時表檔案大小和已使用空間

select t1."tablespace" "tablespace", 

t1."total (g)" "total (g)", 

nvl(t2."used (g)", 0) "used(g)", 

t1."total (g)" - nvl(t2."used (g)", 0) "free (g)"

from

select tablespace_name "tablespace", to_char((sum(bytes/1024/1024/1024)),'99,999,990.900') "total (g)" 

from dba_temp_files

groupby tablespace_name

union

select tablespace_name "tablespace", to_char((sum(bytes/1024/1024/1024)),'99,999,990.900') "total (g)"

from dba_data_files

where tablespace_name like'temp%'

groupby tablespace_name

) t1,

selecttablespace, round(sum(blocks)*8/1024) "used (g)" from v$sort_usage

groupbytablespace

) t2

where t1."tablespace"=t2.tablespace(+)

檢視當前臨死表使用空間大小與正在占用臨時表空間的sql語句

select sess.sid, segtype, blocks*8/1000 "mb" ,sql_text

from v$sort_usage sort, v$session sess,v$sql sql

wheresort.session_addr = sess.saddr

andsql.address = sess.sql_address

orderby blocks desc;

select'the ' || name || ' temp tablespaces ' || tablespace_name ||

' idle ' ||

round(100 - (s.tot_used_blocks / s.total_blocks) * 100, 3) ||

'% at ' || to_char(sysdate, 'yyyymmddhh24miss')

from (select d.tablespace_name tablespace_name,

nvl(sum(used_blocks), 0) tot_used_blocks,

sum(blocks) total_blocks

from v$sort_segment v, dba_temp_files d

where d.tablespace_name = v.tablespace_name(+)

groupby d.tablespace_name) s,

v$database;

修改臨時檔案大小

select'alter database tempfile ' || file_name || ' resize 100m ;'

from dba_temp_files

where tablespace_name = 'onlydwtemp';

alter database tempfile '/oradata/onlydwtemp06.dbf' resize 100m ;

alter database tempfile '/oradata/onlydwtemp07.dbf' resize 100m ;

alter database tempfile '/oradata/onlydwtemp08.dbf' resize 100m ;

alter database tempfile '/oradata/onlydwtemp09.dbf' resize 100m ;

alter database tempfile '/oradata/onlydwtemp10.dbf' resize 100m ;

alter database tempfile '/oradata/onlydwtemp01.dbf' resize 100m ;

alter database tempfile '/oradata/onlydwtemp02.dbf' resize 100m ;

alter database tempfile '/oradata/onlydwtemp03.dbf' resize 100m ;

alter database tempfile '/oradata/onlydwtemp04.dbf' resize 100m ;

alter database tempfile '/oradata/onlydwtemp05.dbf' resize 100m ;

sql> alter database tempfile '/oradata/onlydwtemp09.dbf' resize 100m ;

alter database tempfile '/oradata/onlydwtemp09.dbf' resize 100m

ora-03297: file contains used data beyond requested resize value

建立新的臨時表空間

sql> create temporary tablespace temp1 tempfile '/oradata/temp1_01.dbf' size 100m;

tablespace created

sql> create temporary tablespace temp2 tempfile '/oradata/temp2_01.dbf' size 100m;

tablespace created

將當前臨時表空間指定為新的臨時表空間

sql> alter database default temporary tablespace temp1;

database altered

表空間作用與維護

作用 表空間的作用能幫助dba使用者完成以下工作 1.決定資料庫實體的空間分配 2.設定資料庫使用者的空間份額 3.控制資料庫部分資料的可用性 4.分布資料於不同的裝置之間以改善效能 5.備份和恢復資料。使用者建立其資料庫實體時其必須於給定的表空間中具有相應的權力,所以對乙個使用者來 說,其要操縱乙...

命名空間作用域

作用域 命名空間所能夠作用的範圍 內建命名空間 程式在任何階段任何位置均可以使用 全域性有效 全域性命名空間 程式在任何階段任何位置均可以使用 全域性有效 區域性命名空間 一般情況下只在各自的區域性命名空間有效 global 在區域性命名空間內更改全域性命名空間變數,使用關鍵字生命。在變數是不可變型...

函式物件 命名空間 作用域

定義函式的三種方式 1.空函式 可以快速構建專案框架,使專案架構清晰明了 def func pass 2.無參函式 def func print from func 3.有參函式 def func x,y,args,kwargs pass 命名關鍵字引數 在函式定義階段 寫在 與 可變長引數之間的形...