暂无图片
Oracle 用存储过程来删除数据,一次性删除300万数据用时1小时20分钟,效率低吗?
我来答
分享
暂无图片 匿名用户
Oracle 用存储过程来删除数据,一次性删除300万数据用时1小时20分钟,效率低吗?

Oracle 用存储过程来删除数据,一次性删除300万数据用时1小时20分钟,效率低吗?

我来答
添加附件
收藏
分享
问题补充
4条回答
默认
最新
dbtiger

很低了。

存储过程落地也是调用delete语句。而且一次大量delete通常要考虑好rede和undo,避免刷爆,非常危险的操作。。。

建议将需要的数据通过create table a1 as select * from a where xxx=ww;过滤并另存表,然后将原表truncate或者drop。
祝你成功!

暂无图片 评论
暂无图片 有用 1
打赏 0
暂无图片
Kubee

这速度感觉好慢喔

暂无图片 评论
暂无图片 有用 0
打赏 0
赵勇

从经验上看,挺慢的。但具体问题具体分析。基于真实的执行计划、资源开销和等待事件来分析,会更靠谱一些。

暂无图片 评论
暂无图片 有用 0
打赏 0
Thomas

不建议一次性,也就是写一条SQL删除300万记录。不如做个存储过程,里面放游标,将删除的数据再分解,比如删除100次,每次约3万记录,每次删除完就COMMIT,这样,可以避免将UNDO撑得太大。也就是说把一个批量删除细粒度化。

暂无图片 评论
暂无图片 有用 1
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
oracle 12c用普通用户登录pdb的语法是什么?
回答 2
已采纳
只要有权限登录的用户,就直接连就行,像单实例一样配置TNS连就行。
logmnr信息显示不完全
回答 1
如果没开附加日志,有些内容确实挖掘不出来。可以把当时的ASH导出到Excel详细查查看,还可以结合监听日志、程序的日志排查。
执行计划分析
回答 2
很有可能是网络问题,dblink连接的是远程数据库,你在本地执行很快,而使用dblink查询后降速这一点就足以把怀疑方向确定,目前跟执行计划没啥关系。
AWR分析报告问题求助:SQL如何可以从哪几个方面优化?
回答 4
基本上看LoadProfile的几个关键点。Redosize看有没有大量写入。一般归档满,磁盘不足看这个。Logicalread看读数据量大不大。一般硬件条件达标的环境,这个越大说明系统越繁忙。(SQ
oracle ASM 的redo日志在磁盘的什么地方?
回答 1
已采纳
是使用asm进行磁盘管理的,所以可以通过asmcmd命令将redo拷贝到本地磁盘再进行分析
Oracle 统计各个表记录数的查询语句,非存储过程触发器的语句怎么写?
回答 4
下面这个sql需要在12c及以上版本执行,如果低于12c, 需要先创建函数, 再执行最后的select即可:
请问,oracle如何删除用户及表空间和对应的DBF文件?麻烦说详细步骤。
回答 2
已采纳
sqlplus/assysdba删除用户dropuser用户名cascade;删除表空间及数据文件droptablespace表空间名称includingcontentsanddatafiles;重点
Oracle数据库为什么说位图索引适合用于读密集的环境,而不适合写密集的环境?
回答 1
已采纳
一个位图索引键条目会指向很多行的数据。如果一个会话修改了索引列的数据,那么在大多数情况下,这个索引条目指向的所有行都会被锁定。倘若其他会话也需要更新同样的位图索引条目,那这个会话就会被“关在门外”。这
奋斗的方向
回答 5
明显走错片场了
异地数据同步问题
回答 2
建议不要用ogg,维护重!用存储过程来定时调用,表里增加一个flag标志字段,根据不同的状态来做不同的事