如何在Oracle中管理计划任务
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Oracle中管理计划任务相关的知识,希望对你有一定的参考价值。
是的。以前我们在处理这类需求时也是这么做的。但从ORACLE 10.1 版本开始,ORACLE 开发了一个新的包DBMS_SCHEDULER 。这个包挺复杂的,以至于我在初次学习之后,就没再去用它了。功能太强大了,其实很多我们不需要的。
我们就有这个需求,看看DBMS_SCHEDULER 是如何解决的。
在SQLPLUS 中,使用DBMS_SCHEDULER.CREATE_JOB 创建计划任务,用于调度一个存储过程。
存储过程很简单,我为这个测试而创建的,就是向一张表里插入数据。
CREATE TABLE T1 AS SELECT SYSDATE AS AA FROM DUAL;
CREATE OR REPLACE PROCEDURE SP_TEST_T1 AS
BEGIN
INSERT INTO T1 SELECTD SYSDATE FROM DUAL;
COMMIT;
END;
这个存储过程没有输入输出参数,是为了JOB 调用方便。如果实际运行过程中有参数,我们就写一个存储过程封装它,再放入JOB 中调用。
例如:
CREATE PROCEDURE GATHER_GTJA_STATS
AS
BEGIN
SYS.DBMS_STATS.GATHER_SCHEMA_STATS(OWNNAME => \'GTJA\',ESTIMATE_PERCENT => 30,METHOD_OPT => \'FOR ALL INDEXED COLUMNS SIZE AUTO\',CASCADE => TRUE,OPTIONS => \'GATHER\');
END;
使用DBMS_SCHEDULER.CREATE_JOB 创建一个JOB, 调用存储过程SP_TEST_T1 ,执行间隔2 分钟。这里的JOB_NAME 名称可以自己定义,这个摆脱了DBMS_JOB 中JOB 号不能自定义的缺点。
EXEC DBMS_SCHEDULER.CREATE_JOB(JOB_NAME => \'JOB_SP_TEST_T1\',JOB_TYPE => \'STORED_PROCEDURE\',JOB_ACTION =>\'SP_TEST_T1\' ,START_DATE => SYSDATE ,REPEAT_INTERVAL => \'FREQ=MINUTELY; INTERVAL=2\');
该命令执行成功后,可以在*_SCHEDULER_JOBS 中看到JOB 的配置值。
SELECT * FROM DBA_SCHEDULER_JOBS;
SELECT * FROM USER_SCHEDULER_JOBS WHERE JOB_NAME=\'JOB_SP_TEST_T1\';
使用该命令新建的JOB ,默认是不执行的,需要将其状态改成可执行状态。
EXEC DBMS_SCHEDULER.ENABLE(NAME => \'JOB_SP_TEST_T1\');
可以删除重建它。
EXEC DBMS_SCHEDULER.DROP_JOB(JOB_NAME => \'JOB_SP_TEST_T1\');
EXEC DBMS_SCHEDULER.CREATE_JOB(JOB_NAME => \'JOB_SP_TEST_T1\',JOB_TYPE => \'STORED_PROCEDURE\',JOB_ACTION => \'SP_TEST_T1\',START_DATE => TO_DATE(\'2012-06-12 15:30:00\',\'YYYY-MM-DD HH24:MI:SS\') ,REPEAT_INTERVAL => \'FREQ=DAILY\');
这个创建过程而言,其实和DBMS_JOB 创建JOB 的差别不大,但DBMS_SCHEDULER 可配置的地方就太多了。执行时间间隔非常非常灵活,这里不做详述了,具体请看ORACLE 官方文档。
DBMS_SCHEDULER 针对每一次JOB 执行,都做了详细记录,因此,可以查询到每一次JOB 执行的时间了。
具体可以查看两类视图*_SCHEDULER_JOB_LOG 和*_SCHEDULER_JOB_RUN_DETAILS 。
SELECT * FROM DBA_SCHEDULER_JOB_LOG;
SELECT * FROM DBA_SCHEDULER_JOB_RUN_DETAILS;
如果嫌日志太多了,可以使用PURGE_LOG 去清理。
EXECUTE DBMS_SCHEDULER.PURGE_LOG;
这个DBMS_SCHEDULER 包的功能太多了,用起来也累,所以很多人还是选择DBMS_JOB 。 参考技术A 下一个Oracle工具Toad
如何在 FlowUs和Notion 等笔记软件中进行任务管理?
对于 Notion 这样的生产力工具而言,非常适合进行任务管理。比如,制定各种学习计划、工作计划、习惯追踪。你可以看到很多用户乐此不疲地建立各种模版,其中最重要的便是进行任务追踪。
那么,与传统的工具而言,Notion 类产品为什么适合进行任务追踪呢?
Notion 类生产力工具的独特之处
1.强大的 Block 编辑器。你可以将 Block 理解为一个个积木。其中,包括项目列表、编号列表、代码块、图片等等均属于不同类型的积木。在 Notion 类产品中,用户是建筑师。你需要使用不同的 Block 建立你心目中的理想王国。
2.强大的多维表格 Database 。这意味着,你面临的不再是一个个单独的文档,而是一个数据库。你可以根据每个文档不同的属性,然后使用不同的视图,展示这些文档之间的关系。
以上便是 Notion 类产品的核心特性。
根据这个特点,我打算利用我正在使用的 Notion 类产品——FlowUs 展示如何进行任务追踪。
FlowUs 的独特之处
FlowUs 拥有 Notion 的大部分核心功能。此外,还拥有对于中文用户友好的网络环境、中文界面等特性。更重要的是,FlowUs 提供了两个非常吸引我的特性:
- 支持文件夹页面功能。你有没有想过,将你的笔记管理和文件管理进行整合?在使用 Notion 后,我曾经想过将我所有的办公文档都存放至 Notion, 以此实现真正的 All in One. 然而,Notion 的文件管理功能比较孱弱。而在 FlowUs 中,允许我将各种本地文件或者文件夹直接一键上传和下载。并且,对于我这样的个人免费版用户而言,文件预览也是免费的。
- 原生开发的客户端。对于效率工具而言,如果每次进行操作的时候,软件交互比较满,那估计会给用户带来不少痛苦体验。FlowUs 对移动端等进行原生开发,为用户提供极速的产品体验。
任务追踪的三种路径
使用横向排版功能建立可视化面板
与传统编辑器不一样,FlowUs 等生产力工具提供了十分好用的横向排版功能。通过横向排版,你可以充分利用你的编辑器所在的空白空间,建立更为强大的可视化面板。如图,我简单制作了一个每周计划模版。
善用多维表格 Database
Database 是 FlowUs 最为核心的功能。透过表格、目录、看板、时间轴、画廊等多个视图,你可以快速根据不同的属性标签,透视多个文档之间的关系。
如图,我建立了一个简易的习惯追踪模版。
巧用小组件
在各种小组件中,日历、进度条、热力图都是很适合打卡的小组件。
如图,这是我的近期的阅读和写作热力图。
相关生产力工具测评和方法论介绍
- 笔记软件的历史、选择策略以及深度评测
- 数字花园:Notion Like 笔记软件使用教程·学习资源汇总·知识管理方案:深度评测、辅助工具、信息管理、时间管理、任务管理、思维管理、项目管理、文件管理、笔记方法、记忆方法、写作方法 ——在这篇文章,我以 Notion 类工具为例,介绍了笔记软件的多种使用场景以及相关的阅读方法、笔记方法、写作方法等生产力方法论。
- 国内主流生产力工具综合评测 ——在这篇文章,我汇总了常见的生产力工具详细测评文章,包括轻量级笔记软件、Markdown 编辑器、云 Office、离线笔记、云笔记、开源笔记软件、大纲编辑器、协同办公笔记软件、知识库管理工具 、低代码/无代码平台、写作软件、生产力方法论等主题的内容。
- NotionPet 官网-丰富的小组件库、动态图标库——提供大量好看、实用的小组件,可以辅助进行时间管理、任务管理、笔记记录、资讯管理、创意写作等多种使用场景。其中,小组件数量正在不断丰富,服务稳定。并且,NotionPet 提供了强大的定制化服务,可以满足你的个性化配置需求。
- 关于 NotionPet 的专文评测:《国产组件库 NotionPet:为笔记嵌入可视化模块 》
- NotionPet 官网:https://notion.pet/home.html
- FlowUs 息流 - 新一代生产力工具:https://flowus.cn/product
以上是关于如何在Oracle中管理计划任务的主要内容,如果未能解决你的问题,请参考以下文章