加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

记一次生产数据库优化--定期归档大表

发布时间:2019-08-22 11:03:59 所属栏目:编程 来源:波波说运维
导读:最近系统总是卡顿,因为老系统,也看不到代码,所以只能从数据库层面去分析了,下面记录下问题排查过程。 1. 查看超过10s的sql SELECT'kill-9'||p.spid,/*p.spid,p.pid,*/s.sid,s.username,s.machine,s.sql_hash_value,s.last_call_et秒,s.last_call_et/60

这张表一个月差不多600万的数据,最后跟业务确认只保留2个月数据

  1. --创建归档表 
  2. create table archive.ORDER_RELEASE_STATUS_DMP2 as select * from ORDER_RELEASE_STATUS where 1=2; 
  3. --创建存储过程: 
  4. CREATE OR REPLACE PROCEDURE glogowner.p_archive_order_tables AS 
  5. BEGIN 
  6. ----转移 ORDER_RELEASE_STATUS最近2个月数据到ORDER_RELEASE_STATUS_DMP2 
  7. insert into archive.ORDER_RELEASE_STATUS_DMP2 select * from ORDER_RELEASE_STATUS t where t.insert_date< trunc(sysdate-60);  
  8. DELETE FROM ORDER_RELEASE_STATUS t where t.insert_date< trunc(sysdate-60); 
  9. COMMIT; 
  10. EXCEPTION WHEN OTHERS THEN 
  11.  ROLLBACK; 
  12. END p_archive_order_tables; 

记一次生产数据库优化--定期归档大表

9. 设置定时任务

(1) 设置定时任务

  1. BEGIN 
  2.  dbms_scheduler.create_job(job_name => 'ARCHIVE_ORDER_TABLES', 
  3.  job_type => 'STORED_PROCEDURE', 
  4.  job_action => 'glogowner.p_archive_order_tables', 
  5.  start_date => to_date('13-08-2019 18:00:00', 'dd-mm-yyyy hh24:mi:ss'), 
  6.  repeat_interval => 'freq=daily;byday=SUN;byhour=00;byminute=30;bysecond=0', 
  7.  enabled => TRUE, 
  8.  comments => '每周日12点30分归档订单发放表'); 
  9. end; 

记一次生产数据库优化--定期归档大表

(2) 查看定时job

  1. select owner, 
  2.  job_name, 
  3.  job_type, 
  4.  job_action, 
  5.  comments, 
  6.  enabled, 
  7.  to_char(last_start_date, 'yyyy-mm-dd hh24:mi:ss'), 
  8.  to_char(next_run_date, 'yyyy-mm-dd hh24:mi:ss') 
  9.  from dba_scheduler_jobs; 

记一次生产数据库优化--定期归档大表

【编辑推荐】

  1. MySQL DBA面试常见问题总结:索引,事务,存储引擎,优化等
  2. 程序员必备!关系型数据库架构的超强总结
  3. 一文告诉你全世界头部的开发者都在使用什么数据库
  4. SQLite AUTOINCREMENT你需要懂得知识
  5. 分库分表 or NewSQL数据库?终于看懂应该怎么选!
【责任编辑:赵宁宁 TEL:(010)68476606】
点赞 0

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读