一个很基本的问题
我循环执行update操作用于更新一张表的一个字段值。(update table xxx set xxx=xxx where xxx=xxx)
但是325条记录用了961秒钟的时间,比平时慢了许多。
我不知道如何去监测这张表的性能以及出现这种情况可能的原因。
请高手指点。
谢谢!
我循环执行update操作用于更新一张表的一个字段值。(update table xxx set xxx=xxx where xxx=xxx)
但是325条记录用了961秒钟的时间,比平时慢了许多。
我不知道如何去监测这张表的性能以及出现这种情况可能的原因。
请高手指点。
谢谢!
解决方案 »
- oracle 11g 安装出错,有知道的大虾帮忙看下,多谢多谢!
- 求几本oracle经典资料,入门和进阶的都行最好有详细的案例。(小妹在此谢过了)
- oracle数据库数据移动
- nux下导入从windows导出的oracle的dmp,能导入数据,但是中文字符的乱码?
- Oracle Connection关闭问题
- 高分求助:能否自己编写一个oracle性能分析工具?
- rman 恢复中,文件系统->裸设备以及裸设备->文件系统 该如何恢复?脚本如何写? 谢谢!!!
- oracel怎么样连接access,是sql语句写的?
- imp加上ignore=y的疑问
- 一个ASP程序,查询Oracle数据库时调用to_char函数遇到的问题,请一定进来看看,拜托了
- 请教not exists 和 not in 的问题!
- 急!Environment::createEnvironment() - Link出错
使用update批量更新
a.DISK_READS reads,
a.EXECUTIONS exec,
a.DISK_READS / (decode(a.EXECUTIONS, 0, 1, a.EXECUTIONS)) rds_exec_ratio,
a.SQL_TEXT statement
from v$sqlarea a, dba_users b
where a.PARSING_USER_ID = b.user_id
and a.DISK_READS > 100000
order by a.DISK_READS desc;--这里面查到的比较靠前的记录一般都是有问题的sql语句。
查询占用资源的sql很多,在网上可以搜搜。
create or replace procedure update_equip_obj_pos is CURSOR body_vol_id IS
select e.aa,e.vstring from a1 e; v_key_code VARCHAR2(1000); v_pos VARCHAR2(1000);
begin
for curr_vol_id in body_vol_id loop
v_key_code := curr_vol_id.aa; v_pos := curr_vol_id.vstring;update equipment_object_tab t set t.MCH_POS = v_pos where t.mch_code = v_key_code;
commit; end loop;end update_equip_obj_pos;其中a1是一个临时表,因为别人给我的记录是excel格式的,我会先把相关的列拷贝到临时表里。
然后,equipment_object_tab 表的索引有mch_code 这个字段,这个表总共有记录281427条。
还有最好加上exception异常处理