Oracle实现存储过程并使用定时任务调度

该博客详细介绍了如何使用存储过程进行数据库的实时备份和切换操作。首先,数据被插入到A-backup表,接着通过rename操作实现A表和A-backup表的即时替换,确保A表始终提供服务。此外,还设置了一个定时任务,每两分钟执行一次此过程,以保持数据的持续更新。整个流程旨在确保业务连续性和数据安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

业务逻辑

  • 业务上A表需要一直提供服务,所以在存储过程中将数据写入A-backup表,然后通过rename操作,将A-backup表转为A表提供数据;

编写存储过程

CREATE OR REPLACE PROCEDURE P_CS_ETL_DATA AS
	pro_date VARCHAR(32);
BEGIN
	select to_char(sysdate, 'yyyy-MM-dd HH24:MI:SS') into pro_date from dual;  -- 获取执行时间
	insert into A-backupselect xx from source_table;
COMMIT;

	EXECUTE IMMEDIATE 'RENAME A表 to A-temp表';
	EXECUTE IMMEDIATE 'RENAME A-backup表 to A表';
	EXECUTE IMMEDIATE 'RENAME A-temp表 to A-backup表';
	EXECUTE IMMEDIATE 'TRUNCATE TABLE A-backup表';

end;

编写定时任务

DECLARE
	job NUMBER;
BEGIN
	sys.dbms_job.submit(job => job,
		what => 'P_CS_ETL_DATA;',
		next_date => sysdate + 1/(24*60/2),
        INTERVAL => 'TRUNC(sysdate, ''mi'') + 1/(24*60/2)');  --每两分钟执行一次
COMMIT;
END;


-- 然后就能够在user_jobs表中查询到存储过程P_CS_ETL_DATA被调度的情况了;
select * from user_jobs where what = 'P_CS_ETL_DATA;';
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值