`
tjmzgn
  • 浏览: 159714 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

oracle定时删除表空间的数据并释放表空间

阅读更多
这两天我一个朋友问我一个问题,他想定期删除一个表里数据,只保留最近一个星期的数据
,而且要考虑释放磁盘空间,所以我帮他做了个定时任务。判断时间是通过表里的一个列,类型
是数据型,是utc时间。刚开始还想把utc时间转化成现在的时间

utc时间是从1970年1月1号零时开始到现在的总秒数

declare
t number;
begin
t := (to_date('2004-10-12 00:00:00','yyyy-mm-dd hh24:mi:ss')-to_date('1970-01-01 00:00:00','yyyy-mm-dd hh24:mi:ss'))*24*60*60*1000;
dbms_output.put_line(t);
end;

declare
t date;
begin
t := to_date('1970-01-01 00:00:00','yyyy-mm-dd hh24:mi:ss')+1097630923000/(24*60*60*1000);
dbms_output.put_line(to_char(t,'yyyy-mm-dd hh24:mi:ss'));
end;

但后来一想,那需要那么麻烦啊,只要计算出一周的秒数,用最能近的utc时间减去7天的总秒数,和七天前的时间做比较就ok了
于是方法如下:

1. //创建存储过程

create or replace procedure del_tab as

v_time number;
begin
   select max(aa.utc) into v_time from tablename ; //tablename换成你的表名
  
   execute immediate 'delete from tablename where tablename.utc<v_time-7*24*60*60*1000'; //删除7天前数据,如果不大量的查询这个表,不会有太大的影响,可以定期回收空间。
   create table temp as select * from tablename;  //创建临时表,为了释放空间
   execute immediate 'truncate table tablename';
   insert into tablename select * from temp;
   execute immediate 'drop table tablename';
   commit;
 
end;

2. //创建定时job

SQL> variable job_id  number;   //定义任务id


3.//启动任务(每天执行一次)

SQL> begin
  2  dbms_job.submit(:job_id,' trun_tab;',sysdate,'sysdate+1/24');   //这是每天执行,如果修改时间间隔可以修改“sysdate+1/144”
  3  end;
  4  /

4. 你可以测试下

SQL> select job,next_date,what from user_jobs; //用这个语句查看任务id,然后运行下面的语句

这个是立刻执行的

SQL> begin
  2  dbms_job.run(2);
  3  end;
  4  /

PL/SQL 过程已成功完成。

然后在查看表的内容 如果表的内容为空 ,证明已经删除了

5. //删除定时任务:

dbms_job.run(2)
分享到:
评论

相关推荐

    Oracle 定时删除数据 并释放空间

    Oracle 定时删除数据 并释放空间 ,创建存储过程并使用job完成。

    Oracle释放临时表空间脚本

    4. **创建新的临时表空间并指定表空间组:** ```sql -- 创建名为tmp10的临时表空间,并将其添加到表空间组tmpgrp1中 CREATE TEMPORARY TABLESPACE tmp10 TEMPFILE 'd:\orcl\tmp\tmp11.ora' SIZE 2048M ...

    定时删除oracle日志脚本

    总之,定时删除Oracle日志脚本是一个实用的工具,它帮助我们有效地管理数据库日志,释放存储空间,同时保持数据安全。不过,使用时一定要遵循最佳实践,确保在删除日志文件之前做好备份,并理解删除日志对数据库的...

    在Oracle数据库里用存储过程定期分割表

    首先,删除大量数据并不是理想的解决方案,因为Oracle数据库中的物理空间不会因`DELETE`操作而立即释放。这是由于高水位标记(High Water Mark)的概念,即使删除了行,原有的空间仍会被保留,直到新的数据填充或...

    Oracle DG主备库删除归档脚本

    这些脚本通常包含一系列SQL命令和操作系统级别的指令,旨在安全地删除不再需要的归档日志,以释放存储空间,并保持数据库的健康运行状态。归档日志管理对于保持数据库性能至关重要,因为过多的归档日志会占用大量...

    数据库归档定时删除脚本

    定时删除脚本则是为了定期清理这些归档数据,避免归档空间无限制增长。 首先,理解数据库归档的原理是至关重要的。归档操作通常在事务处理数据库中进行,特别是那些需要长期保留历史数据的系统,如金融交易或医疗...

    Oracle 11g 部署rman定时备份文档(windows+linux).docx

    - `delete noprompt obsolete` 命令用于自动删除已过期的备份集,以释放磁盘空间。 - `archive log current` SQL 语句确保当前的归档日志被备份,以支持完整恢复链。 6. **RMAN 脚本详解**: - `allocate ...

    linux 里定时执行删除日志

    本文将深入解析如何在Linux环境下设置定时任务来定期执行特定操作,特别是删除日志或无用文件,以释放磁盘空间,保持系统的高效运行。 ### 一、问题背景 在日常的系统维护过程中,我们可能会遇到由于应用程序频繁...

    Linux的定时清理oracle归档日志文件及脚本.docx

    总之,通过在Linux上设置Cron定时任务和编写RMAN脚本,我们可以自动化地管理和清理Oracle数据库的归档日志,从而优化存储空间并确保数据库的高效运行。这个过程涉及到Linux系统管理、Oracle数据库管理和脚本编程,是...

    Oracle内置包的使用方法.rar

    这些内置包极大地简化了Oracle数据库的管理和开发工作,熟练掌握它们的使用能够提高工作效率,优化数据库性能,并保证数据的安全。在实际应用中,应根据具体需求选择合适的包,并正确调用其成员函数,遵循最佳实践,...

    oracle优化工具

    - **Statspack**:通过`spcreate.sql`和`spdrop.sql`脚本来创建和删除Statspack表空间;`spauto.sql`用于设置自动采样;`spreport.sql`用于生成性能报告。 - **ASH(Active Session History)**:记录活动会话的历史...

    oracle dg 归档日志清理脚本

    总结来说,Oracle DG归档日志清理脚本是用于自动化清理数据库不再需要的旧归档日志文件,以释放磁盘空间。通过设置定时任务,可以确保清理过程按照预设的时间间隔进行,从而保持数据库环境的整洁和高效。在执行这类...

    Oracle 10g数据库自动备份

    - 超过10天的备份文件会被自动删除,以释放存储空间。 ### 二、脚本核心参数解析 接下来,我们将对脚本中的几个关键部分进行详细解释。 #### 1. 备份目录配置 ```batch set BACKUP_DIR=D:\DATABACKUP set ...

    linux环境下oracle备份脚本参照.pdf

    1. **RMAN(恢复管理器)**:RMAN是Oracle数据库内置的备份和恢复工具,它可以执行全量备份、增量备份、表空间备份等多种备份类型,并支持自动优化备份策略。 2. **连接目标数据库**:`connect target /`命令用于...

    linux环境下oracle备份脚本.pdf

    这些备份脚本都包含了`crosscheck`、`delete noprompt expired`和`delete noprompt obsolete`命令,用于检查备份的有效性,并自动删除过期和无用的备份,以节省存储空间。 总的来说,这个文档提供了在Linux环境中...

    第三方自动备份数据库软件

    通过配置,用户可以实现对整个数据库实例或者特定数据库、表的备份,并且可以选择是否进行压缩和加密,以节省存储空间并保护数据安全。 文件加密是这类备份软件的关键特性之一,它能够对备份文件进行加密处理,防止...

    数据日志文件清理工具

    此时,数据日志文件清理工具就能发挥关键作用,它能够安全地删除或归档不再需要的日志数据,从而释放磁盘空间。 SqlClear.exe 和 SqlClear 可能是这个工具的两个组成部分,其中 SqlClear.exe 可能是可执行文件,...

Global site tag (gtag.js) - Google Analytics