Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【DB笔试面试483】通过DBMS_SCHEDULER如何调用SHELL脚本?

【DB笔试面试483】通过DBMS_SCHEDULER如何调用SHELL脚本?

作者头像
AiDBA宝典
发布于 2019-09-30 08:23:15
发布于 2019-09-30 08:23:15
85900
代码可运行
举报
运行总次数:0
代码可运行

题目部分

通过DBMS_SCHEDULER如何调用SHELL脚本?

答案部分

可以直接创建JOB来调用SHELL脚本,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
BEGIN DBMS_SCHEDULER.CREATE_JOB(JOB_NAME=>'TEST13',
JOB_TYPE=>'EXECUTABLE',
ENABLED =>FALSE,
AUTO_DROP =>FALSE,
JOB_ACTION=>'/u01/dw/regain/test1.sh',
NUMBER_OF_ARGUMENTS => 1);
END;
/
BEGIN DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE(JOB_NAME=>'TEST13',
ARGUMENT_POSITION => 1,
ARGUMENT_VALUE => 'AAAA');
END;
/

若是以普通用户执行上述代码的话,在执行过程中会遇到ORA-27486: insufficient privileges和ORA-27399: job type EXECUTABLE requires the CREATE EXTERNAL JOB privilege的错误,这是由于权限不足的缘故导致的。

解决方法:以SYSDBA连接,然后执行上述代码,或者用SYS用户进行赋权操作,这里假设普通用户的用户名为LHR:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
GRANT CREATE ANY JOB TO LHR;
GRANT CREATE EXTERNAL JOB TO LHR;

赋权之后接着执行就好了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SQL> EXEC DBMS_SCHEDULER.ENABLE('TEST13');
SQL> EXEC DBMS_SCHEDULER.RUN_JOB('TEST13');
SQL> EXEC DBMS_SCHEDULER.DROP_JOB('TEST13');

本文选自《Oracle程序员面试笔试宝典》,作者:李华荣。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-01-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DB宝 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
关于奇怪的并行进程分析(二) (r6笔记第46天)
前几天的并行问题自己分析了下,也算有了一些进展,但是目前还没有找到让人信服的理由,有些读者也比较关心这个问题,所以第二篇中会把自己的分析过程写出来,第三篇中应该会对这个问题做一个了结。 之前发现剧烈的性能抖动似乎和数据库中存在的scheduler有一定的关系。自己就顺着这个思路进行了排查。 首先得到了离问题时间点比较接近的一个scheduler,然后抓取了对应的ddl语句。 OWNER JOB_NAME LAST_START_DATE ------- --
jeanron100
2018/03/16
7140
Oracle Scheduler Chain 的用法
      Oracle CHAIN,也就是链,是将一串需要完成的作业连在一起,根据每一个步骤完成的不同结果来确定下面的哪一个动作需要被完成。实际上也就是if .. then ..else。比如,可能有如下的定义,step 1成功执行,执行step 2,如果step 1执行失败,执行step 3,如果step 2或step 3 执行成功,退出整个chain,如果step 2 或step 3执行失败,发送邮件并退出。CHAIN的主要步骤包括定义程序(做什么)、定义CHAIN步骤(总步骤),以及CHAIN的规则(如何做)。本文主要描述了chain的一些步骤并给出示例供大家参考。有关job,program可以参考Oracle在线文档。
Leshami
2018/08/13
5790
【DB笔试面试480】 RAC中如何指定JOB的运行实例?
在RAC中,可以让JOB在某个指定的实例上运行。对于DBMS_JOB和DBMS_SCHEDULER来说,它们的指定方法不同:
AiDBA宝典
2019/09/29
5670
参数job_queue_processes与Oracle jobs
Oracle jobs为Oracle开发人员和数据库管理员提供了数据库层面维护的极大便利性。对于Oracle jobs在Oracle 9i之前,是由dbms_jobs来实现,而到了10g之后,多出了dbms_scheduler方式。两者同样可以添加Oracle job,只不过dbms_scheduler的功能更为强大。在使用Oracle jobs时,我们不得不关注job_queue_processes参数,用于设定job队列可以启动的进程数。本文即是围绕此展开。
Leshami
2018/08/14
8140
增量数据丢失的原因分析(二)(r8笔记第76天)
今天处理的一个问题比较绕,花费了我不少的时间来分析,当然最后发现是拜拜忙碌一场空,还是有一些历史原因。 大体的环境情况如下,有一台线上库OLTP,其中也有会自己的存储过程,job,结合起来处理一些数据,当然作为统计系统而言,目前有两套统计系统STATDB1,STATDB2,都哟裇相关业务的划分,两者会有一些交集。 开发的同学找到我说,统计库STATDB2 有一张表,发现最近两天的数据没有更新,当然开发的同学无从查起,就想让我帮忙看看,现在还是流行逆性工程,所以这个工作就义不容辞交给了我。 我大体梳理了一下,
jeanron100
2018/03/19
7180
增量数据丢失的原因分析(二)(r8笔记第76天)
【DB笔试面试484】如何批量删除JOB?
可以采用SQL来生成删除JOB的语句,首先执行以下语句,可以根据情况对结果进行过滤:
AiDBA宝典
2019/09/30
5460
增量数据丢失的原因分析(r8笔记第26天)
今天开发的同事找到我,让我帮他们补一部分数据,因为有一个表的数据已经快一个月没有增量数据了,这个需求听起来有些奇怪是不? 问题的背景是在统计库中存在一个表,供部分应用做统计分析,每天会根据时间生成一条记录,这条记录汇总的数据会作为统计分析所用。但是每天的这一条增量数据的源头来自于另外两个在线交易库。两个库中的数据会做一些关联,大体的实现思路就是下面的形式。 现在OLAP的库中的表里的部分增量数据没有按照时间增加,所以对前端应用的统计造成了一定的影响。 当然对于DBA而言,这部分逻辑还是未知的,可能跨业务部
jeanron100
2018/03/19
8730
【DB笔试面试479】Oracle JOB分为哪几类?
Oracle的JOB分为两类,DBMS_JOB和DBMS_SCHEDULER,二者都可以完成定时任务。
AiDBA宝典
2019/09/30
5700
Oracle RAC环境下配置statspack
    Statspack是Oracle 9i时代的产物,对于监控与分析数据库性能有着跨里程碑的意义,是AWR的前身。在Oracle 10g后AWR取代了statspack。尽管如此,awr异常或者需要调试包license的情况下statpack依旧是不错的选择。然而在RAC环境中,statspack并不支持,需要单独的进行配置以及使用job来进行管理。本文描述的则是通过在RAC环境下创建service,以及job来达到各节点同时产生snapshot的效果。
Leshami
2018/08/13
6640
【DB笔试面试536】在Oracle中,Oracle 10g和11g告警日志文件的位置在哪里?
作为一名DBA,必须知道告警日志是什么,在何处。实时的监控数据库的告警日志是必须进行的工作。监控并且根据不同的告警级别,通过邮件或短信发送告警信息给DBA,这可以帮助DBA及时了解数据库的变化与异常,及时响应并介入处理。
AiDBA宝典
2019/09/29
1.3K0
【DB笔试面试482】如何查询SCHEDULER JOB的运行日志?
可以通过查询视图DBA_SCHEDULER_JOB_RUN_DETAILS来获取SCHEDULER JOB的运行日志、产生的错误等信息。如下所示:
AiDBA宝典
2019/09/30
1.1K0
结合EM快速解决复杂的配置问题(r4笔记第91天)
图形工具在学习中一般是不作为推荐工具使用的,很多时候可能工作环境都是字符界面,远程连接,基本没有可能接触到图形工具,图形工具的好处真是一把双刃剑,功能丰富全面而且极其方面,这是优点也是缺点,如果一旦脱离了图形工具,可能就会发现自己会的东西越来越少。在工作中,有时候有些同事会问我 一些关于toad,SQLDeveloper的使用细节,很多时候自己都有些陌生,因为确实使用这些图形工具的机会相对比比较少,但是也不能一味排斥这些工具,一旦有紧急问题的时候,有些图形工具的功能还是很给力的。 前段时间客户有个需求,需要
jeanron100
2018/03/15
6120
结合EM快速解决复杂的配置问题(r4笔记第91天)
【DB笔试面试449】如何监控数据库的登陆登出、DDL语句等内容?
系统中一些常用的监控都可以使用DDL触发器和系统触发器来实现。可以先创建一张记录DDL语句的表XB_AUDIT_DDL_LHR(由于该表记录数会很大,所以,需创建成按月自动分区的分区表),并创建合适的索引,然后创建存储过程用于插入DDL信息到该日志表中。最后再创建系统触发器就可以将DDL语句或系统事件的信息插入日志表中。下面详细说明DDL触发器和系统触发器的使用。
AiDBA宝典
2019/09/30
6550
【DB笔试面试556】在Oracle中,虚拟索引的作用有哪些?
在数据库优化中,索引的重要性是不言而喻的。但是,在性能调整过程中,一个索引是否能被查询用到,在索引创建之前是无法确定的,而创建索引是一个代价比较高的操作,尤其是当数据量较大的时候。这种情况下,创建虚拟索引是一个很好的选择。
AiDBA宝典
2019/09/29
5970
ORA-31623: a job is not attached to this session via the specified handle
    在使用Oracel Datapump API时碰到ORA-31623(a job is not attached to this session via the specified handle)错误,从故障描述来 看提示 job并没有成功附加到当前session指定的handle。该package的导入导出一直正常运行究竟是什么原因导致的呢?我们拭目以待......
Leshami
2018/08/14
1K0
【DB笔试面试464】动态SQL是什么?
在PL/SQL开发过程中,使用SQL或PL/SQL可以实现大部分的需求,但是,在某些特殊的情况下,在PL/SQL中使用标准的SQL语句或DML语句不能实现自己的需求,例如需要动态建表或执行某个不确定的操作的时候,就需要动态执行,还有DDL语句及系统控制语句都不能在PL/SQL中直接使用,这就需要使用动态SQL来实现。因此,在Oracle数据库开发PL/SQL块中,可以把SQL分为静态SQL和动态SQL。所谓静态SQL指的是在PL/SQL块中使用的SQL语句在编译时是明确的,执行的是确定对象。动态SQL是指在PL/SQL块编译时SQL语句是不确定的,如根据用户输入的参数的不同而执行不同的操作。编译程序对动态语句部分不进行处理,只是在程序运行时动态地创建语句、对语句进行语法分析并执行该语句。动态SQL允许在SQL客户模块或嵌入式宿主程序的执行过程中执行动态生成的SQL语句,动态SQL语句在程序编译时尚未确定。其中,有些部分需要在程序的执行过程中临时生成的SQL语句,SQL标准引入动态SQL的原因是由于静态SQL不能提供足够的编程灵活性。
AiDBA宝典
2019/09/30
1.4K0
通过shell定制dbms_advisor.quick_tune(r4笔记第15天)
在平时的调优工作中,在11g中的新特性sql monitor可以极大的简化性能监控的工作,对于执行时间超过5秒的sql语句都会记入v$sql_monitor中。 但是如果某个sql语句还没有执行,或者执行时间已经是几天前了,等发现性能问题进行调优的话就会比较困难,采用dbms_advisor.quick_tune是一个不错的选择。如果sql语句比较庞大,比较迷茫的时候至少可以得到一些很重要的思路。 举个简单的例子。 创建一个表t create table t as select *from all_ob
jeanron100
2018/03/15
8490
在Oracle中,如何定时清理INACTIVE状态的会话?
今天小麦苗给大家分享的是在Oracle中,如何定时清理INACTIVE状态的会话?
AiDBA宝典
2019/09/29
3.1K0
模拟业务最小测试用例02
Oracle数据库对很多开发人员而言,基本就只是一个存储数据的仓库,只不过这个仓库功能非常强大,额外提供了很多好用的功能,需要的时候会用就好,不会纠结于某个细节。而对很多DBA而言,正好相反,喜欢沉溺于某些细节上,对某些小知识点对应的原理理解的非常透彻,但却往往很少会站在开发层面认识Oracle。 本文旨在构造一份相对较全面的测试数据,对开发常用的对象都模拟创建一份测试用例,DBA就可以直接拿去做一些基本测试。
Alfred Zhao
2022/05/06
8310
【DB笔试面试608】在Oracle中,如何使用STA来生成SQL Profile?
利用STA对语句进行优化后,STA会对语句进行分析,采用最优的优化策略,并给出优化后的查询计划。可以按照STA给出的建议重写语句。但是,有些情况下,你可能无法重写语句(比如在生产环境中,SQL语句又在一个包中)。这个时候就可以利用Sql Profile,将优化策略存储在Profile中,Oracle在构建这条语句的查询计划时,就不会使用已有相关统计数据,而使用Profile的策略,生成新的查询计划。
AiDBA宝典
2019/09/29
3K0
【DB笔试面试608】在Oracle中,如何使用STA来生成SQL Profile?
推荐阅读
相关推荐
关于奇怪的并行进程分析(二) (r6笔记第46天)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档