8i的数据库,Show parameter undo_tablespace;怎么没东西显示啊?

解决方案 »

  1.   


    Connected to Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 
    Connected as SYSSQL> SHOW PARAMETER UNDO_MANAGEMENTNAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    undo_management                      string      AUTO
      

  2.   

    考虑到系统开销,对于undo表空间,oracle同样不会实时收缩,而是由参数undo_retention指定时间去释放,默认是10800秒(3小时)释放一次。 
    DBA_UNDO_EXTENTS中记录的是undo表空间中的extents的使用情况。其中status有三个可能的值:
    ACTIVE,当前正在使用
        UNEXPIRED ,已经不再使用,但还没有超出参数undo_retention的时间
    EXPIRED,已经不再使用,且超出了undo_retention的时间设置,在oracle指定时间点释放时,这部分会被释放掉。
    至于说查询方式是否正确,这主要取决于你希望得到的结果,如果你想知道当前active的undo extents被哪些进程使用,可以使用下面的查询:
    select max(used_ublk) FROM V$TRANSACTION;另外,你可以使用如下查询得到表空间的使用率:
    select f.tablespace_name tablespace_name,
           round((d.sumbytes / 1024 / 1024)) total_m,
           round((d.sumbytes - f.sumbytes) / 1024 / 1024) used_m,
           round(f.sumbytes / 1024 / 1024, 2) free_m,
           round((d.sumbytes - f.sumbytes) * 100 / d.sumbytes, 2) || '%' used_percent,
           round((f.sumbytes) * 100 / d.sumbytes, 2) || '%' free_percent
      from (select tablespace_name, sum(bytes) sumbytes
              from dba_free_space
             group by tablespace_name) f,
           (select tablespace_name, sum(bytes) sumbytes
              from dba_data_files
             group by tablespace_name) d
     where f.tablespace_name = d.tablespace_name(+)
     order by (d.sumbytes - f.sumbytes) * 100 / d.sumbytes desc;