每天自動記錄表空間大小及資料檔案大小

2021-05-22 18:27:52 字數 3958 閱讀 9586

每天自動記錄表空間大小及資料檔案大小

在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 表空間剩...