IT评测·应用市场-qidao123.com

标题: ORACLE定时器和Job:数据库界的“闹钟”与“打工仔” [打印本页]

作者: 欢乐狗    时间: 2024-8-1 04:38
标题: ORACLE定时器和Job:数据库界的“闹钟”与“打工仔”
目录

一、定时器:数据库界的“闹钟”
情景遐想:
1. 语法创建:
2. 应用场景:
3. 优缺点:
4. 注意事项:
二、Job:数据库界的“打工仔”
情景遐想:
1. 语法创建(使用DBMS_JOB):
2. 应用场景:
3. 优缺点:
4. 注意事项:
三、Oracle 创建过的定时任务或Job的删改查 "图书馆"。
情景遐想:
查找定时任务(Job版)
修改定时任务(Job版)
删除定时任务(Job版)
注意:权限
检察用户的角色和权限:
     检查特定的创建权限:
检察crontab的权限设置:
尝试创建定时任务或Job:
咨询数据库管理员:
总结:


一、定时器:数据库界的“闹钟”

情景遐想:

闹钟:
你:“闹钟,每天早上7点叫我起床!”
闹钟:“好的,7点定时响铃!”
ORACLE定时器:
你:“DBMS_SCHEDULER,每天凌晨1点叫我执行备份任务!”
DBMS_SCHEDULER:“收到,1点定时执行你的备份任务!”
1. 语法创建:


使用DBMS_SCHEDULER包中的CREATE_SCHEDULE过程,你可以像设置闹钟一样精确地设置定时器的执行时间。
  1. BEGIN  
  2.   DBMS_SCHEDULER.CREATE_SCHEDULE (  
  3.     schedule_name   => 'my_daily_schedule',  
  4.     start_date      => SYSTIMESTAMP,  
  5.     repeat_interval => 'FREQ=DAILY; INTERVAL=1',  
  6.     end_date        => NULL,  
  7.     comments        => 'Daily backup schedule'  
  8.   );  
  9. END;
  10. 含义:
  11.     你给定时器起了一个名字my_daily_schedule。
  12.     start_date告诉定时器从当前时间开始。
  13.     repeat_interval设置为每天执行一次。
  14.     end_date为NULL,意味着这个定时器将无限期地执行下去。
复制代码
2. 应用场景:

示例:
    每天凌晨备份数据库
  1. BEGIN  
  2.   DBMS_SCHEDULER.CREATE_SCHEDULE (  
  3.     schedule_name   => 'daily_backup_schedule',  
  4.     start_date      => SYSTIMESTAMP,  
  5.     repeat_interval => 'FREQ=DAILY; INTERVAL=1',  
  6.     end_date        => NULL,  
  7.     comments        => 'Schedule for daily backup'  
  8.   );  
  9.    
  10.   DBMS_SCHEDULER.CREATE_JOB (  
  11.     job_name        => 'daily_backup_job',  
  12.     job_type        => 'PLSQL_BLOCK',  
  13.     job_action      => 'BEGIN your_backup_procedure; END;',  
  14.     schedule_name   => 'daily_backup_schedule',  
  15.     enabled         => TRUE  
  16.   );  
  17. END;
复制代码
3. 优缺点:


4. 注意事项:

二、Job:数据库界的“打工仔”

情景遐想:

打工仔:
你:“打工仔,下战书3点帮我买杯咖啡!”
打工仔:“好的,3点定时送到!”
ORACLE Job:
你:“DBMS_JOB,每天下战书5点帮我发送报表邮件!”
DBMS_JOB:“明确,5点定时发送报表邮件!”
1. 语法创建(使用DBMS_JOB):


使用DBMS_JOB包中的SUBMIT过程,你可以像雇佣打工仔一样提交一个Job。
  1. VARIABLE jobno NUMBER;  
  2. BEGIN  
  3.   DBMS_JOB.SUBMIT(  
  4.     job       => :jobno,  
  5.     what      => 'BEGIN your_email_procedure; END;',  
  6.     next_date => SYSDATE + 7/24 + 5/24,  -- 假设当前是周一,则设置为下周一下午5点  
  7.     interval  => 'TRUNC(SYSDATE) + 7 + 5/24' -- 每周一执行一次  
  8.   );  
  9.   COMMIT;  
  10. END;
复制代码
含义:
注意: 在较新版本的ORACLE中,推荐使用DBMS_SCHEDULER来创建和管理Job,由于它提供了更多的功能和机动性。
2. 应用场景:

示例:
    每周发送周报邮件
  1. VARIABLE jobno NUMBER;  
  2. BEGIN  
  3.   DBMS_JOB.SUBMIT(  
  4.     job       => :jobno,  
  5.     what      => 'BEGIN your_email_procedure; END;',  
  6.     next_date => NEXT_DAY(SYSDATE, 'MONDAY') + 5/24,  
  7.     interval  => 'TRUNC(SYSDATE) + 7 + 5/24'  
  8.   );  
  9.   COMMIT;  
  10. END;
复制代码
3. 优缺点:


4. 注意事项:


三、Oracle 创建过的定时任务或Job的删改查 "图书馆"。

情景遐想:

查找定时任务(Job版)

想象一下,你在一个巨大的图书馆里找书,但书架上都是定时任务的书!你要怎么找到你的那本呢?
 
  1. -- 打开“定时任务图书馆”的大门  
  2. SELECT * FROM DBA_JOBS;  
  3. -- 哇!好多书啊,你的那本在哪里呢?慢慢找吧...
复制代码

修改定时任务(Job版)


如今,假设你找到了那本定时任务的书,但发现里面的内容有误,你想要修改它。
  1. -- 拿出你的“神笔马良”笔  
  2. BEGIN  
  3.   DBMS_JOB.CHANGE(...); -- 在这里填写你要修改的内容  
  4. END;  
  5. /  
  6. -- 唰唰唰,内容改好了!你的书现在是最新版本啦!
复制代码

删除定时任务(Job版)


末了,如果你发现这本书其实没什么用了,想要把它从图书馆里拿走。
  1. -- 准备好你的“魔法手套”  
  2. BEGIN  
  3.   DBMS_JOB.REMOVE(...); -- 在这里填写你要删除的Job的编号  
  4. END;  
  5. /  
  6. -- 嗖!书不见了,你的图书馆又整洁了一些!
复制代码
四、角色权限

请注意,执行上述操作可能需要相应的权限。
1.  检察用户的角色和权限


起首呢,你可以检察当前用户所拥有的角色和权限。在SQL*Plus或其他数据库查询工具中执行以下下令:
SELECT * FROM USER_ROLE_PRIVS; -- 检察用户角色
SELECT * FROM USER_SYS_PRIVS; -- 检察系统权限
SELECT * FROM USER_TAB_PRIVS; -- 检察表级权限
通过检查这些视图,你可以相识用户是否有执行相干操作的权限。
2. 检查特定的创建权限

对于定时任务或Job,你可能需要特定的权限来创建它们。比方,对于DBMS_SCHEDULER,你可能需要CREATE JOB或MANAGE SCHEDULER权限。你可以查询USER_SYS_PRIVS来确认是否拥有这些权限。
3. 检察crontab的权限设置

如果你是在Linux系统上使用crontab来创建定时任务,那么权限设置通常与/etc/cron.allow和/etc/cron.deny这两个文件有关。你可以检查这两个文件的存在和内容来确定哪些用户可以使用crontab下令。

4. 尝试创建定时任务或Job

最直接的方法是尝试创建一个定时任务或Job。如果操作成功,那么说明你有相应的权限。如果操作失败并返回权限不足的错误,那么你需要向数据库管理员哀求相应的权限。
5. 咨询数据库管理员

如果你不确定是否有创建定时任务或Job的权限,或者你不确定如何检查这些权限,最好咨询你的数据库管理员。他们可以检察数据库的安全设置,并告诉你是否有必要的权限来执行这些操作。
6.注意需求:

请注意,权限管理在数据库系统中黑白常紧张的,确保只有授权的用户才能执行特定的操作是维护数据库安全性的关键。因此,在哀求或授予权限时,应该审慎行事,并遵循组织的最佳实践和安全策略。
总结:

定时器和Job是ORACLE数据库中的两个得力助手。定时器像闹钟一样定时,确保任务按时执行;Job则像打工仔一样勤劳,帮你完成各种噜苏工作。但记得,它们也需要你的悉心照料和定期检查,才能发挥出最佳的效果哦!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4