在Oracle SQL Developer中查找数据库大小

6
在phpmyadmin中,可以查看数据库磁盘使用情况。我想知道在Oracle SQL Developer中是否有类似的功能。谢谢!
5个回答

4
select nvl(b.tablespace_name,
         nvl(a.tablespace_name,'UNKNOWN'))
         tablespace_name,
       kbytes_alloc kbytes,
       kbytes_alloc-nvl(kbytes_free,0) 
         size_alloc_bytes,
       round(((kbytes_alloc-nvl(kbytes_free,0))/
         kbytes_alloc)*200) used_chart,
       to_char(((kbytes_alloc-nvl(kbytes_free,0))/
         kbytes_alloc)*100,
         '999G999G999G999G999G999G990D00') ||'%' used,
       data_files
  from ( select sum(bytes)/1024/1024 Kbytes_free,
              max(bytes)/1024/1024 largest,
              tablespace_name
       from  sys.dba_free_space
       group by tablespace_name ) a,
     ( select sum(bytes)/1024/1024 Kbytes_alloc,
              tablespace_name, count(*) data_files
       from sys.dba_data_files
       group by tablespace_name )b
 where a.tablespace_name (+) = b.tablespace_name

Source


我得到了“sys.dba_data_files”不存在的错误。 - obesechicken13

2
select sum(bytes) Bytes,
round(sum(bytes)/power(1000,1)) KiloBytes,
round(sum(bytes)/power(1000,2)) MegaBytes,
round(sum(bytes)/power(1000,3)) GigaBytes,
round(sum(bytes)/power(1000,4)) TeraBytes,
round(sum(bytes)/power(1000,5)) PetaBytes,
round(sum(bytes)/power(1000,6)) ExaBytes,
round(sum(bytes)/power(1000,7)) ZettaBytes,
round(sum(bytes)/power(1000,8)) YottaBytes
from dba_data_files;

确保您使用sysdba权限登录以运行此脚本。


2
我建议使用SQL Developer(Raptor)的Insider扩展程序。 下载链接

我喜欢这个软件,但每次尝试打开内部视图时,SQL Developer都会挂起。如何解决?谢谢。 - Stan
我曾经在一些EA版本中遇到过问题,但最新的SQL Developer版本没有出现问题。我还拥有一个10.2.0.4数据库的完全权限。 - Gary Myers
可能是因为没有完全的数据库权限。但是有没有错误需要追踪呢?谢谢。 - Stan

1
一个Oracle数据库由数据文件、重做日志文件、控制文件和临时文件组成。实际上,数据库的大小指的是所有这些文件的总大小。
select 
( select sum(bytes)/1024/1024/1024 data_size from dba_data_files ) +
( select nvl(sum(bytes),0)/1024/1024/1024 temp_size from dba_temp_files ) +
( select sum(bytes)/1024/1024/1024 redo_size from sys.v_$log ) +
( select sum(BLOCK_SIZE*FILE_SIZE_BLKS)/1024/1024/1024 controlfile_size from v$controlfile) "Size in GB"
from
dual

Source: http://nimishgarg.blogspot.com/2010/05/oracle-total-size-of-database.html


1
如果在Grid Control中监控了DB,则在emrep数据库中执行此查询(DB大小历史记录):


SELECT DECODE(m.metric_column, 'ALLOCATED_GB', 'ALLOCATED_GB', 'USED_GB', 'USED_GB') AS bb,
  m.rollup_timestamp AS rollup_timestamp,
  SUM(m.average) AS value
FROM mgmt$metric_daily m,
  mgmt$target_type t
WHERE t.target_guid=
  (SELECT target_guid FROM mgmt$target WHERE target_name='ORCL' /* Your DB name <em>/
  )
AND (t.target_type ='rac_database'
OR (t.target_type ='oracle_database'
AND t.TYPE_QUALIFIER3 != 'RACINST'))
AND m.target_guid =t.target_guid
AND m.metric_guid =t.metric_guid
AND t.metric_name ='DATABASE_SIZE'
AND (t.metric_column ='ALLOCATED_GB'
OR t.metric_column ='USED_GB')
AND m.rollup_timestamp >= '01.01.2010' /</em> Start date */
AND m.rollup_timestamp <= SYSDATE
AND DECODE(m.metric_column, 'ALLOCATED_GB', 'ALLOCATED_GB', 'USED_GB', 'USED_GB')='USED_GB'
GROUP BY DECODE(m.metric_column,'ALLOCATED_GB','ALLOCATED_GB','USED_GB','USED_GB'),
  m.rollup_timestamp
ORDER BY 2;


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接