5

正如它在Oracle XE 概述页面上所说:

Oracle 数据库 XE 可以安装在具有任意数量 CPU 的任何大小的主机上(每台机器一个数据库),但 XE 将存储多达 4GB 的用户数据,使用多达 1GB 的内存,并在主机上使用一个 CPU。

现在,如果我想监视数据库以查看正在使用的用户数据量或数据库使用的内存量,我该怎么做?可以从 Oracle Application Express 监视这些值,但我想从集中监视系统监视数据库。Oracle XE 文档提供了一个返回 Flash Recovery Area 使用情况的查询,所以我猜也有类似的用户数据使用查询。

SELECT
NAME,
TO_CHAR(SPACE_LIMIT, '999,999,999,999') AS SPACE_LIMIT,
TO_CHAR(SPACE_LIMIT - SPACE_USED + SPACE_RECLAIMABLE,'999,999,999,999')
   AS SPACE_AVAILABLE,
ROUND((SPACE_USED - SPACE_RECLAIMABLE)/SPACE_LIMIT * 100, 1)
   AS PERCENT_FULL
FROM V$RECOVERY_FILE_DEST;

另外,当用户数据超过限制时会发生什么?

4

2 回答 2

6

无耻地取自Oracle FAQ网站,这是一个按表空间检查已用空间的查询:

SELECT /* + RULE */  df.tablespace_name "Tablespace",
       df.bytes / (1024 * 1024) "Size (MB)",
       SUM(fs.bytes) / (1024 * 1024) "Free (MB)",
       Nvl(Round(SUM(fs.bytes) * 100 / df.bytes),1) "% Free",
       Round((df.bytes - SUM(fs.bytes)) * 100 / df.bytes) "% Used"
  FROM dba_free_space fs,
       (SELECT tablespace_name,SUM(bytes) bytes
          FROM dba_data_files
         GROUP BY tablespace_name) df
 WHERE fs.tablespace_name (+)  = df.tablespace_name
 GROUP BY df.tablespace_name,df.bytes
UNION ALL
SELECT /* + RULE */ df.tablespace_name tspace,
       fs.bytes / (1024 * 1024),
       SUM(df.bytes_free) / (1024 * 1024),
       Nvl(Round((SUM(fs.bytes) - df.bytes_used) * 100 / fs.bytes), 1),
       Round((SUM(fs.bytes) - df.bytes_free) * 100 / fs.bytes)
  FROM dba_temp_files fs,
       (SELECT tablespace_name,bytes_free,bytes_used
          FROM v$temp_space_header
         GROUP BY tablespace_name,bytes_free,bytes_used) df
 WHERE fs.tablespace_name (+)  = df.tablespace_name
 GROUP BY df.tablespace_name,fs.bytes,df.bytes_free,df.bytes_used
 ORDER BY 4 DESC;

默认情况下,用户数据是表空间中使用的USERS空间。

至于当你处于极限时会发生什么,我只能猜测:

  • 尝试插入数据时会出现一些空间不足错误(无论如何,一些 Oracle 错误消息似乎总是来自空间不足;-)
  • 你可能会面临一生中最大的检查...
于 2011-03-27T10:46:56.800 回答
1

一个密切相关的问题:用户的表空间使用情况(找出空间的去向):

select owner,tablespace_name,
sum(bytes)/1024/1024 as mbytes
from dba_segments
group by owner,tablespace_name
order by mbytes desc;
于 2015-04-28T15:56:27.490 回答