关于oracle分区表删除分区的问题

iamtopcoder 2014-11-07 01:18:58
有个数据库的表数据量很大,根据月份建立了分区,数据量增大后,现在磁盘空间不多了,也不好扩充,造成新数据插入时丢失。
现在想到的是这样:
1、删除某个分区的数据,甚至删除这个月的分区,不知这样是否可以插入数据,
2、有谁有类似经验,请指点下,谢谢

...全文
11975 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
落雷惊虹 2015-02-26
  • 打赏
  • 举报
回复
建议楼主使用truncate分区,如果你要drop一个分区,等以后需要添加这个删除的分区的时候,你就后悔当初把它删除了。
不写代码的钦 2015-02-01
  • 打赏
  • 举报
回复
删除之前先备份数据啊。 alter table xx drop partition part_name; alter table xx truncate partition part_name;
wangqi_521_csdn 2015-01-31
  • 打赏
  • 举报
回复
引用 5 楼 hemowolf 的回复:
[quote=引用 2 楼 zhuomingwang 的回复:] [quote=引用 1 楼 zhuomingwang 的回复:] 新数据插入时丢失。 --如果是由于空间不够,无法插入数据的话,oracle会报错的。甚至可能导致宕机。 可以删除不需要的分区数据。alter table drop partition partition_name;
alter table table_name drop partition partition_name[/quote] +1[/quote]+1
huangdh12 2014-11-07
  • 打赏
  • 举报
回复
ALTER TABLE TABLE_PARTITION DROP PARTITION TAB_PARTOTION_03 UPDATE GLOBAL INDEXES ; 用过drop ,没试过 把drop 改成truncate 是否可以。 但是 建议加上 UPDATE GLOBAL INDEXES ; 不然可能由于索引失效导致无法插入数据
iamtopcoder 2014-11-07
  • 打赏
  • 举报
回复
执行:alter table tablename truncate partition par1201 之后报错: SQL state [72000]; error code [1502]; ORA-01502: 索引 'SYS_C0018552' 或这类索引的分区处于不可用状态, 该怎么弄?求教
iamtopcoder 2014-11-07
  • 打赏
  • 举报
回复
引用 14 楼 xifenfei 的回复:
注意全局index,删除分区可能导致无效
我只是删除分区的数据,并不删除分区,这样会无效吗?另外主键的索引就是全局索引吗?
  • 打赏
  • 举报
回复
注意全局index,删除分区可能导致无效
  • 打赏
  • 举报
回复
把表空间定义成固定大小的,最好不要再设成自动扩展的。 你的担心是没有必要的,只要操作正确就可以了。
iamtopcoder 2014-11-07
  • 打赏
  • 举报
回复
引用 11 楼 wenyzh 的回复:
最好是把目前不需要的分区数据用export备份出来,然后再truncate 分区的数据。分区不占用空间,是数据占用空间。 如果确实不需要的分区,可以drop掉。
谢谢, 补充下我以前这样:ALTER tablespace **table** add datafile '**.DBF' size 20G autoextend on next 512M maxsize unlimited 这个不是办法,毕竟硬盘空间有限, 因此想删除以前的分区数据,不再增加表空间的容量了,不知道可行吗?如果可以,应该注意什么问题? 谢谢
  • 打赏
  • 举报
回复
最好是把目前不需要的分区数据用export备份出来,然后再truncate 分区的数据。分区不占用空间,是数据占用空间。 如果确实不需要的分区,可以drop掉。
iamtopcoder 2014-11-07
  • 打赏
  • 举报
回复
我以前的做法都是给这个表增大表空间,就是增加表空间的数据文件, 但这样不是办法,我想删除一些时间长的分区的数据,不再增加表空间的存储容量,拿不准这样可行吧? 请教大家,谢谢
iamtopcoder 2014-11-07
  • 打赏
  • 举报
回复
引用 7 楼 bw555 的回复:
百度下答案就一大把呢 百度 oracle 删除分区 删除表分区
我查看了许多,但是不太有把握,我这个系统是上线的,所以想先讨论讨论,
iamtopcoder 2014-11-07
  • 打赏
  • 举报
回复
引用 4 楼 zhuomingwang 的回复:
[quote=引用 3 楼 iamtopcoder 的回复:] 执行 alter table table_name drop partition partition_name 后,新数据可以插入数据了吧?
你现在数据无法插入,提示什么错误?[/quote] 具体的我忘了,我给表空间增加了存储之后,就可以插入数据了,我给表空间扩容之后可以新增数据了
引用 6 楼 wildwave 的回复:
也可以truncate分区,一样可以释放空间。但是首先要确定该分区和要插入数据的表属于同一个表空间内
是同一个表空间,就是表空间的数据文件不是一个,也不在一个磁盘分区上,
bw555 2014-11-07
  • 打赏
  • 举报
回复
百度下答案就一大把呢 百度 oracle 删除分区 删除表分区
小灰狼W 2014-11-07
  • 打赏
  • 举报
回复
也可以truncate分区,一样可以释放空间。但是首先要确定该分区和要插入数据的表属于同一个表空间内
小灰狼 2014-11-07
  • 打赏
  • 举报
回复
引用 2 楼 zhuomingwang 的回复:
[quote=引用 1 楼 zhuomingwang 的回复:] 新数据插入时丢失。 --如果是由于空间不够,无法插入数据的话,oracle会报错的。甚至可能导致宕机。 可以删除不需要的分区数据。alter table drop partition partition_name;
alter table table_name drop partition partition_name[/quote] +1
  • 打赏
  • 举报
回复
引用 3 楼 iamtopcoder 的回复:
执行 alter table table_name drop partition partition_name 后,新数据可以插入数据了吧?
你现在数据无法插入,提示什么错误?
iamtopcoder 2014-11-07
  • 打赏
  • 举报
回复
执行 alter table table_name drop partition partition_name 后,新数据可以插入数据了吧?
  • 打赏
  • 举报
回复
引用 1 楼 zhuomingwang 的回复:
新数据插入时丢失。 --如果是由于空间不够,无法插入数据的话,oracle会报错的。甚至可能导致宕机。 可以删除不需要的分区数据。alter table drop partition partition_name;
alter table table_name drop partition partition_name
  • 打赏
  • 举报
回复
新数据插入时丢失。 --如果是由于空间不够,无法插入数据的话,oracle会报错的。甚至可能导致宕机。 可以删除不需要的分区数据。alter table drop partition partition_name;

3,499

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧