表空间数据迁移,回收表空间释放空间

        1、查看数据文件所在的位置

 

SQL> select file# ,name from v$datafile;

     FILE#
----------
NAME
--------------------------------------------------------------------------------
	 1
/u01/app/oracle/oradata/oradb/system01.dbf

	 2
/u01/app/oracle/oradata/oradb/sysaux01.dbf

	 3
/u01/app/oracle/oradata/oradb/undotbs01.dbf


     FILE#
----------
NAME
--------------------------------------------------------------------------------
	 4
/u01/app/oracle/oradata/oradb/users01.dbf

       2、创建表空间,用户

SQL> create user joyce identified by joyce default tablespace joyce quota unlimited on joyce;

用户已创建。

SQL> grant connect ,resource to joyce;

授权成功。

SQL> revoke unlimited tablespace from joyce;

撤销成功。

SQL> conn joyce/joyce
已连接。
        3、查看表空间的使用情况

SELECT UPPER(F.TABLESPACE_NAME) "表空间名",
         D.TOT_GROOTTE_MB "表空间大小(M)",
         D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)",
         TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99') || '%' "使用比",
         F.TOTAL_BYTES "已扩展空闲空间(M)",
           (SELECT free_space_mb+free_allocate_mb FROM dba_tablespace_free a where a.tablespace_name= f.tablespace_name) "总剩余空间",
         F.MAX_BYTES "最大块(M)"
         FROM (SELECT TABLESPACE_NAME,
         ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,
         ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES
         FROM SYS.DBA_FREE_SPACE
         GROUP BY TABLESPACE_NAME) F,
         (SELECT DD.TABLESPACE_NAME,
         ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB
         FROM SYS.DBA_DATA_FILES DD
         GROUP BY DD.TABLESPACE_NAME) D
         WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME
         ORDER BY 3 desc;

    4、处理要回收的数据文件

 

select 'alter database datafile ''' || a.FILE_NAME || '''resize ' ||
       8 || 'M;'
  from Dba_Data_Files a
 where Tablespace_name = 'JOYCE';
   5、执行批处理出来的sql 

alter database datafile '/u01/app/oracle/oradata/oradb/joyce01.dbf'resize 8M;
   6、最后执行脚本查看

SELECT UPPER(F.TABLESPACE_NAME) "表空间名",
         D.TOT_GROOTTE_MB "表空间大小(M)",
         D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)",
         TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99') || '%' "使用比",
         F.TOTAL_BYTES "已扩展空闲空间(M)",
           (SELECT free_space_mb+free_allocate_mb FROM dba_tablespace_free a where a.tablespace_name= f.tablespace_name) "总剩余空间",
         F.MAX_BYTES "最大块(M)"
         FROM (SELECT TABLESPACE_NAME,
         ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,
         ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES
         FROM SYS.DBA_FREE_SPACE
         GROUP BY TABLESPACE_NAME) F,
         (SELECT DD.TABLESPACE_NAME,
         ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB
         FROM SYS.DBA_DATA_FILES DD
         GROUP BY DD.TABLESPACE_NAME) D
         WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME
         ORDER BY 3 desc;

这个时候只是把表空间resize最小,运行段时间,最后干掉。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值