应用背景:
某些情况下,由于前期设计上没有考虑全面,导致表空间预建太大,远远超出实际使用大小。于是,就出现了收缩表空间这样的需求,即将这个表空间的占用空间进行收缩。
处理方案:
对于表空间收缩,Oracle只提供扩大的功能,而不提供收缩。所以,要实现这样的要求,就只能先创建一个中间表空间,然后将待收缩表空间中的数据迁移到这个表空间下
处理方法:
1、找出该表空间下的所有数据对象;
select segment_type, partition_name, segment_name from dba_segments;
2、创建目标空间(不强制创建,但是建议)。
create tablespace dbs_temp datafile 'd:\dbs_temp01.dbf' size 100m;
3、根据对象类型重建或转移对应数据;
对于
table:
alter table xx move tablespace dbs_temp;
对于partition table:
alter table xx move partition xx1 tablespace dbs_temp;
对于
index:
alter index ixx rebuild tablespace dbs_temp;
对于lob字段:
alter table xx move lob(col_name) store as (tablespace dbs_temp);
一般情况下,下面语句基本可以涵盖所有的数据对象了:
select segment_type, segment_name, partition_name,
case segment_type
when 'TABLE' then 'alter table ' || owner || '.' || segment_name || ' move tablespace dbs_temp;',
when 'INDEX' then 'alter index ' || owner || '.' || segment_name || ' rebuild tablespace dbs_temp;',
when 'INDEX PARTITION' then 'alter index ' || owner || '.' || segment_name || ' rebuild tablespace dbs_temp;',
when 'TABLE PARTITION' then 'alter table ' || owner || '.' || segment_name || ' move partition ' || partition_name || 'tablespace dbs_temp;' sqltext
from dba_segments
where tablespace_name = 'FUND_TABLE'
and segment_type not like 'LOB%';
下面是迁移lob字段的
select table_name, column_name, 'alter table ' || owner || '.' || table_name || ' move lob(' || column_name || ') store as(tablespace dbs_temp);' sqltext
from dba_lobs
where tablespace_name = 'FUND_TABLE';
4、删除清空后的表空间;
drop tablespace dbs_old including contents and datafiles;
下面步骤简单了,就不一一列举。
5、如果对表空间名称有要求,则使用原来的表空间名再次创建一个合适大小的表空间。
6、将目标表空间中的数据再迁移回新建的最终的表空间。
分享到:
相关推荐
### Oracle 表空间收缩详解 #### 一、背景与需求 在Oracle数据库管理过程中,合理地管理和优化存储空间是非常重要的工作之一。有时,我们会遇到这样的情况:某个表空间占用的实际物理空间远大于其实际需要的空间,...
以下是对Oracle存储空间管理及应用方案的详细阐述。 首先,Oracle数据库的逻辑结构分为六层,从低到高分别是:数据块(Block)、区(Extent)、段(Segment)、表空间(Tablespace)、表和索引。数据块是数据库的...
例如,定期删除不再使用的临时表,收缩或删除不必要的索引,以及回收未使用的空间。 总之,Oracle存储空间管理涵盖了表空间、数据文件、回滚段、临时表等多个层面,理解并掌握这些概念和管理策略,能够有效地优化...
Oracle数据库是全球广泛使用的大型企业级关系型数据库管理系统,它为各类业务提供了高效、可靠的数据存储和管理解决方案。Oracle日常维护对于确保系统的稳定运行、数据安全以及性能优化至关重要。本手册将详细介绍...
7. **表空间与数据文件**:理解表空间的概念,以及如何创建和管理数据文件,包括扩展和收缩表空间以满足存储需求。 8. **备份与恢复**:掌握Oracle的RMAN(恢复管理器)工具,了解完整备份、增量备份、逻辑备份以及...
管理员需要监控空间使用情况,合理分配表空间,调整数据文件大小,以及进行表空间扩展或收缩。 3. **管理对象和容量**:对象包括表、索引、视图、序列等。创建和管理这些对象涉及到DDL语句,如CREATE TABLE、CREATE...
- **表空间管理**:管理数据库中的表空间,包括创建、扩展、收缩等操作。 - **备份与恢复**:定期进行数据库备份,并掌握基本的恢复流程,以应对意外情况。 - **性能监控**:利用 Oracle 提供的各种工具来监控数据库...
以上内容涵盖了Oracle DBA在日常工作中可能会遇到的一些关键问题及解决方案,包括连接数据库、数据导入、表空间管理、查询表空间和表的使用情况等。这些知识点对于DBA来说是非常重要的,能够帮助他们更高效地管理和...
5. **存储管理**:了解如何合理分配和管理存储资源,包括表空间的创建、扩展和收缩,以及段和区的管理。 6. **备份与恢复**:Oracle的RMAN(Recovery Manager)是用于备份和恢复的重要工具,需要熟悉其基本命令和...
- **管理**:包括创建、扩展和收缩表空间。 #### 五、PL/SQL程序设计 ##### 1. PL/SQL简介 - **定义**:Procedural Language for SQL的简称,是一种专门用于Oracle数据库的编程语言。 - **特点**:结合了SQL和传统...
- 表空间与数据段:如何管理存储空间,包括表空间的创建、扩展和收缩。 3. **数据库管理** - 用户和权限管理:创建、修改和删除用户,以及权限的分配和撤销。 - 数据库备份与恢复:理解RMAN(恢复管理器)和数据...
管理表空间包括创建、扩展、收缩以及分配和回收数据文件。 五、安全性机制 Oracle提供了强大的安全机制,包括用户账户管理、权限和角色、审计、数据加密等。每个用户都有唯一的用户名和口令,通过这些凭证登录。...
这包括合理规划表空间的大小、监控空间使用情况、扩展或收缩数据文件、以及使用Oracle Managed Files (OMF)特性自动化管理。OMF是一个功能强大的工具,可以自动处理数据文件的创建、命名和删除,从而减少DBA的管理...
表空间管理则涉及数据文件、重做日志文件的管理,以及表空间的扩展和收缩。 9. **Les09_chinese.ppt - 高可用性与复制技术** 这部分将讨论Oracle的高可用性解决方案,如RAC(Real Application Clusters)、Data ...
Oracle ASM 是Oracle数据库10g及以后版本的一个关键组件,它可以自动管理磁盘空间,提供高可用性和容错能力。它将多个物理磁盘组织成逻辑卷,称为ASM磁盘组,这些磁盘组可以跨多个磁盘进行条带化或镜像,以提高性能...
在Oracle数据库中,可以建立普通表空间、本地管理表空间、大文件表空间和临时表空间。本地管理表空间使用位图来管理段空间的使用,可以设定为自动分配(AUTOALLOCATE)或统一分配(UNIFORM)。大文件表空间适用于...
- 表空间(Tablespace)管理:如何管理和优化表空间,包括数据文件的扩展、收缩等操作。 - 备份与恢复(Backup and Recovery):介绍Oracle提供的备份工具RMAN,以及如何制定备份策略和执行恢复操作。 #### 五、...
Oracle数据库通过数据块、表空间、段、区等结构来组织和存储数据。 二、Oracle实例与数据库 Oracle实例是由内存结构和后台进程组成的,它与物理数据库文件相连接。当数据库启动时,Oracle实例加载数据字典信息到...
5. **存储管理**:了解表空间、数据段、索引段等概念,以及如何进行空间管理,包括扩展和收缩数据文件,以及数据的迁移和重组。 6. **安全性**:学习Oracle的用户管理和权限控制,如创建用户、角色,分配权限,以及...