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

原创 2018年04月17日 14:27:30

背景: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;

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


Java业务分析实例

业务设计是整个项目中的灵魂所在,更是一位有经验的开发者必备的从业技能。本课程在读者学习完Java课程的基础之上进行全面深入的实例分析。官方QQ群:612148723。
  • 2016年12月31日 20:37

Oracle 回收表空间文件空闲的空间

我们知道Oracle对于使用DELETE删除的数据,表空间的剩余空间并不会增加。虽然数据已经删除了,但是已使用的空间还是那么大。这就造成了一个现象,当一个表空间使用率达到100%的时候,我们通过删除一...
  • sunansheng
  • sunansheng
  • 2016-05-19 15:03:31
  • 11447

数据文件大小限制、表空间大小限制、数据文件大小限制翻译mos文章(文档 ID 1372905.1)

表空间的最大值和数据库的限制 What Is The Maximum Tablespace Size And Database Limit For An Oracle Database ? 适用...
  • huoshuyinhua
  • huoshuyinhua
  • 2016-05-10 09:25:32
  • 568

Oracle 高水位说明和释放表空间,加快表的查询速度

高水位的介绍 数据库运行了一段时间,经过一些列的删除、插入、更改操作有些表的高水位线就有可能和实际的表存储数据的情况相差特别多,为了提高检索该表的效率,建议对这些表进行收缩; 查找...
  • goodyuedandan
  • goodyuedandan
  • 2017-05-25 13:14:33
  • 1289

单个数据文件大小解析

后来查了查资料,发现表空间数据文件容量与DB_BLOCK_SIZE有关,在初始建库时,DB_BLOCK_SIZE要根据实际需要,设置为4K,8K、16K、32K、64K等几种大小,ORACLE的物理文...
  • xinshi_whpu
  • xinshi_whpu
  • 2009-12-27 18:40:00
  • 598

修改表空间数据文件大小

SQL> SELECT d.tablespace_name,             to_char(nvl(a.bytes / 1024 / 1024 / 1024, 0), '99,999,990...
  • EVISWANG
  • EVISWANG
  • 2015-12-10 09:48:18
  • 2026

MySQL表空间回收

MySQL释放空间
  • php521php
  • php521php
  • 2015-04-18 12:58:58
  • 18259

回收表空间的几个方法

回收表空间有以下几个方法: 1. drop and recreate 2.truncate and restore with backup 3. alter table move tablespac...
  • S630730701
  • S630730701
  • 2017-02-08 10:29:22
  • 1746

ORACLE表空间的回收脚本

  • 2009年02月25日 11:39
  • 2KB
  • 下载

如何回收表空间占用空间,释放你的存储空间---实验

如何回收表空间占用空间,释放你的存储空间 一、创建表空间 SQL> create tablespace sunhua datafile '/u01/app/oracle/oradata/PROD/...
  • moses19
  • moses19
  • 2017-08-03 10:16:52
  • 303
收藏助手
不良信息举报
您举报文章:一次业务数据库回收表空间文件大小经历
举报原因:
原因补充:

(最多只允许输入30个字)