首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Oracle11gR2可以删除数据文件以减少表空间吗?

Oracle11gR2可以删除数据文件以减少表空间吗?
EN

Database Administration用户
提问于 2019-11-13 20:44:36
回答 1查看 578关注 0票数 0

我有以下疑问,也许有点傻,如果我有一个155GB的表空间,这个表空间是由5个数据文件组成,每个数据文件每个31 GB,而这些数据文件的使用率在3%到4%之间.我的问题是:我可以删除其中一些数据文件来缩小表空间的大小吗?这些数据文件所包含的信息将自动重新定位到其余的数据文件中?先谢谢你。

EN

回答 1

Database Administration用户

发布于 2019-11-15 10:23:23

您可以使用DROP DATAFILEALTER TABLESPACE删除数据文件,该数据文件是空的(没有从其中分配的区段)。

示例:

代码语言:javascript
运行
复制
ALTER TABLESPACE <tablespace_name> DROP DATAFILE '/path/datafile_name';

但是,如果数据文件不是空的,则需要运行类似于表空间映射的操作,以查看从中分配了哪些对象区段。您可以使用此脚本,但还有其他可搜索的脚本,它们提供了相当好的输出。

代码语言:javascript
运行
复制
SELECT   
  'free space' owner, null OBJECT, null segment_type, file_id, block_id, blocks
FROM dba_free_space
WHERE tablespace_name = UPPER ('&Tblspc')
UNION
SELECT   
  owner, segment_name, segment_type, file_id, block_id, blocks
FROM dba_extents
WHERE tablespace_name = UPPER ('&Tblspc')
ORDER BY 4, 5;

一旦在要删除的数据文件中找到对象,就可以将它们重新组织到相同的表空间(这可能会将它们放入其他数据文件中的空闲空间)或其他表空间。

下面是一些用于移动表和索引的示例命令。

代码语言:javascript
运行
复制
ALTER TABLE <table_name> MOVE TABLESPACE <tablespace_name>;
ALTER INDEX <index_name> REBUILD TABLESPACE <tablespace_name>;

使用这些示例时,不要忘记根据需要添加存储和统计子句。

您也可以尝试调整数据文件的大小,但这只会达到分配的范围。这意味着,如果有一个范围一半的数据文件,您将只能调整它的50%。您也可以使用表空间映射来检查这些数据,或者通过尝试和错误进行检查。

代码语言:javascript
运行
复制
ALTER DATABASE DATAFILE '/path/datafile_name' RESIZE <new_size>;
票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/253214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档