zoukankan      html  css  js  c++  java
  • 【DB2】delete大表不记录日志的正确操作

    一、原始方法

    在删除大表的时候,经常会由于数据量太大,造成日志文件满了,接着无法删除数据.

    以下是删除大表不记录日志的具体步骤:

    1.临时设置自动提交关闭

    (使用命令db2 list command options查看Auto-Commit参数状态是否为OFF,如果不是则使用db2set DB2OPTIONS=+c永久关闭

    update command options using c off

    2.设置不记录日志

    ALTER TABLE tabname ACTIVATE NOT LOGGED INITIALLY 

    3.删除数据

    DELETE FROM tabname where …

    4.手动提交

    COMMIT

    5.打开自动提交

    (如果关闭使用使用db2set DB2OPTIONS=+c,则开启使用db2set DB2OPTIONS=-c

    update command options using c on

    Tips:

    不记录日志与删除数据必须在同一事务进行才有效,若执行顺序为:not logged → commit → delete.. 则not logged失效;


    二、精简方法

    以下以表tmp为例子,往表插入大量数据并报日志满了

    image

    那么如何解决这个问题呢?

    1.首先连接好数据库

    db2 connect to qindb user db2inst1 user db2inst1

    2.设置表不记录日志

    db2 +c "ALTER TABLE len.tmp activate NOT LOGGED initially"

    3.插入表数据

    db2 +c "insert into len.tmp select * from len.tmp"

    4.提交

    db2 commit;

    以下是真实操作截图

    image

  • 相关阅读:
    第5次作业
    第六次作业
    第五次作业
    软件需求最佳实践阅读笔记05
    软件需求最佳实践阅读笔记04
    构建民航知识图谱
    软件需求最佳实践阅读笔记03
    软件需求最佳实践阅读笔记02
    软件需求最佳实践阅读笔记01
    程序员的自我修养阅读笔记03
  • 原文地址:https://www.cnblogs.com/OliverQin/p/10219108.html
Copyright © 2011-2022 走看看