sqlldr导入oracle导致某个表特别慢
问题描述执行脚本sqlldr导入oracle导致某个表特别慢,就是没有数据,然后执行select也很慢,大概要十几秒。解决1. 杀死导入进程# ps -aux|grep sqlldr# kill -9 xxx(sqlldr导入的进程号)2. 删除锁表查出哪个语句导致的锁表,并且把会话结束掉:select l.session_id, s."SERIAL#", a.sql_text from v$sq
·
问题描述
执行脚本sqlldr导入oracle导致某个表特别慢,就是没有数据,然后执行select也很慢,大概要十几秒。
解决
1. 杀死导入进程
# ps -aux|grep sqlldr
# kill -9 xxx(sqlldr导入的进程号)
2. 删除锁表
查出哪个语句导致的锁表,并且把会话结束掉:
select l.session_id, s."SERIAL#", a.sql_text from v$sqlarea a, v$session s, v$locked_object l where l.sesssion_id=s.sid and s.prev_sql=a.address;
-- 杀死会话
alter system kill session '结果中的session_id,结果中的serial#';
-- 例如:
alter system kill session '2891,52508';
3. truncate优化
如果你是删除大量数据的话,比如几千万条,如果按delete from的话,会导致占用表空间并且会让表变得很慢。正确的删除方法:
truncate table bcpdcardinfo;
4. 多执行commit
在mysql中,我们很少执行commit,但是在oracle中,执行了修改,删除,更新之后,记得commit。否则,可能导致你的结果和别人的结果不一样,也可能导致表变得很慢。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)