ORA-01688:unable to extend table name

本文探讨了Oracle数据库中物理文件大小限制的问题,并详细介绍了如何通过删除和重建表分区来解决这一问题。此外,还对比了局部索引与全局索引的区别,包括它们在分区操作中的不同表现。
由于数据量越来越多,一不小心就把物理文件撑爆了,问过以前一个dba的同事,他说一个物理文件最大只能到32G,有些悲剧,没办法最后只能删除掉一些表分区,再重新建立。


解决方法:
http://blog.youkuaiyun.com/yuzmoon/article/details/6616613


删除分区这里需要注意:

1.分区索引就是在所有每个区上单独创建索引,它能自动维护,在drop或truncate某个分区时不影响该索引的其他分区索引的使用,也就是索引不会失效,维护起来比较方便,但是在查询性能稍微有点影响。

2.全局索引就是在全表上创建索引,它可以创建自己的分区,可以和分区表的分区不一样,也就是它是独立的索引。

在drop或truncate某个分区时需要创建索引alter index idx_xx rebuild,也可以通过alter table table_name drop partition partition_name update global indexes;实现,但是如果数据量很大则要花很长时间在重建索引上。

3.oracle会对主键自动创建全局索引

这两种删除分区分别为
alter talbe scdw.dw_busi_user_t_test truncate partition PART01

alter talbe scdw.dw_busi_user_t_test truncate partition PART01 update global indexes

[color=red]原因是truncate 一个分区,则local index会自动维护,但全局index会变成unusable,所以要truncate要带上update global indexes.[/color]
ORA-01653 错误表明 Oracle 数据库无法为特定表扩展指定大小的数据块(例如 128 个数据块)在对应的表空间中。此错误通常与数据库存储管理相关,可能由多种原因引起,以下是常见的原因及相应的解决方法。 ### 原因分析 1. **表空间不足** 表空间的可用空间不足以满足扩展需求,可能是由于磁盘容量已满或分配的初始大小和增长限制过小[^1]。 2. **数据文件达到最大大小限制** 如果数据文件设置了 `MAXSIZE` 参数,并且当前已达到该限制,则无法继续扩展[^1]。 3. **数据文件未启用自动扩展功能** 数据文件如果没有设置 `AUTOEXTEND ON`,则不会自动增加大小,导致无法扩展表段[^1]。 4. **操作系统级别的限制** 操作系统对文件大小或数量的限制也可能导致 Oracle 无法扩展表空间。 5. **碎片化问题** 表空间中可能存在大量碎片,即使总空间足够,但连续的空间不足以满足扩展请求。 ### 解决方法 1. **增加表空间容量** - 添加新的数据文件到现有表空间: ```sql ALTER TABLESPACE your_tablespace ADD DATAFILE '/path/to/datafile.dbf' SIZE 500M AUTOEXTEND ON NEXT 50M MAXSIZE UNLIMITED; ``` - 扩展现有数据文件的大小(如果支持): ```sql ALTER DATABASE DATAFILE '/path/to/existing_datafile.dbf' RESIZE 1G; ``` 2. **调整数据文件的自动扩展参数** - 启用数据文件的自动扩展功能: ```sql ALTER DATABASE DATAFILE '/path/to/datafile.dbf' AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED; ``` - 确保 `MAXSIZE` 设置合理,避免超出实际可用存储。 3. **检查并释放空间** - 清理不再需要的对象(如临时表、索引等),释放表空间: ```sql DROP TABLE obsolete_table PURGE; ``` - 对于大型表,考虑使用 `ALTER TABLE MOVE` 或分区策略来重组表,减少碎片化。 4. **监控表空间使用情况** - 定期运行查询以监控表空间使用情况: ```sql SELECT a.tablespace_name, a.bytes / 1024 / 1024 "Total MB", (a.bytes - b.free) / 1024 / 1024 "Used MB", b.free / 1024 / 1024 "Free MB", ROUND((b.free / a.bytes) * 100, 2) "Free %" FROM (SELECT tablespace_name, SUM(bytes) bytes FROM dba_data_files GROUP BY tablespace_name) a, (SELECT tablespace_name, SUM(bytes) free FROM dba_free_space GROUP BY tablespace_name) b WHERE a.tablespace_name = b.tablespace_name(+); ``` 5. **优化存储配置** - 考虑将频繁扩展的对象分配到独立的表空间,便于管理和优化。 - 使用 ASM(Automatic Storage Management)或其他存储管理工具来简化存储扩展和管理。 6. **操作系统层面调整** - 检查文件系统的配额限制或磁盘空间是否充足。 - 如果使用的是 LVM(逻辑卷管理器),可以考虑扩展逻辑卷的大小。 ### 总结 ORA-01653 是一个与存储相关的常见 Oracle 错误,主要涉及表空间和数据文件的管理。通过上述方法可以有效排查并解决此类问题。建议定期进行表空间健康检查,确保自动扩展功能正常启用,并合理规划存储资源。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值