如何用SQL查询ORACLE的DBMS_JOB
时间: 2024-03-15 08:45:46 浏览: 26
你可以使用以下 SQL 查询语句来查询 Oracle 的 DBMS_JOB:
```
SELECT job, what, next_date, next_sec, interval, failures
FROM dba_jobs;
```
这个查询语句将返回所有的 DBMS_JOB 作业的名称、作业执行的语句、下一次执行的日期和时间、执行的间隔时间以及失败次数等信息。
如果你只想查询当前用户的 DBMS_JOB,可以使用以下语句:
```
SELECT job, what, next_date, next_sec, interval, failures
FROM user_jobs;
```
这个查询语句将只返回当前用户创建的 DBMS_JOB 作业的信息。
请注意,查询 DBMS_JOB 需要有相应的权限,如果你没有权限,将无法查询到 DBMS_JOB 的相关信息。
相关问题
oracle11g 查看dbms_job的jobno
要查看Oracle 11g中的DBMS_JOB的JOBNO,可以使用以下SQL语句:
```
SELECT job, log_user, next_date, what
FROM sys.dba_jobs;
```
这将显示所有正在运行的作业的JOBNO、LOG_USER、下一个运行日期和作业信息。如果您只需要查看特定作业的JOBNO,则可以添加WHERE子句来过滤结果,例如:
```
SELECT job, log_user, next_date, what
FROM sys.dba_jobs
WHERE what LIKE '%my_job%';
```
这将显示所有包含“my_job”文本的作业的JOBNO、LOG_USER、下一个运行日期和作业信息。
ORACLE 11g DBMS_JOB没有定时执行的问题怎么处理?
如果您在 Oracle 11g 数据库中使用 DBMS_JOB 函数出现了定时执行问题,可以尝试以下解决方案:
1. 确认 Job 是否启用:在创建 Job 时需要使用 DBMS_JOB.ENABLE 函数将其启用,如果 Job 没有启用,那么它就不会被调度执行。
2. 检查 Job 执行时间:在创建 Job 时需要指定 Job 的执行时间,如果设置有误,比如设置时间已经过去了,那么 Job 就无法被调度执行。可以使用以下 SQL 语句查看 Job 的执行时间:
```
SELECT job, what, next_date, next_sec
FROM user_jobs;
```
如果发现 Job 的执行时间有误,可以使用以下 SQL 语句修改 Job 的执行时间:
```
BEGIN
DBMS_JOB.BROKEN(job, TRUE);
DBMS_JOB.INTERVAL(job, 'SYSDATE + 1/1440'); -- 修改为每分钟执行一次
DBMS_JOB.BROKEN(job, FALSE);
END;
```
以上 SQL 语句将 Job 的执行时间修改为每分钟执行一次。
3. 检查 Job 执行时间冲突:如果您有多个 Job 需要执行,并且它们的执行时间有重叠,那么会出现 Job 执行时间冲突的问题,这时候需要调整 Job 的执行时间。
4. 检查数据库连接是否断开:如果您的数据库连接断开,那么 Job 就无法被调度执行,需要重新连接数据库。
以上是针对 Oracle 11g 数据库中 DBMS_JOB 没有定时执行的一些可能原因和解决方案,您可以根据实际情况进行排查和解决。