每天自動記錄表空間大小及資料檔案大小
在d:/db_status 建立4個檔案內容如下。
4個檔案
create_csv.bat
db_status.sql
diskfile_status.csv
tablespace_status.csv
create_csv.bat
d:cd d:/db_status
sqlplus "system/manager" @db_status.sql
db_status.sql
set linesize 2000;
set pagesize 2000;
set trims off;
spool temp.txt;
set heading off;
select to_char(sysdate,'yyyy-mm-dd')||',' "date,",t.tablespace_name||',' "tablespace,",
substr(d.file_name,1,80)||',' "datafile name,",
round((d.max_bytes - nvl(f.sum_bytes, 0))/1024/1024,2)||',' "used mb,",
round(nvl(f.sum_bytes, 0)/1024/1024,2)||',' "free mb,",
t.initial_extent||',' "initial extent,",
t.next_extent||',' "next extent,",
t.min_extents||',' "min extents,",
t.max_extents||',' "max extents,",
t.pct_increase||',' "pct increase,"
from (select tablespace_name, file_id, sum(bytes) sum_bytes
from dba_free_space
group by tablespace_name, file_id) f,
(select tablespace_name, file_name, file_id, max(bytes) max_bytes, status
from dba_data_files
group by tablespace_name, file_name, file_id, status) d,
dba_tablespaces t
where t.tablespace_name = d.tablespace_name
and f.tablespace_name(+) = d.tablespace_name
and f.file_id(+) = d.file_id
group by t.tablespace_name, d.file_name, t.initial_extent,
t.next_extent, t.min_extents, t.max_extents,
t.pct_increase, t.status, d.max_bytes, f.sum_bytes, d.status;
spool off;
host type temp.txt;>>d:/db_status/diskfile_status.csv
spool temp.txt;
select to_char(sysdate,'yyyy-mm-dd')||',' "date",a.tablespace_name||',' ,
round(a.bytes_alloc / 1024 / 1024, 2)||',' megs_alloc,
round(nvl(b.bytes_free, 0) / 1024 / 1024, 2)||',' megs_free,
round((a.bytes_alloc - nvl(b.bytes_free, 0)) / 1024 / 1024, 2)||',' megs_used,
round((nvl(b.bytes_free, 0) / a.bytes_alloc) * 100,2)||',' pct_free,
100 - round((nvl(b.bytes_free, 0) / a.bytes_alloc) * 100,2)||',' pct_used,
round(maxbytes/1048576,2)||',' max
from ( select f.tablespace_name,
sum(f.bytes) bytes_alloc,
sum(decode(f.autoextensible, 'yes',f.maxbytes,'no', f.bytes)) maxbytes
from dba_data_files f
group by tablespace_name) a,
( select f.tablespace_name,
sum(f.bytes) bytes_free
from dba_free_space f
group by tablespace_name) b
where a.tablespace_name = b.tablespace_name (+)
union all
select to_char(sysdate,'yyyy-mm-dd')||',' "date",h.tablespace_name||',',
round(sum(h.bytes_free + h.bytes_used) / 1048576, 2)||',' megs_alloc,
round(sum((h.bytes_free + h.bytes_used) - nvl(p.bytes_used, 0)) / 1048576, 2)||',' megs_free,
round(sum(nvl(p.bytes_used, 0))/ 1048576, 2)||',' megs_used,
round((sum((h.bytes_free + h.bytes_used) - nvl(p.bytes_used, 0)) / sum(h.bytes_used + h.bytes_free)) * 100,2)||',' pct_free,
100 - round((sum((h.bytes_free + h.bytes_used) - nvl(p.bytes_used, 0)) / sum(h.bytes_used + h.bytes_free)) * 100,2)||','
pct_used,
round(sum(f.maxbytes) / 1048576, 2)||',' max
from sys.v_$temp_space_header h, sys.v_$temp_extent_pool p, dba_temp_files f
where p.file_id(+) = h.file_id
and p.tablespace_name(+) = h.tablespace_name
and f.file_id = h.file_id
and f.tablespace_name = h.tablespace_name
group by h.tablespace_name
order by 1;
spool off;
host type temp.txt;>>d:/db_status/tablespace_status.csv;
host del temp.txt
exit;
diskfile_status.csv
date,tablespace,datafilename,usedmb,freemb,initialextent,nextextent,minextents,maxextents,pctincrease,
tablespace_status.csv
date,tablespace_name,megs_alloc,megs_free,megs_used,pct_free,pct_used,max,
資料檔案 表空間offline用法及區別
對資料庫的離線包括資料檔案的離線和對錶空間的離線,表空間離線實際就是表空間對應的所有資料檔案離線。1.資料檔案 offline 資料檔案新增到表空間之後不能夠被刪除的,沒有語法支援這麼做,如果想不使用該資料檔案,唯一是將資料檔案設定為 offline 狀態。執行以下步驟將資料檔案設定為 offlin...
Oracle 表空間 資料檔案自動增加
執行此指令碼之前需要建立名稱為 datafile no 的序列 最小值為1 增長量為1 最大值為 10000000 預設為在表空間his data下建立資料檔案。過程建立之後需要進行編譯,編譯成功後,建立job進行呼叫。間隔時間為 trunc sysdate 1,dd 1 24 每天呼叫。並且呼叫時...
Oracle 檢視表空間 資料檔案的大小及使用情況
檢視表空間使用情況 1g 1024mb 1m 1024kb 1k 1024bytes 1m 11048576bytes 1g 1024 11048576bytes 11313741824bytes select a.tablespace name 表空間名 total 表空間大小 free 表空間剩...