oracle 資料庫裡檢視錶空間使用狀況;
方法一:
select dbf.tablespace_name,
dbf.totalspace "總量(M)",
dbf.totalblocks as 總塊數,
dfs.freespace "剩餘總量(M)",
dfs.freeblocks "剩餘塊數",
(dfs.freespace / dbf.totalspace) * 100 "空閒比例"
from (select t.tablespace_name,
sum(t.bytes) / 1024 / 1024 totalspace,
sum(t.blocks) totalblocks
from dba_data_files t
group by t.tablespace_name) dbf,
(select tt.tablespace_name,
sum(tt.bytes) / 1024 / 1024 freespace,
sum(tt.blocks) freeblocks
from dba_free_space tt
group by tt.tablespace_name) dfs
where trim(dbf.tablespace_name) = trim(dfs.tablespace_name)
方法二:
SELECT Total.name "Tablespace Name",
Free_space, (total_space-Free_space) Used_space, total_space
FROM
(select tablespace_name, sum(bytes/1024/1024) Free_Space
from sys.dba_free_space
group by tablespace_name
) Free,
(select b.name, sum(bytes/1024/1024) TOTAL_SPACE
from sys.v_$datafile a, sys.v_$tablespace B
where a.ts# = b.ts#
group by b.name
) Total
WHERE Free.Tablespace_name = Total.name
當發現有的表空間不夠的錯誤時,處理如下:
1:找出該表空間對應的資料檔案及路徑
select * from dba_data_files t
where t.tablespace_name = 'ARD'
2:增大資料檔案
alter database datafile '全路徑的資料檔名稱' resize ***M
3:增加資料檔案
alter tablespace 表空間名稱
add datafile '全路徑的資料檔名稱' size ***M
註解:表空間儘量讓free百分比保持在10%以上,如果低於10%就增加datafile或者resizedatafile,一般資料檔案不要超過2G
如果表空間剩餘足夠,還是提示ORA-01653的錯誤,可以檢視資料檔案是否自動擴充套件,如下sql:
SELECT T.TABLESPACE_NAME,
D.FILE_NAME,
D.AUTOEXTENSIBLE,
D.BYTES,
D.MAXBYTES,
D.STATUS
FROM DBA_TABLESPACES T, DBA_DATA_FILES D
WHERE T.TABLESPACE_NAME = D.TABLESPACE_NAME
ORDER BY TABLESPACE_NAME, FILE_NAME;
然後將資料檔案改成自動擴充套件:如下sql
ALTER DATABASE
DATAFILE '/u01/app/oracle/oradata/bieeprd/BI_DATA04' AUTOEXTEND
ON NEXT 50M MAXSIZE UNLIMITED
4:檢查tablespace的free空間能不能滿足最大的next_extent,不能則擴充套件tablespace
select s.owner,s.segment_name,s.segment_type,s.tablespace_name, s.next_extent
from dba_segments s
where s.next_extent > (select MAX(f.bytes)
from dba_free_space f
where f.tablespace_name = s.tablespace_name)
order by s.tablespace_name
5:臨時表空間不夠得處理辦法
查詢臨時表空間資訊,如下兩個檢視裡面可以:
select * from dba_temp_files;
select * from v$tempfile
空間不夠可以透過如下三種方法增大空間:
方法一、增大臨時檔案大小:
SQL> alter database tempfile ‘/u01/app/oracle/oradata/orcl/temp01.dbf’ resize 100m;
方法二、將臨時資料檔案設為自動擴充套件:
SQL> alter database tempfile ‘/u01/app/oracle/oradata/orcl/temp01.dbf’ autoextend on next 5m maxsize unlimited;
方法三、向臨時表空間中新增資料檔案:
SQL> alter tablespace temp add tempfile ‘/u01/app/oracle/oradata/orcl/temp02.dbf’ size 100m;
一般不用方法2,不要將臨時表空間無限擴充套件;
6:建立臨時表空間
建立臨時表空間:
SQL> create temporary tablespace temp1 tempfile '/u01/app/oracle/oradata/orcl/temp11.dbf' size 10M;
7:更改系統的臨時表空間
更改系統的預設臨時表空間:
SQL> alter database default temporary tablespace temp1;
8:更改某一使用者的臨時表空間:
SQL> alter user scott temporary tablespace temp;
有些表空間它雖然空閒百分比是90,但它只有不到9m的空閒空間,而CUG_INCIDNT_ATTR_VALS_B的nextextent是33554432
,33m,這種情況不是看百分比的,而是要比較free空間大小跟nextextent,也可以將表或者索引的next extent縮小,這個要看具體 決定了
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8109090/viewspace-919368/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle 檢視錶空間使用情況Oracle
- 檢視mysql資料庫空間使用情況MySql資料庫
- 檢視oracle資料庫表空間使用情況 非常慢!Oracle資料庫
- oracle 檢視錶空間Oracle
- Oracle 檢視錶空間的大小及使用情況sql語句OracleSQL
- Oracle檢視錶空間大小Oracle
- 指令碼實現檢視錶空間使用情況指令碼
- 檢視oracle表空間使用情況Oracle
- oracle 10g 命令檢視錶空間大小情況Oracle 10g
- Oracle檢視錶空間大小和使用率Oracle
- 通過shell指令碼檢視資料庫表空間使用情況指令碼資料庫
- 透過shell指令碼檢視資料庫表空間使用情況指令碼資料庫
- 檢視Oracle的表空間的使用情況Oracle
- Oracle檢視錶空間使用率SQL指令碼OracleSQL指令碼
- oracle檢視錶空間使用情況及某表是否被鎖的問題Oracle
- 檢視資料庫表空間資料庫
- db2資料庫檢視錶空間使用的是檔案系統和裸裝置情況DB2資料庫
- Oracle檢視物件空間使用情況show_spaceOracle物件
- Oracle 檢查表空間使用情況Oracle
- 怎樣檢視錶空間下的資料物件物件
- Oracle資料庫檢視使用者狀態Oracle資料庫
- oracle 檢視錶所佔用的空間大小Oracle
- 檢視錶空間及資料檔案的checkpoint資訊
- 如何檢視Oracle資料庫表空間大小(空閒、已使用),是否要增加表空間的資料檔案...Oracle資料庫
- 使用opatch 命令檢視oracle patch 狀況Oracle
- 檢視Oracle資料庫表空間大小,是否需要增加表空間的資料檔案Oracle資料庫
- sql檢視所有表空間使用情況SQL
- 檢視空間使用情況的指令碼指令碼
- 使用V$檢視觀察Oracle執行狀況Oracle
- 檢視SQL SERVER表的空間使用情況SQLServer
- ORACLE如何檢視錶空間路徑及使用者許可權Oracle
- 檢查表空間、資料檔案、OS空間使用情況的指令碼指令碼
- db2檢視錶空間和增加表空間容量DB2
- 檢視SQL SERVER表的空間使用情況(續)SQLServer
- 檢視資料庫佔用磁碟空間的方法資料庫
- oracle表空間檢視Oracle
- SQL語句大全—檢視錶空間(二)SQL
- SQL語句大全—檢視錶空間(一)SQL