设为首页 加入收藏

TOP

[转]使用SQL脚本查看表空间使用率和使用dba_tablespace_usage_metrics视图的区别(二)
2014-11-23 22:14:10 来源: 作者: 【 】 浏览:27
Tags:使用 SQL 脚本 查看 空间 使用率 dba_tablespace_usage_metrics 区别
808525471

TEMP 0 4194302 0

UNDOTBS1 288 4194302 .006866458

USERS 24 4194302 .000572205

而下面是用SQL脚本查询到的表空间使用率情况,出入很大:

TABLESPACE_NAME SUM_SPACE SUM_BLOCKS USED_SPACE USED_RATE FREE_SPACE

---------- ---------- ---------- ---------- ---------- ----------

SYSAUX 140M 17920 129.56M 92.54% 10.44M

SYSTEM 300M 38400 265M 88.33% 35M

TEMP 20M 2560 16M 80% 4M

UNDOTBS1 200M 25600 19.31M 9.66% 180.69M

USERS 5M 640 .19M 3.8% 4.81M

下面测试对于自动扩展和非自动扩展的表空间,两种方法的查询结果:

1、创建表空间

TS1:自动扩展;

TS2:非自动扩展。

SQL> create tablespace TS1 datafile 'E:\oracle\product\10.2.0\oradata\ORCL\DATAFILE\ts01.dbf' size 100M autoextend on next 10M maxsize 1G;

表空间已创建。

SQL> create tablespace TS2 datafile 'E:\oracle\product\10.2.0\oradata\ORCL\DATAFILE\ts02.dbf' size 100M autoextend off;

表空间已创建。

2、分别使用两种方法查看表空间情况

(1)、使用DBA_TABLESPACE_USAGE_METRICS视图

SQL> select * from dba_tablespace_usage_metrics where tablespace_name in ('TS1','TS2');

TABLESPACE_NAME USED_SPACE TABLESPACE_SIZE USED_PERCENT

------------------------------ ---------- --------------- -------

TS1 0 131072 0

TS2 0 12800 0

(2)、使用SQL脚本查看

TABLESPACE_NAME SUM_SPACE SUM_BLOCKS USED_SPACE USED_RATE FREE_SPACE

--------------- ---------- ---------- ---------- ----------

TS1 100M 12800 .06M .06% 99.94M

TS2 100M 12800 .06M .06% 99.94M

3、分别在两个表空间创建一样的表,插入数据

SQL> create table tt1 tablespace ts1 as select * from dba_objects;

表已创建。

SQL> insert into tt1 select * from dba_objects;

已创建11334行。

SQL> insert into tt1 select * from dba_objects;

已创建11334行。

SQL> insert into tt1 select * from dba_objects;

已创建11334行。

SQL> insert into tt1 select * from dba_objects;

已创建11334行。

SQL> insert into tt1 select * from dba_objects;

已创建11334行。

SQL> commit;

提交完成。

SQL> create table tt2 tablespace ts2 as select * from dba_objects;

表已创建。

SQL> insert into tt2 select * from dba_objects;

已创建11335行。

SQL> insert into tt2 select * from dba_objects;

已创建11335行。

SQL> insert into tt2 select * from dba_objects;

已创建11335行。

SQL> insert into tt2 select * from dba_objects;

已创建11335行。

SQL> insert into tt2 select * from dba_objects;

已创建11335行。

SQL> commit;

提交完成。

4、再用两种方法查看表空间使用情况

SQL> select * from dba_tablespace_usage_metrics where tablespace_name in ('TS1','TS2');

TABLESPACE_NAME USED_SPACE TABLESPACE_SIZE USED_PERCENT

--------------- ---------- --------------- ------------

TS1 896 131072 .68359375

TS2 896 12800 7

通过对比,表空间TS1和TS2实际使用的空间是一致的,都是896个block。但对于可以扩展的表空间TS1,这里表空间的最大值为131072个block,即指定的可以扩展到的1G。由此,计算出的使用率也就出现了偏差。因此,对于自动扩展的表空间,DBA_TABLESPACE_USAGE_METRICS视图就不那么适用了。

使用脚本:

TABLESPACE_NAME SUM_SPACE SUM_BLOCKS USED_SPACE USED_RATE FREE_SPACE

--------------- ---------- ---------- ---------- ----------

TS1 100M 12800 7.06M 7.06% 92.94M

TS2 100M 12800 7.06M 7.06% 92.94M

可以看出,通过脚本查询出的结果,两个表空间的使用率是一致的。

总结:

对于非自动扩展的表空间,使用DBA_TABLESPACE_USAGE_METRICS视图,与传统脚本使用的DBA_DATA_FILE和DBA_FREE_SPACE查询的结果是一致的。

对于自动扩展的表空间,DBA_TABLESPACE_USAGE_METRICS视图查询的结果就不准确了,还要使用传统的方法查询。

转自:http://blog.itpub.net/25744374/viewspace-774253

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Sql分页查询效率分析 下一篇sqlite3脚本的使用

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: