ORA-01688:unable to extend table name

由于数据量越来越多,一不小心就把物理文件撑爆了,问过以前一个dba的同事,他说一个物理文件最大只能到32G,有些悲剧,没办法最后只能删除掉一些表分区,再重新建立。 


解决方法: 
http://blog.csdn.net/yuzmoon/article/details/6616613 

在导入数据的时候出现这个错误

产生原因:指定的tablespace空间已经被占用满,无法扩展。

解决方法:使用“ALTER TABLESPACE ADD DATAFILE”命令增加文件系统文件和原始分区,或者增加INITIAL的大小(如:alter tablespace CDRS101 default storage(next 500M pctincrease 1))应该能够解决,否则就是有人使用你的表空间上创建了一个比较大的数据文件导致你的表空间不够用。我没有使用这种方法解决

我为了保证数据的一致性,进行的操作是:先把该表空间删除,然后重新创建一个大点的表空间。然后再次导入数据。(目的:清空该表空间中的数据,保持表空间中的数据正确。)

删除表空间中出现了问题

SQL->drop tablespace XXX including CONTENTS and datafiles; 删除执行的表空间

执行该语句时 出现ora-00054:resource busy and acquire with nowait specified这样的错误

原因:有事务正在执行(或者事务已经被锁),所有导致执行不成功。

 

解决办法:

1、用dba权限的用户查看数据库都有哪些锁

SQL->select object_name,machine,s.sid,s.serial# from v$locked_object l,dba_objects o ,v$session s where l.object_id = o.object_id

and l.session_id=s.sid;

如:testuser 24 111 2009-3-5 17:40:05
知道被锁的用户testuser,sid为24,serial#为111

2、kill该事务
SQL->alter system kill session '24,111'; (其中24,111分别是上面查询出的sid,serial#)
如果该语句没有执行成功,按照下面的操作进行处理

3、如果利用上面的命令杀死一个进程后,进程状态被置为"killed",但是锁定的资源很长时间没有被释放,那么可以在os一级再杀死相应的进程(线程),首先执行下面的语句获得进程(线程)号:
select spid, osuser, s.program from v$session s,v$process p where s.paddr=p.addr and s.sid=24

4、在OS上杀死这个进程(线程):

在unix上,用root身份执行命令: 
#kill -9 12345(即第3步查询出的spid)

在windows(unix也适用)用orakill杀死线程,orakill是oracle提供的一个可执行命令,语法为:
orakill sid thread
其中:
sid:表示要杀死的进程属于的实例名
thread:是要杀掉的线程号,即第3步查询出的spid。
例:c:>orakill orcl 12345 
(注:在windows下的这种操作我没有试过。我用的是Linux)

到此,完全解决。



删除分区这里需要注意: 

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 

原因是truncate 一个分区,则local index会自动维护,但全局index会变成unusable,所以要truncate要带上update global indexes.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22569416/viewspace-1966612/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/22569416/viewspace-1966612/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值