檢查資料檔案使用情況和能夠resize到高水位值指令碼
資料檔案大大小及頭大小
SELECT v1.file_name,v1.file_id,
num1 totle_space,
num3 free_space,
num1-num3 Used_space,
nvl(num2,0) data_space,
num1-num3-nvl(num2,0) file_head
FROM
(SELECT file_name,file_id,SUM(bytes) num1 FROM Dba_Data_Files GROUP BY file_name,file_id) v1,
(SELECT file_id,SUM(bytes) num2 FROM dba_extents GROUP BY file_id) v2,
(SELECT file_id,SUM(BYTES) num3 FROM DBA_FREE_SPACE GROUP BY file_id) v3
WHERE v1.file_id=v2.file_id(+)
AND v1.file_id=v3.file_id(+)
執行以上查詢,我們可以如下資訊:
Totle_pace:該資料檔案的總大小,位元組為單位
Free_space:該資料檔案的剩於大小,位元組為單位
Used_space:該資料檔案的已用空間,位元組為單位
Data_space:該資料檔案中段資料佔用空間,也就是資料空間,位元組為單位
File_Head:該資料檔案頭部佔用空間,位元組為單位
如果是求hwM,可以確認到resize 回收到最大資料檔案的值 用如下過程
declare
cursor c_dbfile is
select tablespace_name,file_name,file_id,bytes
from sys.dba_data_files
where status !='INVALID'
order by tablespace_name,file_id;
cursor c_space(v_file_id in number) is
select block_id,blocks
from sys.dba_free_space
where file_id=v_file_id
order by block_id desc;
blocksize number(20);
filesize number(20);
extsize number(20);
begin
select value into blocksize
from v$parameter
where name = 'db_block_size';
for c_rec1 in c_dbfile loop
filesize := c_rec1.bytes;
<
for c_rec2 in c_space(c_rec1.file_id) loop
extsize := ((c_rec2.block_id - 1)*blocksize + c_rec2.blocks*blocksize);
if extsize = filesize then
filesize := (c_rec2.block_id - 1)*blocksize;
else
exit outer;
end if;
end loop outer;
if filesize = c_rec1.bytes
then
dbms_output.put_line('Tablespace: '
||' '||c_rec1.tablespace_name||' Datafile: '||c_rec1.file_name);
dbms_output.put_line('Can not be resized, no free space at end of file.')
;
dbms_output.put_line('.');
else
if filesize < 2*blocksize then
dbms_output.put_line('Tablespace: '
||' '||c_rec1.tablespace_name||' Datafile: '||c_rec1.file_name);
dbms_output.put_line('Can be resized uptil: '||2*blocksize/1024/1024
||' M, Actual size: '||c_rec1.bytes/1024/1024||' M');
dbms_output.put_line('.');
else
dbms_output.put_line('Tablespace: '
||' '||c_rec1.tablespace_name||' Datafile: '||c_rec1.file_name);
dbms_output.put_line('Can be resized uptil: '||filesize/1024/1024
||' M, Actual size: '||c_rec1.bytes/1024/1024);
dbms_output.put_line('.');
end if;
end if;
end loop;
end;
/
要是在執行下面必須先set serveroutput on
如果出現以下錯誤
ORA-20000: ORU-10027: buffer overflow, limit of 2000 bytes
ORA-06512: at "SYS.DBMS_OUTPUT", line 35
ORA-06512: at "SYS.DBMS_OUTPUT", line 198
ORA-06512: at "SYS.DBMS_OUTPUT", line 139
ORA-06512: at line 48
則加大
set serveroutput on 1000000
如果出現以下錯誤則用
ERROR at line 1:
ORA-01426: numeric overflow
ORA-06512: at line 20
把數值型加大到20
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7199859/viewspace-218022/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 檢查表空間、資料檔案、OS空間使用情況的指令碼指令碼
- 查詢Oracle資料檔案的使用情況Oracle
- 檢查儲存結構-控制、REDO日誌、表空間使用情況、資料檔案等資訊指令碼--HTML指令碼HTML
- 檢視空間使用情況的指令碼指令碼
- 通過shell指令碼檢視資料庫表空間使用情況指令碼資料庫
- 透過shell指令碼檢視資料庫表空間使用情況指令碼資料庫
- 查詢表空間使用情況的指令碼指令碼
- 指令碼實現檢視錶空間使用情況指令碼
- check_postgres指令碼集檢查資料庫健康情況指令碼資料庫
- 檢視資料庫中tablespace和datafile的使用情況。資料庫
- resize 資料檔案的大小
- oracle pga使用情況常用指令碼:Oracle指令碼
- 檢查備份情況的指令碼指令碼
- 【SCN】Oracle檢查scn值指令碼Oracle指令碼
- mysql釋放檔案高水位MySql
- 檢視mysql資料庫空間使用情況MySql資料庫
- oracle 資料庫中壞塊概念和檢查指令碼Oracle資料庫指令碼
- 巧用shell指令碼統計磁碟使用情況指令碼
- 監控系統使用情況shell指令碼指令碼
- 資料庫的常規檢查指令碼資料庫指令碼
- 巧用shell生成資料庫檢查指令碼資料庫指令碼
- 資料庫的檢查步驟指令碼資料庫指令碼
- oracle 資料庫效能健康檢查指令碼Oracle資料庫指令碼
- 資料檔案RESIZE導致查詢DBA_DATA_FILES被鎖
- proc檔案系統中cpu,記憶體,網路資料使用情況獲取(附檢測網速原始碼)記憶體原始碼
- apache使某目錄下的檔案能夠列表顯示出來Apache
- 【TABLESPACE】怎麼去降低資料檔案的高水位呢(BLOCK_ID)BloC
- 使用shell指令碼檢視資料庫負載情況指令碼資料庫負載
- 如何使用du 和 ncdu 兩個命令檢查 Linux 磁碟使用情況?Linux
- PowerShell 指令碼來監控 CPU、記憶體和磁碟使用情況:指令碼記憶體
- (轉)oracle 資料庫效能健康檢查指令碼Oracle資料庫指令碼
- 資料庫健康檢查 sqlplus 指令碼資料庫SQL指令碼
- Mongodb記憶體管理和使用情況情況查詢MongoDB記憶體
- 檢視oracle資料庫表空間使用情況 非常慢!Oracle資料庫
- Duc:一個能夠視覺化洞察硬碟使用情況的工具包視覺化硬碟
- 使用dbv和RMAN檢查資料檔案中的壞塊
- 查詢表空間使用情況的簡單檢視
- ORACLE中裸裝置資料檔案RESIZE/AUTOEXTEND ONOracle