首页 > 代码库 > 表空间(下)

表空间(下)

7.表空间的使用大小

-- 查看表空间已使用情况
select a.tablespace_name,
       round(a.bytes / 1024 / 1024) "Sum MB",
       round((a.bytes - b.bytes) / 1024 / 1024) "used MB",
       round(b.bytes / 1024 / 1024) "free MB",
       round(((a.bytes - b.bytes) / a.bytes), 2) "percent_used"
  from (select tablespace_name, sum(bytes) bytes
          from dba_data_files
         group by tablespace_name) a,
       (select tablespace_name, sum(bytes) bytes, max(bytes) largest
          from dba_free_space
         group by tablespace_name) b
 where a.tablespace_name = b.tablespace_name
 order by ((a.bytes - b.bytes) / a.bytes) desc;

 NOTES:如果运行很久都没得到结果,则查看各个用户下的垃圾箱,
 可能是垃圾箱堆积了太多数据导致的
 (select * from recyclebin或select * from dba_recyclebin),
 然后用下面的命令清理掉该用户的垃圾箱。
 (必须各个用户都执行一遍,也可以直接用purge dba_recyclebin命令,
 但如果和其他模块一起使用同一数据库,不建议这么操作,因为其他用户的垃圾箱数据可能有用。)
SQL>purge recyclebin;
 
select file#,name,bytes/1024/1024 from v$tempfile;      -- 临时表空间总大小
select tablespace, (sum (blocks))*8/1000 "MB" from v$sort_usage group by tablespace;    -- 临时表空间已使用情况


-- 临时表空间使用情况:
Select f.tablespace_name,
       sum(f.bytes_free + f.bytes_used) / (1024 * 1024) "total MB",
       sum((f.bytes_free + f.bytes_used) - nvl(p.bytes_used, 0)) / (1024 * 1024) "Free MB",
       sum(nvl(p.bytes_used, 0)) / (1024 * 1024) "Used MB"
  from sys.v_$temp_space_header f,
       dba_temp_files           d,
       sys.v_$temp_extent_pool  p
 where f.tablespace_name(+) = d.tablespace_name
   and f.file_id(+) = d.file_id
   and p.file_id(+) = d.file_id
 group by f.tablespace_name;

 

8.修改表的表空间
  alter table a move tablespace TBS_DW_YM

9.查询imuse01用户所使用的缺省表空间
select default_tablespace from dba_users where username=’imuse01’;

表空间(下)