• oracle删除超过N天数据脚本


    公司内做的项目是工厂内的,一般工厂内数据要求的是实时性,很久之前的数据可以自行删除处理,我们数据库用的oracle,所以就想着写一个脚本来删除,这样的话,脚本不管放在那里使用都可以达到效果

    由于服务器是windows,参照Oracle Shell Scripting中,我们写一下windows下的脚本

    首先删除数据的sql语句写一下

    DELETE FROM tablename WHERE createdtime<TRUNC(SYSDATE)-59;  --删除59天前的数据
    commit;   --提交事务
    alter table tablename enable row movement;  --数据删除之后会产生很多空行,打开行移动,移动之后rowid会发生变化
    alter table tablename shrink space;  --连同索引一起压缩,解决delete语句造成的空间未释放问题
    alter table tablename disable row movement;  --关闭行迁移
    

    这一段相当于

    SPOOL C:\emp.lst
    SET LINESIZE 100
    SET PAGESIZE 50
    SELECT *
    FROM emp;
    SPOOL OFF
    

    所以我们得到了一个新的sql文件,例如C:\emp.sql

    CONNECT scott/tiger
    --开始删除
    DELETE FROM tablename WHERE createdtime<TRUNC(SYSDATE)-59;
    commit;
    alter table tablename enable row movement;
    alter table tablename shrink space;
    alter table tablename disable row movement;
    --结束删除
    --如果删除多个表,可以将上面语句复制一下,tablename和where条件修改一下就可以了
    EXIT;
    

    然后创建一个文件C:\get_emp.bat

    @echo off
    echo 开始删除过期数据并缩容
    
    sqlplus /nolog @C:\emp.sql
    
    echo 执行成功
    pause
    exit
    

    保存之后,执行一下看会不会出现问题,如果不会出现问题,添加一下windows的任务计划程序,或者自己写一个windows服务,定期调用一下这个bat就可以了

    linux版本的类似,写法这个连接下面有,写完之后先进行测试,然后使用cron或者其他进行定期调用即可

    当然,操作数据库表不局限于定期清理数据,也可以进行报表生成、新表创建等其他操作

  • 相关阅读:
    如何上载图片到SAP数据库并显示
    ◆◆0如何查看ABAP程序或者数据库表的版本历史
    python中我认为一些重要的东西
    Pytorch使用-1
    大工具-收藏
    大想法-(收藏)
    TODO-深度学习实验
    顺便配置了下vim
    不影响已安装的低版本cuda8及其环境工具条件下安装新版本cuda9
    ConvLSTM-AE for VAD (ICME2017-SIST)
  • 原文地址:https://www.cnblogs.com/spatxos/p/15944641.html
Copyright © 2020-2023  润新知