本篇文章給大家帶來了關于的相關知識,在日常的使用中最長遇到的問題就是的表空間滿了,數據無法寫入報錯,下面一起來看一下oracle用戶默認表空間,希望對大家有幫助。
一、查看表空間使用率
1、查看數據庫表空間文件:
--查看數據庫表空間文件 * from ;
2、查看所有表空間的總容量:
--查看所有表空間的總容量 dba., sum(bytes)/1024/1024 as MB from dba group by dba.;
3、查看數據庫表空間使用率
--查看數據庫表空間使用率 total.,round(total.MB, 2) as ,round(total.MB - free.MB, 2) as ,round((1-free.MB / total.MB)* 100, 2) || '%' as from ( , sum(bytes) /1024/1024 as MB from group by ) free,( , sum(bytes) / 1024 / 1024 as MB from group by ) free. = total. order by desc;
4.1、查看表空間總大小、使用率、剩余空間
--查看表空間總大小、使用率、剩余空間 a., total, free, total-free as used, (free/total * 100, 1, 5) as "FREE%", ((total - free)/total * 100, 1, 5) as "USED%"from( , sum(bytes)/1024/1024 as total from group by ) a,( , sum(bytes)/1024/1024 as free from group by ) a. = b. by a.
4.2、查看表空間使用率(包含temp臨時表空間)
--查看表空間使用率(包含臨時表空間) * from ( a。,(a。bytes- b。bytes) "表空間使用大小(BYTE)",a。bytes/(1024*1024*1024) "表空間大小(GB)",b。bytes/(1024*1024*1024) "表空間剩余大小(GB)",(a。bytes- b。bytes)/(1024*1024*1024) "表空間使用大小(GB)",((1 - b。bytes/a。bytes)*100,'99。99999') || '%' "使用率"from ( ,sum(bytes) by ) a,( ,sum(bytes) by ) a。 = b。 c。
,d。 "表空間使用大小(BYTE)",c。bytes/(1024*1024*1024) "表空間大小(GB)",(c。bytes-d。)/(1024*1024*1024) "表空間剩余大小(GB)",d。/(1024*1024*1024) "表空間使用大小(GB)",(d。*100/c。bytes,'99。99999') || '%' "使用率"from( ,sum(bytes) group by ) c,( ,sum() v$ group by ) c。 = d。)order by
5、查看具體表的占用空間大小
--查看具體表的占用空間大小 * from ( t.,t.owner, t., t., sum(t.bytes / 1024 / 1024) t.='TABLE'group by t.,t.OWNER, t., t.) by t.mb desc二、擴展大小或增加表空間文件
1、更改表空間的dbf數據文件分配空間大小
alter ‘...\.dbf' on;alter ‘...\.dbf' 1024M;
2.1、為表空間新增一個數據文件(表空間滿32G不能擴展則增加表空間文件)
alter add '/****' size 1000m on next 100m;
2.2、如果是temp臨時表新增表空間會報錯:
0RA-03217: 變更 無效的選項
解決方法: 改為
alter add '/****' size 1000m on next 100m;
針對temp臨時表空間使用率爆滿問題
臨時表空間主要用途是在數據庫進行排序運算、管理索引、訪問視圖等操作時提供臨時的運算空間,當運算完成之后系統會自動清理,但有些時候我們會遇到臨時段沒有被釋放,TEMP表空間幾乎滿使用率情況;
引起臨時表空間增大主要使用在以下幾種情況:
1、order by or group by (disc sort占主要部分);
2、索引的創建和重創建;
3、操作;
4、union & & minus sort-merge joins;
5、 操作;
6、有些異常也會引起TEMP的暴漲。
解決方法一:用上述方法給temp增加表空間文件
解決方法二:在服務器資源空間有限的情況下,重新建立新的臨時表空間替換當前的表空間
--1。查看當前的數據庫默認表空間: * from here ='ACE';--2。創建新的臨時表空間 '/home/。dbf' size 31G;--3。更改默認臨時表空間alter ;--4。刪除原來的臨時表空間drop and ;--如果刪除原來臨時表空間報錯ORA-60100:由于排序段,已阻止刪除表空間。。。--(說明有語句正在使用原來的臨時表空間oracle用戶默認表空間,需要將其kill掉再刪除,此語句多為排序的語句)--查詢語句 se。,se。sid,se。#,su。,su。*(rtrim(p。
value))as Space,,, v$ su,v$ p,v$ se,v$sql p。name='' and su。=se。saddr and s。=su。 s。=su。 by se。,se。sid;--刪除對應的'sid,#'alter kill 'sid,#'附:查看表空間是否具有自動擴展的能力--查看表空間是否具有自動擴展的能力 T。,D。,D。,D。BYTES,D。,D。 T, T。 =D。 ORDER BY ,;