在linux系统下的oracle数据库里建立一个10万记录的新表(硬件:SCSI硬盘的新购买的服务器),然后对这个表执行 truncate table 表名,发现超慢,竟然花了6分多钟(执行这样的测试,是因为这个服务器执行一些truncate数据处理时,会出现连续执行几个小时一直运行的情况)。而拿这些测试表及数据到本地配置很普通的系统环境跟远程服务器一样的机器上测试,却只有0.1秒。碰到这个难题研究了很久,还是找不出原因,请各位帮忙指点下,谢谢!
解决方案 »
- 关于ORACLE对大表操作的效率问题
- 求助:occi运行出现的getString()问题和getInt()问题
- 我又一个疯狂的想法!请各位ORACLE达人指点迷津,谢谢!
- 各位大侠,救救我了,急....谢谢.....
- 字符串处理问题!!! 着急!!
- 求一个sql语句~在线等~~非常急!
- 我写了一个用ado连接oracle数据库的程序,但是不能更新表的数据?
- oracle中,设定varchar2长度为4000,(最大只能存4000),为什么存到1333就不行了,多一个都不行,报 ORA-01480:trailling missing from STR bin
- Oracle网站上的Oracle9i for Linux的版本得怎么下载啊?
- 可以在触发器查到更改表的SESSION吗?
- 求助大家一个批量查询身份证和出生日期SQL
- delete删除数据,是不是么库的高水线不会降低????
1.drop并重新create该表
2.打修复Bug 3282805 的补丁
3.打9.2.0.5或更高版本的补丁
4.升级到10g
看看truncate时在等什么.
1.TRUNCATE TABLE XXXX REUSE STORAGE
2.ALTER TABLE XXXX DEALLOCATE UNUSED KEEP XXXXM这样一部分一部分的回收空间
不是HWM下,应该是所有属于表的extent
说明一下:上述问题用的是10g,多建了几个重做日志后,truncate明显快了,但10万记录的表也还要2~3秒;而且偶尔也还会出现一次truncate占用较久时间的情况(不知道是不是业务在跑引起资源竞争的问题还是...)。
请各位再帮忙分析指点下
v$session,v$lock,v$session_event看是否有哪些等待事件