oracle 有自己的作业/任务计划程序。您可以创建作业并将您的存储过程附加到它。
任务还可以在完成后向您发送电子邮件,并显示完成状态。
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'update_sales',
job_type => 'STORED_PROCEDURE',
job_action => 'OPS.SALES_PKG.UPDATE_SALES_SUMMARY',
start_date => '28-APR-08 07.00.00 PM Australia/Sydney',
repeat_interval => 'FREQ=DAILY;INTERVAL=2', /* every other day */
end_date => '20-NOV-08 07.00.00 PM Australia/Sydney',
auto_drop => FALSE,
job_class => 'batch_update_jobs',
comments => 'My new job');
END;
/
对于电子邮件通知
BEGIN
DBMS_SCHEDULER.ADD_JOB_EMAIL_NOTIFICATION (
job_name => 'EOD_JOB',
recipients => 'jsmith@example.com, rjones@example.com',
sender => 'do_not_reply@example.com',
subject => 'Scheduler Job Notification-%job_owner%.%job_name%-%event_type%',
body => '%event_type% occurred at %event_timestamp%. %error_message%',
events => 'JOB_FAILED, JOB_BROKEN, JOB_DISABLED, JOB_SCH_LIM_REACHED');
END;
/
Reference
如果表很大,可以考虑通过expdp/impdp导出导入。但这个决定实际上取决于您的数据大小、容错性、数据的复杂性、源表结构和目标表结构之间的差异等等
如果您的目的是实时为您的目标表提供数据,并且您不想在任何技术上进行投资。我可以建议您将目标数据库与Database Link 连接并在源表上创建触发器,以便每当发生 INSERT/UPDATE/DELETE 时,您都可以通过 DB Link 插入目标表。