ORACLE大数据表Update处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ORACLE大数据表Update处理相关的知识,希望对你有一定的参考价值。

参考技术A

  ORACLE中如果表数据量很大(M级或更大) update某个字段是很慢的(如我的HIS项目中更新历史业务流程表 万条记录 用CURSOR来更新 条MIT一次 花了 天也没更新完) 后来尝试过的改进办法有

   把表上的LOGGING取消

   把表上的INDEX取消

  但是依然很慢 无奈下找到这个

  

  在这个主题问答里 ORA官方提了一种处理的办法

   利用CREATE table as select xxxxx的办法来生成一新表T

   在T 上创建与目标表一样的索引

   把目标表删除或RENAME(注意备份以备反悔)

   把T 改名成目标表

  试了一下 果然非常地快 我的任务差不多在 Min就完成了

  如csywdk table_room是一张大表 要删除其中bakfwid在noNewYWFW 中的记录 且要更新bakfwid在imp_table_room中记录的ROOM_LOC为imp_table_room room_loc:

  ( )创建新表

  create table tmp_new_table_room as

  select t ROOM_ID t NEWROOMID t BUILDID t TFH t DKH t BUILD_NO t LAYER_NO t ROOM_NO t ROOM_NAME

  decode(t bakfwid null t ROOM_LOC t room_loc)

  t ROOM_AREA

  t SURTYPE t LAYER_NAME t DEVDEP t CELL t DELFLAG t QXXZ t SJSJLSH t FD t ID t BAKFWID

  from csywdk table_room t left join imp_table_room t on t bakfwid=t bakfwid

  where not exists(select from noNewYWFW t where t bakfwid=t bakfwid)

  ( )创建备份表

  create table Table_room as

  select * from csywdk table_room

  ( )替换原表

  drop table sde table_room

  create table sde table_room as

  select * from tmp_new_table_room

  在这个问答里还提到一句ORA PL/SQL效率相关的话

   能用一句语句处理的任务决不要用多句编程来实现

lishixinzhi/Article/program/Oracle/201311/18980

Oracle事务处理

名词解释

DML:Data Manipulation Language (数据库操纵语言) 例如:DELETE、INSERT、UPDATE、SELECT

DDL:Data Definition Language(数据库定义语言) 例如:CREATE、ALTER、DROP、

DCL: Data Control Language (数据库控制语言) 例如:GRANT、REVOKE、DENY

1.按照组成方式

Oracle数据库的事务可以有以下几种组成方式:

  • 一个或多个DML
  • 一个DCL语句
  • 一个DDL语句

2.事务按照启动方式

  • 显示事务

          Oracle 11g中事务是隐式自动开始的,它不需要用户显示的执行开始事务语句

  • 隐性事务

      打开隐性事务设置开关后,执行下一条SQL语句的时候自动启动一个新事务,并且每关闭一个事务时,下一条SQL语句又自动启动一个新事务,直到关闭了隐性事务的设置开关。

  • 自动提交事务

      此处是SQL Server默认模式。当一条有效的SQL语句执行后,成功了便自动提交,如果失败了,那么将自动回滚并返回错误信息。

改变事务的模式只影响当前数据库连接,不影响其他连接中的事务

Oracle事务结束

当下列事件发生的时候结束:

  • 用户执行了COMMIT语句(提交)
  • 用户执行了ROLLBACK语句(回滚)
  • 用户执行了DDL语句(自动提交)
  • 用户执行了DCL语句(自动提交)
  • 用户正常退出SQL*Plus(自动提交)
  • 用户非正常退出SQL*Plus(自动回滚)
  • 系统奔溃,包括硬件或软件故障(自动回滚)

 

以上是关于ORACLE大数据表Update处理的主要内容,如果未能解决你的问题,请参考以下文章

oracle merge into在大数据离线批处理中的应用

oracle 大数据量 删除插入 有啥影响

结果集需要很长时间来处理来自 Oracle 的大数据

oracle undo表空间该如何估算,设计多大合适?

oracle 可以存在多少数据量?

大数据篇:DolphinScheduler-1.2.0.release安装部署