oracle11g 查詢臨時表空間的使用率和正在使用臨時表空間的使用者
今天開發反映說臨時表空間不夠要求新增臨時表空間,新增完成(新增了30G的臨時表空間)又報臨時表空間的不足,開發又要求是新增,有新增了10G,監控臨時表空間的使用情況,又撐滿了,又新增了30G,最後臨時表空間又撐滿了,最後批處理還是沒有執行,SQL語句的執行是一次性全部執行完成,最後的解決辦法是開發使用遊標,一萬條資料一提交或者定量提交,下午監控臨時表空間的使用情況發現使用率 74.91%。不禁有些疑問到底是那些使用者在使用臨時表空間,使用臨時表空間的大小有多大,
在做一些什麼操作,SQL語句是什麼。
首先要說明一點的是表空間的使用惰性,如果你一下使用幾十個G的臨時表空間,如果SQL語句執行失敗,臨時表空間的釋放需要時間,不會一下全部釋放,這個時候我們檢查臨時表空間的使用率發現使用率已經是99%,如果你擴容臨時表空間,擴容30G,開發又開始執行sql,你會發現臨時表空間使用率蹭蹭的網上增最後又達到了99%,開發的sql又沒有執行過去,還是報臨時表空間不足,而臨時表空間釋放有需要時間,如果開發的非常著急需要執行sql。所以建議dba一次擴容臨時表,擴容大點,
說一下今天處理問題的過程,
1.查詢臨時表空間的使用率:
select c.tablespace_name,
to_char(c.bytes/1024/1024/1024,'99,999.999') total_gb,
to_char( (c.bytes-d.bytes_used)/1024/1024/1024,'99,999.999') free_gb,
to_char(d.bytes_used/1024/1024/1024,'99,999.999') use_gb,
to_char(d.bytes_used*100/c.bytes,'99.99') || '%'use
from (select tablespace_name,sum(bytes) bytes
from dba_temp_files GROUP by tablespace_name) c,
(select tablespace_name,sum(bytes_cached) bytes_used
from v$temp_extent_pool GROUP by tablespace_name) d
where c.tablespace_name = d.tablespace_name;
2.查詢那些使用者在使用
select a.username,
a.sql_id,
a.SEGTYPE,
b.BYTES_USED/1024/1024/1024||‘G’,
b.BYTES_FREE/1024/1024/1024 from V$TEMPSEG_USAGE a join V$TEMP_SPACE_HEADER b on a.TABLESPACE=b.tablespace_name;
解釋username 正在執行sql的使用者名稱
sql_id 正在執行的sql的的sql_id
segtype 正在執行的SQL語句做的是什麼操作
BYTES_USED 正在執行sql語句使用的臨時表空間的大小
BYTES_FREE 剩餘多少臨時表空間
大家可以看到這個臨時表空間的有6個資料檔案,查詢的結果顯示按照每個臨時的資料檔案使用了多少,還剩餘多少,又又有一個問題是第一使用者DBSNMP使用者已經把臨時表空間佔滿了那麼第二個使用者還能使用這個六個資料檔案的臨時表空間麼,個人理解是六個資料檔案中有第一個使用者在使用,也有第二個使用者在使用。
查詢例項中時候是否有大欄位在使用臨時表空間:
select * from V$TEMPORARY_LOBS;
關於資料字典V$TEMP_SPACE_HEADER官方文件的解釋:
V$TEMP_SPACE_HEADER 顯示每個LOCALLY MANAGED臨時表空間的每個檔案的聚合資訊,包括當前正在使用的空間量以及空間頭中標識的空閒量。
Column | Datatype | Description |
---|---|---|
TABLESPACE_NAME
|
VARCHAR2(30)
|
Name of the temporary tablespace |
FILE_ID
|
NUMBER
|
Absolute file number |
BYTES_USED
|
NUMBER
|
How many bytes are in use |
BLOCKS_USED
|
NUMBER
|
How many blocks are in use |
BYTES_FREE
|
NUMBER
|
How many bytes are free |
BLOCKS_FREE
|
NUMBER
|
How many blocks are free |
RELATIVE_FNO
|
NUMBER
|
The relative file number for the file |
關於V$TEMPSEG_USAGE的官方文件的解釋:
V$TEMPSEG_USAGE 描述臨時段使用情況。
柱 | 資料型別 | 描述 |
---|---|---|
USERNAME
|
VARCHAR2(30)
|
請求臨時空間的使用者 |
USER
|
VARCHAR2(30)
|
此列已過時並維護以便向後相容。
此列的值始終等於中的值
USERNAME
。
|
SESSION_ADDR
|
RAW(4 | 8)
|
會話地址 |
SESSION_NUM
|
NUMBER
|
會話序列號 |
SQLADDR
|
RAW(4 | 8)
|
SQL語句的地址 |
SQLHASH
|
NUMBER
|
SQL語句的雜湊值 |
SQL_ID
|
VARCHAR2(13)
|
SQL語句的SQL識別符號 |
TABLESPACE
|
VARCHAR2(31)
|
分配空間的表空間 |
CONTENTS
|
VARCHAR2(9)
|
指示表是否
TEMPORARY
或
PERMANENT
|
SEGTYPE
|
VARCHAR2(9)
|
排序型別的型別:
|
SEGFILE#
|
NUMBER
|
初始範圍的檔案號 |
SEGBLK#
|
NUMBER
|
初始範圍的塊號 |
EXTENTS
|
NUMBER
|
分配給排序的範圍 |
BLOCKS
|
NUMBER
|
分配給排序的塊中的範圍 |
SEGRFNO#
|
NUMBER
|
初始範圍的相對檔案號 |
關於V$TEMP_EXTENT_POOL的官方文件中的解釋
V$TEMP_EXTENT_POOL顯示快取並用於例項的臨時空間的狀態。請注意,臨時空間快取的載入是惰性的,並且例項可以處於休眠狀態。
柱 | 資料型別 | 描述 |
---|---|---|
TABLESPACE_NAME
|
VARCHAR2(30)
|
表空間的名稱 |
FILE_ID
|
NUMBER
|
絕對檔案號 |
EXTENTS_CACHED
|
NUMBER
|
已快取的範圍數 |
EXTENTS_USED
|
NUMBER
|
實際使用的範圍數 |
BLOCKS_CACHED
|
NUMBER
|
快取的塊數 |
BLOCKS_USED
|
NUMBER
|
使用的塊數 |
BYTES_CACHED
|
NUMBER
|
快取的位元組數 |
BYTES_USED
|
NUMBER
|
使用的位元組數 |
RELATIVE_FNO
|
NUMBER
|
相對檔案號 |
關於V$TEMPORARY_LOBS官方文件解釋
V$TEMPORARY_LOBS 顯示臨時LOB。
柱 | 資料型別 | 描述 |
---|---|---|
SID
|
NUMBER
|
會話ID |
CACHE_LOBS
|
NUMBER
|
快取臨時LOB的數量 |
NOCACHE_LOBS
|
NUMBER
|
nocache臨時LOB的數量 |
ABSTRACT_LOBS
|
NUMBER
|
抽象LOB的數量 |
如果書寫過程或者對官方文件理解有什麼錯誤歡迎大家留言。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31547066/viewspace-2286048/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 臨時表空間和回滾表空間使用率查詢
- 臨時表空間被佔滿的原因查詢
- Oracle臨時表空間檢視、新增臨時表空間資料檔案、修改預設臨時表空間 方法!Oracle
- mysql臨時表,臨時表空間,ibtmp1表空間暴增原因初探MySql
- oracle 臨時表空間的增刪改查Oracle
- 臨時表空間使用率過高的解決辦法
- oracle建立臨時表空間和資料表空間以及刪除Oracle
- oracle臨時表空間相關Oracle
- 4.2.1.8規劃臨時表空間
- 刪除臨時表空間組
- MySQL InnoDB臨時表空間配置MySql
- 查詢過去一段時間內某條sql使用的臨時表空間大小SQL
- 消除臨時表空間暴漲的方法
- oracle表空間使用率查詢Oracle
- oracle建立使用者,表空間,臨時表空間,分配許可權步驟詳解Oracle
- 2.5.7 建立預設臨時表空間
- Oracle 查詢佔用臨時表空間大的歷史會話和SQLOracle會話SQL
- MySQL 5.7 新特性 共享臨時表空間及臨時表改進MySql
- SQLServer如何釋放tempdb臨時表空間SQLServer
- MYSQL造資料佔用臨時表空間MySql
- 檢視oracle臨時表空間佔用率的檢視Oracle
- 當使用者無限制使用表空間配額且表空間有足夠空間時出現超出表空間的空間限額
- 臨時表空間ORA-1652問題解決
- Oracle11g新增檢視查詢表空間使用率DBA_TABLESPACE_USAGE_METRICSOracle
- 查詢表空間使用情況
- 表空間使用量查詢
- 12C關於CDB、PDB 臨時temp表空間的總結
- 查詢表空間使用情況的指令碼指令碼
- Oracle 12C RMAN備份佔用大量臨時表空間Oracle
- dbms_lob儲存過程導致臨時表空間100%儲存過程
- Jenkins臨時空間不足處理辦法Jenkins
- oracle 建立表空間和使用者Oracle
- Oracle建立表空間和使用者Oracle
- Oracle新建使用者、表空間、表Oracle
- undo表空間使用率100%的原因檢視
- 【UNDO】Oracle undo表空間使用率過高,因為一個查詢Oracle
- oracle 臨時表的使用Oracle
- SQLServer臨時表的使用SQLServer