这样的工作我们通常称为house keeping,放在夜间批处理中执行是一种比较合适的方法。那样对delete操作的时间就不是很敏感,即使跑上半个小时也不会对系统有太大的影响。
至于数据块的碎片,应该在短期内影响不大,可以定期地执行重建表的工作以完全消除数据碎片,这也可以放在夜间批处理中执行,比如每个月执行一次。
至于数据块的碎片,应该在短期内影响不大,可以定期地执行重建表的工作以完全消除数据碎片,这也可以放在夜间批处理中执行,比如每个月执行一次。
解决方案 »
- PL/SQL到底是一门语言还是一种工具啊?
- 启动oracle监听器的时候,提示系统找不到指定文件
- 请教oralce中查询数据横向显示
- oracle 致命的双工通信协议错误
- 9i通过透明网关连接SQLServer2000太慢有何解决方法?
- 数据迁移,求救!!!!!
- 带参数的存储过程 发生奇怪的错误 请帮帮忙~
- SQL 语句在Oracle中分离字符串
- 判断表是否存在 存在的话就删除 只能用sqlplus实现
- 又来提问了,还是关于SQL的问题,高分相送!!!!!!!!!!
- 急!oracle8.1.6中数据库新建问题..
- 200分救命:windows连接linux下的Oracle数据库服务器:神啊,救救我吧!!!
至于重建表的操作过程,倒是非常简单:
1、可以用exp/imp:exp整个表空间,drop掉表空间,重建生成表空间,然后imp
2、用临时schema和表空间:建立一个临时用户和相应的表空间,把所有的表数据倒入临时schema中;删除掉原来的表,然后导回;最后清理到临时用户和临时表空间。这些工作挺繁复的,而且要非常小心,一定要dba的参与。
如果没有,那有没有这种需求?你看我可不可以当你们的DBA啊? :)
如果没有,那有没有这种需求?你看我可不可以当你们的DBA啊? :)
我们这里缺Oracle高手,可惜我不是头,我要是的话,一定花重金礼聘弱水大哥过来,正好在高手的身边学习成长:)
不过大哥你都要去瑞典了:(
呵呵,说的没有错,在半夜做,一般是没有问题的,
你可以写成单独的过程,在job里调用它,关于碎片问题,也有合并碎片的命令,也可以写在过程中定期调用
--------------
你们真该要一个DBA,否则,你们的备份怎么办
最好按某个条件分批删除,而这个条件(字段),最好建立了索引,那样
删除的速度会比一次性删除快很多,这个我经历过的。至于由此产生的碎片,最好的方法是EXP/IMP,其次
ALTER TABLESPACE也可以试试
我的最大的一张表,数据可能在6000万条左右,要删除的话,只删除一天,即200万条左右。但是,因为我有80个表,所以加起来,需要删除的数据还是很多:(
我今天看了看Exp/Imp,上面说最大的导出文件大小为2G(我是Oracle8.0.6)。而且增量导出不是只导出修改部分的数据,而是导出整个表的定义和它的全部数据。因为我的所有表的数据每天都更新,所以我感觉增量导出和完全导出差不多:(
还有就是,如果你的表中的数据不是很重要,就取消日志,但此方法不易轻易
使用!!!
这不是oracle的规定,是操作系统的限制
TRUNCATE TABLE
也就是夜间删除,定时做数据库整理.
alter table * deallocate unused,试试这个命令.释放表中未用空间.