oracle表空間使用率超過多少回報異常
㈠ Oracle 已經警告臨時表空間不足 可是已經200G了 而且使用率不高 怎麼處理
你的用戶系統許可權是不是沒設置『unlimited tablespace』?不然200G不會出現這種問題的。
使用sql查看錶空間使用情況:
select a.tablespace_name,
a.bytes / 1024 / 1024 "Sum MB",
(a.bytes - b.bytes) / 1024 / 1024 "used MB",
b.bytes / 1024 / 1024 "free MB",
round(((a.bytes - b.bytes) / a.bytes) * 100, 2) "percent_used"
from (select tablespace_name, sum(bytes) bytes
from dba_data_files
group by tablespace_name) a,
(select tablespace_name, sum(bytes) bytes, max(bytes) largest
from dba_free_space
group by tablespace_name) b
where a.tablespace_name = b.tablespace_name
order by ((a.bytes - b.bytes) / a.bytes) desc;
實在不行的話,再遷移表空間。
㈡ 1如果Oracle的表空間滿了,會出現什麼問題如何解決
表空間一旦滿了,如果磁碟有空間請加數據文件,一般都沒有問題。
為何要給用戶指定臨時表空間:由於Oracle工作時經常需要一些臨時的磁碟空間,這些空間主要用作查詢時帶有排序(Group by,Order by等)還有些常用的SQL等演算法所用,當用完後就立即釋放,對記錄在磁碟區的信息不再使用,因此叫臨時表空間。一般安裝之後只有一個TEMP臨時表空間,也可以自己指定。
為何要給用戶指定表空間:表空間是資料庫的邏輯劃分,一個表空間只能屬於一個資料庫。所有的資料庫對象都存放在指定的表空間中。但主要存放的是表, 所以稱作表空間。
Oracle資料庫中至少存在一個表空間,即SYSTEM的表空間。
Oracle資料庫開創性地提出了表空間的設計理念,這為Oracle資料庫的高性能做出了不可磨滅的貢獻。可以這么說,Oracle中很多優化都是基於表空間的設計理念而實現的。一:控制用戶所佔用的表空間配額。二:控制資料庫所佔用的磁碟空間。三:靈活放置表空間,提高資料庫的輸入輸出性能。另外,還可以對表空間進行獨立備份。四:大表的排序操作。五:日誌文件與數據文件分開放,提高資料庫安全性。
㈢ oracle表空間佔用率高和失效用戶
第一個問題。可能有沒有設置自增長。如果有的話就沒問題了。
沒有的話 你要調整屬性了。
第二個問題。很多用戶是系統自建的用戶,有一些設置是系統某些功能要使用的賬號。
如果你有涉及到的話,刪除了就要出問題的。、
給你的建議就是勿動。
㈣ oracle 磁碟使用率達到多少後會影響寫入速度
ump文件中的內容是系統的跟蹤日誌,如果系統正常沒有不要看的話可以全部刪掉。
想永久性不產生日期調整兩個初始化參數試試disk_asynch_io和filesystemio_options。不過萬一出了問題就查不到日誌信息了。
㈤ oracle 數據文件太大 太多如何處理 (具體數據有幾十個oracle 用戶,表空間文件有上百G)
啟動和運行太慢也許和資料庫的配置有太多的關系。SGA或者PGA的內存分配啊什麼的。另外如果查詢速度過慢也可能和表空間的使用率過大沒有過大的剩餘表空間有關,如果有過程,而且使用臨時表,則可能是臨時表空間的使用率過高沒有和幾乎沒有剩餘表空間有關系。你可以從v$datafiles
視圖中查看下個個數據文件的使用和剩餘情況。
㈥ 怎麼寫一個腳本檢查oracle資料庫表空間,如果利用率超過80%,就執行一條加表空間的SQL
您好
SELECT UPPER(F.TABLESPACE_NAME) "表空間名",
D.TOT_GROOTTE_MB "表空間大小(M)",
D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空間(M)",
TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99') || '%' "使用比",
F.TOTAL_BYTES "空閑空間(M)",
F.MAX_BYTES "最大塊(M)"
FROM (SELECT TABLESPACE_NAME,
ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,
ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES
FROM SYS.DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME) F,
(SELECT DD.TABLESPACE_NAME,
ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB
FROM SYS.DBA_DATA_FILES DD
GROUP BY DD.TABLESPACE_NAME) D
WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME
ORDER BY 1;
㈦ Oracle 表空間使用率較多,應該如何優化或調整。
擴展表空間有兩種方法
一是拓展原有的表空間,語句
ALTER DATABASE DATAFILE
'/export/home/oracle/oradata//undotbs01.dbf' --這里是表空間的數據文件路徑
RESIZE 5000M;--這里是你要拓展到多大
二是為表空間增加數據文件,語句
ALTER TABLESPACE ULTRANMS_DEFAULT --這里是表空間的名字
ADD DATAFILE '/export/home/oracle/oradata/ultranms_default02.dbf' --增加數據文件的路徑
SIZE 500M --增加數據文件的大小
AUTOEXTEND ON NEXT 1M --自增加,每次增加1M
MAXSIZE UNLIMITED;--總大小無限制
夠詳細了吧!~
㈧ Oracle資料庫問題,表空間使用率99%,怎麼解
第一個問題。可能有沒有設置自增長。如果有的話就沒問題了。 沒有的話 你要調整屬性了。 第二個問題。很多用戶是系統自建的用戶,有一些設置是系統某些功能要使用的賬號。 如果你有涉及到的話,刪除了就要出問題的。、 給你的建議就是勿動。
㈨ oracle表空間使用率需要調整到多少
oracle表空間使用率需要調整到多少,具體解決方案如下:
解決方案1:
不宜超過80%,除非你表空間內的表數據都是完全連續存儲的。
解決方案2:
設成可自動拓展的,就不用管這些了
1、查詢表空間使用情況
SELECTUPPER(F.TABLESPACE_NAME)"表空間名",
D.TOT_GROOTTE_MB"表空間大小(M)",
D.TOT_GROOTTE_MB-F.TOTAL_BYTES"已使用空間(M)",
TO_CHAR(ROUND((D.TOT_GROOTTE_MB-F.TOTAL_BYTES)/D.TOT_GROOTTE_MB*100,2),'990.99')||'%'"使用比",
F.TOTAL_BYTES"空閑空間(M)",
F.MAX_BYTES"最大塊(M)"
FROM(SELECTTABLESPACE_NAME,
ROUND(SUM(BYTES)/(1024*1024),2)TOTAL_BYTES,
ROUND(MAX(BYTES)/(1024*1024),2)MAX_BYTES
FROMSYS.DBA_FREE_SPACE
GROUPBYTABLESPACE_NAME)F,
(SELECTDD.TABLESPACE_NAME,
ROUND(SUM(DD.BYTES)/(1024*1024),2)TOT_GROOTTE_MB
FROMSYS.DBA_DATA_FILESDD
GROUPBYDD.TABLESPACE_NAME)D
WHERED.TABLESPACE_NAME=F.TABLESPACE_NAME
ORDERBY1;
--查詢表空間的freespace
selecttablespace_name,
count(*)asextends,
round(sum(bytes)/1024/1024,2)asMB,
sum(blocks)asblocks
fromdba_free_space
groupbytablespace_name;
2、查詢表空間的總容量
selecttablespace_name,sum(bytes)/1024/1024asMB
fromdba_data_files
groupbytablespace_name;
3、查詢表空間使用率
selecttotal.tablespace_name,
round(total.MB,2)asTotal_MB,考試大論壇
round(total.MB-free.MB,2)asUsed_MB,
round((1-free.MB/total.MB)*100,2)||'%'asUsed_Pct
from(selecttablespace_name,sum(bytes)/1024/1024asMB
fromdba_free_space
groupbytablespace_name)free,
(selecttablespace_name,sum(bytes)/1024/1024asMB
fromdba_data_files
groupbytablespace_name)total
wherefree.tablespace_name=total.tablespace_name;