Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1098402
  • 博文数量: 414
  • 博客积分: 10030
  • 博客等级: 上将
  • 技术积分: 4440
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-05 21:42
文章分类

全部博文(414)

文章存档

2011年(1)

2009年(1)

2008年(412)

我的朋友

分类: Oracle

2008-10-12 18:35:08

今天客户那边有个数据文件坏了,数据库未做备份,幸好对应的分区表都是些历史数据,数据丢了也就算了。
但要删除该表空间时报分区表也被包含在其它表空间,不能删除。解决方法也挺简单,
主要使用exchange语法将分区和另一个新建的临时表进行交换即可。
 
2、解决方案
1) 首先创建一个结构和分区表一致的临时表,不要有数据。
SQL> create table test as select * from t1 where 1=2;
Table created.
2) 交换这个临时表和出问题的分区。
WITHOUT VALIDATION语法是指临时表中的数据移动到分区中不必检验分区键的分区范围,即
临时表中的数据即使不在p2分区的范围内,也会移动到分区p2中;如果想进行检验的话,就要使
用WITH VALIDATION语法,或者就不写这段,缺省是要检验的。
1.建立临时表
create table D_ZPZH_hash1 as select * from D_ZPZH_hash where 1=2
2.交换数据
ALTER TABLE D_ZPZH_hash EXCHANGE PARTITION t_hash_p3 WITH TABLE D_ZPZH_hash1 WITHOUT VALIDATION
3.drop table space
drop tablespace tbspart03  including contents and datafiles
4.ok
阅读(1171) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~