v_tablespace 表空间查询视图

 select a.tablespace_name 表空间,
       a.total_bytes - nvl(b.free_bytes, 0)  已使用M,
       a.total_bytes  总计M,
       round((a.total_bytes - nvl(b.free_bytes, 0)) / a.total_bytes, 4) * 100 || '%' 已使用百分比,
       nvl(b.free_bytes, 0) || 'M' 剩余,
       round(nvl(b.free_bytes, 0) / a.total_bytes, 4) * 100 || '%' 剩余百分比,
       round((a.total_bytes - nvl(b.free_bytes, 0)) / a.total_bytes, 4) * 100 used
  from (select df.tablespace_name, sum(df.bytes) / 1024 / 1024 Total_bytes
          from dba_data_files Df
          Where df.TABLESPACE_NAME NOT Like 'UNDOTBS%'
         group by df.tablespace_name) a,
       (select fs.tablespace_name, sum(fs.bytes) / 1024 / 1024 Free_bytes
        from  dba_free_space fs
        Where fs.TABLESPACE_NAME NOT Like 'UNDOTBS%'
         group by fs.tablespace_name) b
 where a.tablespace_name = b.tablespace_name(+)
 Union All
 SELECT uA.Tablespace_Name 表空间,
       Used_Undo  已使用M,
       Total_Undo  总计M,
       Trunc(Used_Undo / Total_Undo * 100, 2)||'%' 已使用百分比,
       (Total_Undo - Used_Undo)||'M' 剩余,
       Trunc((Total_Undo - Used_Undo) / Total_Undo * 100, 2)||'%' 剩余百分比,
       Trunc(Used_Undo / Total_Undo * 100, 2) used
FROM   (SELECT Nvl(SUM(Bytes / 1024 / 1024), 0) Used_Undo,
               Tablespace_Name
        FROM   Dba_Undo_Extents
        WHERE  Status IN ('ACTIVE', 'UNEXPIRED')
        GROUP  BY Tablespace_Name) ua,
       (SELECT Tablespace_Name,
               SUM(Bytes / 1024 / 1024) Total_Undo
        FROM   Dba_Data_Files
        WHERE  Tablespace_Name Like 'UNDOTBS%'
        GROUP  BY Tablespace_Name) ub
WHERE  uA.Tablespace_Name = uB.Tablespace_Name
Union All
Select   d.Tablespace_Name 表空间,
       Nvl(t.Bytes, 0) / 1024 / 1024  已使用M,
       Nvl(a.Bytes / 1024 / 1024, 0) 总计M,
       trunc(Nvl(t.Bytes / a.Bytes * 100, 0), 2)||'%' 已使用百分比,
       (a.bytes-Nvl(t.bytes,0))/1024/1024||'M' 剩余,
       trunc(Nvl((a.bytes-Nvl(t.bytes,0)) / a.Bytes * 100, 0),2)||'%' 剩余百分比,
       trunc(Nvl(t.Bytes / a.Bytes * 100, 0),2) "used"
From Sys.Dba_Tablespaces d, (Select Tablespace_Name, Sum(Bytes) Bytes From Dba_Temp_Files Group By Tablespace_Name) a,
     (Select Tablespace_Name, Sum(Bytes_Cached) Bytes From gV$temp_Extent_Pool Group By Tablespace_Name) t
Where d.Tablespace_Name = a.Tablespace_Name(+) And d.Tablespace_Name = t.Tablespace_Name(+) And
      d.Extent_Management Like 'LOCAL' And d.Contents Like 'TEMPORARY'
Order By 7 Desc;
Oracle数据库中,你可以使用SQL命令来查询表空间的信息。以下是几个常用的查询表空间的SQL语句: 1. **查看所有表空间信息**: ```sql SELECT * FROM dba_tablespaces; ``` 这将显示所有数据库中存在的表空间名称、状态、大小等基本信息。 2. **查询特定表空间信息**: ```sql SELECT tablespace_name, status, size_in_bytes, used_space_in_bytes, free_space_in_bytes FROM dba_tablespaces WHERE tablespace_name = 'YOUR_TABLESPACE_NAME'; ``` 将`YOUR_TABLESPACE_NAME`替换为你想查询的具体表空间名。 3. **查询已分配和空闲的数据块数**: ```sql SELECT tablespace_name, data_blocks, empty_blocks FROM dba_free_space WHERE tablespace_name = 'YOUR_TABLESPACE_NAME'; ``` 4. **检查表空间利用率**: ```sql SELECT tablespace_name, round((used_space_in_bytes / data_files.total_bytes) * 100, 2) AS usage_percentage FROM (SELECT tablespace_name, sum(bytes) as total_bytes FROM v$datafile WHERE tablespace_name IN (SELECT tablespace_name FROM dba_tablespace WHERE datafile_type = 'DATAFILE') GROUP BY tablespace_name) data_files, dba_tablespaces WHERE datafiles.tablespace_name = dba_tablespaces.tablespace_name AND dba_tablespaces.tablespace_name = 'YOUR_TABLESPACE_NAME'; ``` 记得在实际操作中替换`YOUR_TABLESPACE_NAME`为您需要查询表空间名。如果你有权限访问更多的细节,可以查阅官方文档或进一步探索更复杂的视图如`v$tablespace`, `v$segment_statistics`等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值