一次业务数据库回收表空间文件大小经历

背景:oracle业务数据库,单实例的单机环境

场景:由于前期业务数据量掌握不准确,导致预估表空间占用过大,分配表空间总大小过大,导致磁盘空间占用紧张。也给平时的冷备维护带来了很大不利。

回收表空间数据文件大小整体思路

1、新建接受move的表空间

2、查询被move的所有表和索引名称

3、使用alter move所有表和索引到新表空间

4、检查

5、删除旧表空间

6、重命名新表空间为就表空间

7、设置用户默认表空间

下面是整个move操作的详细过程

1.创建一个新的合适大小的表空间,命名为TS_A(实际业务场景中的数据库名称不是这个,这里都是用测试环境代替。重点看思路)

sql>create tablespace TS_A logging datafile '数据文件存放路径/表空间文件名称.dbf' size 合适大小M reuse autoextend on next 10M maxsize unlimited extent management local segment space management auto;

2.查询业务库下面所有的表名称

用dba用户查询

sql>select table_name from  dba_tables where owner='实际业务库用户';

3.查询业务库下面的所有索引名称,要将索引也全部

用dba用户查询

sql>select index_name from dba_indexes from dba_indexes where owner='业务库用户';

4、授权用户

sql>alter user 业务库用户 quota unlimited on TS_A;

5、移动表

将查询到的所有表使用下面的sql语句全部移入新表空间

sql>alter table 表名称 move tablespace TS_A;

6、移索引

将查询到的所有索引全部在新表空间中重建

sql>alter index 索引名 rebuild tablespace TS_A;

7、验证移动情况

sql>select table_name from dba_tables where tablespace_name='TS_A';

sql>sql>select index_name from dba_indexes where tablespace_name='TS_A';

8、删除旧表空间

drop tablespace 旧表空间名称 including contents and datafiles;

9、将新表空间重命名为原表空间名称

sql>alter tablespace 新表空间名称 rename to 原表空间名称

10、设置用户默认表空间

sql>alter user 用户名 default tablespace 原表空间名称 temporary tablespace TEMP;

原创文章,可以转载,请注明出处!否则我也没办法


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值