如何获取Oracle数据库中DROP PARTITION操作删除的行数?
在Oracle中执行DROP PARTITION时获取被删除行数
要在执行ALTER TABLE <Table_Name> DROP PARTITION PART_<Name>操作时获取被删除的行数,且不提前统计分区数据,可通过以下步骤实现:
- 执行DROP PARTITION时不添加PURGE关键字,让被删除的分区进入回收站:
ALTER TABLE <Table_Name> DROP PARTITION PART_<Name>; - 查询回收站视图
USER_RECYCLEBIN,定位刚删除的分区对应的回收站表对象:
这里的SELECT object_name, original_name, type FROM user_recyclebin WHERE original_name = '<Table_Name>' AND type = 'TABLE PARTITION' ORDER BY droptime DESC;object_name是分区被放入回收站后的临时表名,格式通常为BIN$xxxxxx$0。 - 查询该回收站临时表的行数,即为被删除的分区数据量:
注意回收站表名需要用双引号包裹,因为包含特殊字符。SELECT COUNT(*) AS deleted_rows FROM "BIN$xxxxxx$0"; - 如果不需要保留回收站中的该分区,可执行清理:
PURGE TABLE <Table_Name>; -- 或者精准清理单个分区对象 PURGE TABLE PARTITION <Table_Name>.PART_<Name>;
另外,若你的Oracle版本支持,也可以通过**启用细粒度审计(FGA)**捕获DROP PARTITION操作的相关数据量,但这种方式需要提前配置审计策略,复杂度较高,适合需要长期监控的场景。
内容的提问来源于stack exchange,提问作者Venkatesh R
相关产品推荐
相关产品推荐

