『管理調優』Oracle維護常用SQL語句整理二

II) 空間狀態相關內容

-----------------------------------------------------------------------
1、查看錶空間的名稱及大小

SELECT t.Tablespace_Name, Round(SUM(Bytes / (1024 * 1024)), 0) Ts_Size
  FROM Dba_Tablespaces t, Dba_Data_Files d
 WHERE t.Tablespace_Name = d.Tablespace_Name
 GROUP BY t.Tablespace_Name;
-----------------------------------------------------------------------
2、查看錶空間物理文件的名稱及大小

SELECT Tablespace_Name, File_Id, File_Name,
       Round(Bytes / (1024 * 1024), 0) Total_Space
  FROM Dba_Data_Files
 ORDER BY Tablespace_Name;
----------------------------------------------------------------------- 
3、求表空間的未用空間

col mbytes format 9999.9999
SELECT Tablespace_Name, SUM(Bytes) / 1024 / 1024 Mbytes
  FROM Dba_Free_Space
 GROUP BY Tablespace_Name;
-----------------------------------------------------------------------
4、察看數據庫的大小,和空間使用情況

SELECT SUM(Bytes) / (1024 * 1024) AS Free_Space, Tablespace_Name
  FROM Dba_Free_Space
 GROUP BY Tablespace_Name;

SELECT a.Tablespace_Name, a.Bytes Total, b.Bytes Used, c.Bytes Free,
       (b.Bytes * 100) / a.Bytes "% USED",
       (c.Bytes * 100) / a.Bytes "% FREE"
  FROM Sys.Sm$ts_Avail a, Sys.Sm$ts_Used b, Sys.Sm$ts_Free c
 WHERE a.Tablespace_Name = b.Tablespace_Name
   AND a.Tablespace_Name = c.Tablespace_Name;
-----------------------------------------------------------------------  
5、查看錶空間的文件使用情況

SELECT b.File_Id 文件id, b.Tablespace_Name 表空間, b.File_Name 物理文件名,
       b.Bytes 總字節數, (b.Bytes - SUM(Nvl(a.Bytes, 0))) 已使用,
       SUM(Nvl(a.Bytes, 0)) 剩餘,
       SUM(Nvl(a.Bytes, 0)) / (b.Bytes) * 100 剩餘百分比
  FROM Dba_Free_Space a,
       Dba_Data_Files b   where a.File_Id = b.File_Id   group BY b.Tablespace_Name,
       b.File_Name, b.File_Id, b.Bytes   order BY b.Tablespace_Name   
--/   dba_Free_Space --表空間剩餘空間狀況
--   dba_Data_Files --數據文件空間佔用情況  
-----------------------------------------------------------------------
6、 查詢表空間的碎片程度

SELECT Tablespace_Name, COUNT(Tablespace_Name)
  FROM Dba_Free_Space
 GROUP BY Tablespace_Name
HAVING COUNT(Tablespace_Name) > 10;

alter tablespace name coalesce;
alter table name deallocate unused;

create or replace view ts_blocks_v as
SELECT Tablespace_Name, Block_Id, Bytes, Blocks, 'free space' Segment_Name
  FROM Dba_Free_Space
UNION ALL
SELECT Tablespace_Name, Block_Id, Bytes, Blocks, Segment_Name
  FROM Dba_Extents;

select * from ts_blocks_v;

SELECT Tablespace_Name, SUM(Bytes), MAX(Bytes), COUNT(Block_Id)
  FROM Dba_Free_Space
 GROUP BY Tablespace_Name;
 
----------------------------------------------------------------------- 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章