Database Oracle 11G可用空间

Database Oracle 11G可用空间,database,oracle,oracle11g,Database,Oracle,Oracle11g,因此,我在Linux服务器上运行了一个Oracle 11G实例。如何验证数据库还可以包含多少数据 这个问题有点曲折 我正在应用程序上运行负载测试。数据库服务器开始在数据库所在的/u0X/文件系统中耗尽可用空间。40GB中只剩下93MB可用空间。我指示我的应用程序删除数据库中的大部分数据,结果它删除了。但是/u0X/上的可用空间保持不变-93MB asktom解释说,一旦数据被删除,它本身就不会被标记为“空闲空间”,表空间上的“空闲空间”也不会增加。相反,数据库重用已经占用但标记为删除空间或smt

因此,我在Linux服务器上运行了一个Oracle 11G实例。如何验证数据库还可以包含多少数据

这个问题有点曲折

我正在应用程序上运行负载测试。数据库服务器开始在数据库所在的/u0X/文件系统中耗尽可用空间。40GB中只剩下93MB可用空间。我指示我的应用程序删除数据库中的大部分数据,结果它删除了。但是/u0X/上的可用空间保持不变-93MB

asktom解释说,一旦数据被删除,它本身就不会被标记为“空闲空间”,表空间上的“空闲空间”也不会增加。相反,数据库重用已经占用但标记为删除空间或smth之类的内容

所以再一次。。。我如何关注我的数据库可以包含多少数据?我如何知道我是否应该考虑应用程序在它开始在有异常的日志中运行并返回http:500 s?< /p>之前再次清除它的数据。 编辑:对西里尔答案的回复

TABLESPACE_NAME                MEGS_ALLOC  MEGS_FREE  MEGS_USED   PCT_FREE   PCT_USED        MAX
------------------------------ ---------- ---------- ---------- ---------- ---------- ----------
APP01                               34920         27      34893          0        100      65536
SIGNSERVER                             10          7          3         70         30      32768
SYSAUX                               1120         63       1057          6         94      32768
SYSTEM                               4290          1       4289          0        100      32768
TEMP                                 1345       1343          2        100          0      32768
UNDOTBS1                             1090        759        331         70         30      32768
USERS                                   5          4          1         74         26      32768

7 rows selected.
编辑2


自由空间不会返回给操作系统,但这并不意味着数据库中没有自由空间。您必须查看表空间的使用情况,表空间是数据所在的逻辑空间,如果您删除了表空间中的所有内容,则可以通过调整数据文件的大小在操作系统级别回收空间

以下是可用于检查表空间使用情况的脚本:

您可以使用此报告来验证通过调整数据库数据文件的大小可以在操作系统级别回收多少空间:

表空间使用和释放的空间 Oracle ASM磁盘组使用和释放的空间
我已经用查询的输出编辑了我的问题。我很确定我还有超过27MB的剩余空间:而且我对将这些空间回收回操作系统不感兴趣。我很想知道当前数据库的状态空间是什么?您是否可以执行以下查询:从dba_段中选择segment_type,sumbytes/power1024,2作为大小MB,其中tablespace_name='APP01'按segment_type分组;见编辑2。粘贴输出,因为它是多行数据。如果您的表空间中有数据,您的应用程序没有正确删除数据。我没有说我已经删除了所有数据。我删除了其中一些>50%并重新启动了负载测试。这是否意味着32 GB的blob已经占用了数据库?
SQL> select segment_type,sum(bytes/power(1024,2)) as "Size MB" from dba_segments where tablespace_name='APP01' group by segment_type;
SEGMENT_TYPE          Size MB
------------------ ----------
LOBINDEX          92,5625
LOBSEGMENT        31702,5625
TABLE             1857
INDEX             1241,125
SELECT tablespace_name,
       size_mb,
       free_mb,
       max_size_mb,
       max_free_mb,
       TRUNC((max_free_mb/max_size_mb) * 100) AS free_pct,
       RPAD(' '|| RPAD('X',ROUND((max_size_mb-max_free_mb)/max_size_mb*10,0), 'X'),11,'-') AS used_pct
FROM   (
        SELECT a.tablespace_name,
               b.size_mb,
               a.free_mb,
               b.max_size_mb,
               a.free_mb + (b.max_size_mb - b.size_mb) AS max_free_mb
        FROM   (SELECT tablespace_name,
                       TRUNC(SUM(bytes)/1024/1024) AS free_mb
                FROM   dba_free_space
                GROUP BY tablespace_name) a,
               (SELECT tablespace_name,
                       TRUNC(SUM(bytes)/1024/1024) AS size_mb,
                       TRUNC(SUM(GREATEST(bytes,maxbytes))/1024/1024) AS max_size_mb
                FROM   dba_data_files
                GROUP BY tablespace_name) b
        WHERE  a.tablespace_name = b.tablespace_name
       )
ORDER BY size_mb desc;
SELECT name, free_mb, total_mb, round(free_mb/total_mb*100) as pct_free FROM v$asm_diskgroup order by TOTAL_MB desc;