Oracle cjq0进程测试
测试流程:
.CJQ进程不存在
.模拟问题处理
.问题总结 一、问题现象
CJQ0进程不存在
[root@adg1 ~]# ps -ef|grep cjq
root : pts/ :: grep cjq
[oracle@adg1 ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4. Production on Sun Jul ::
SQL> show parameter job_que
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
job_queue_processes integer 二、模拟问题处理
.JOB创建
)创建JOB测试
https://www.cnblogs.com/lijiasnong/p/3382578.html
--创建表
--truncate table TT;
SQL> GRANT EXECUTE ON DBMS_JOB TO yz;
create table TT(C_DATE DATE);
create or replace procedure PRO_TT is
begin
insert into TT values(sysdate);
commit;
end;
/
exec PRO_TT;
SQL> select * from tt; declare
job number;
begin
dbms_job.submit(job,'PRO_TT;',sysdate,'sysdate+1/1440');
end;
/ --
begin
dbms_job.remove();
commit;
end;
/ --
SQL> select JOB,WHAT,BROKEN from user_jobs;
JOB WHAT B
---------- ----------------------------------------------------------------- -
PRO_TT; N
--dbms_job.broken(,false,sysdate); 第一次执行job
begin
dbms_job.run();
end;
/ DB_Alert
Sun Jul ::
Starting background process CJQ0
Sun Jul ::
CJQ0 started with pid=, OS id= [root@adg1 ~]# ps -ef|grep cjq
oracle : ? :: ora_cjq0_tt
root : pts/ :: grep cjq SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
SQL> select * from tt ;
C_DATE
-------------------
-- ::
-- ::
--上述操作是,创建一个JOB,并测试手工调用执行存储过程及手工执行JOB均有效,会自动插入一条测试数据。 正常情况下,JOB是间隔1分钟,插入一条记录
select job,
log_user,
to_char(last_date,'yyyy-mm-dd hh24:mi:ss') last_date,
to_char(next_date,'yyyy-mm-dd hh24:mi:ss') next_date,
interval,
what,
FAILURES
from user_jobs where job=
/
JOB LOG_USER LAST_DATE NEXT_DATE INTERVAL WHAT FAILURES
---------- ---------- ------------------- ------------------- -------------------- -------------------- ----------
YZ -- :: -- :: sysdate+/ PRO_TT;
SQL> select * from tt ;
C_DATE
-------------------
-- ::
-- ::
SQL> select sysdate from dual;
SYSDATE
-------------------
-- ::
上述验证,发现JOB并未自动调用执行??? )JOB异常,问题排查
2.1 查询日志或者进程信息
db alert无异常,job无异常
SQL> select * from dba_jobs_running;
no rows selected SQL> SELECT USERNAME,PNAME,PROGRAM,TRACEFILE from v$process where PNAME like '%CJQ%';
USERNAME PNAME PROGRAM TRACEFILE
--------------- ----- -------------------------------------------------------------------------------------------------
oracle CJQ0 oracle@adg1 (CJQ0) /u01/app/oracle/diag/rdbms/tt/tt/trace/tt_cjq0_4851.trc
SQL> select * from v$bgprocess where name='CJQ0';
PADDR PSERIAL# NAME DESCRIPTION ERROR
---------------- ---------- ----- ---------------------------- ------
00000000F552A288 CJQ0 Job Queue Coordinator [oracle@adg1 ~]$ ps -ef|grep cjq
oracle : pts/ :: grep cjq
本次环境发现cjq进程不存在!!!
Jobs Not Executing Automatically (文档 ID 313102.1) 2.2 重置参数
SQL> alter system set job_queue_processes=;
SQL> alter system set job_queue_processes=;
DB_Alert
Sun Jul ::
ALTER SYSTEM SET job_queue_processes= SCOPE=BOTH;
Sun Jul ::
ALTER SYSTEM SET job_queue_processes= SCOPE=BOTH; [root@adg1 ~]# ps -ef|grep cjq
root : pts/ :: grep cjq
通过重置job_queue_process参数并未达到启动cjq进程的目的 2.3 查询sga 内存区域状态,是否为1
SQL> oradebug setmypid
Statement processed.
SQL> oradebug dumpvar sga kkjsre
sword kkjsre_ [, ) = 2.4 修改参数,event
IF -Jobs Do Not Run Automatically as CJQ is Not Getting Started when Jobs are to be Run (文档 ID 2081753.1)
Upgraded from 10.2.0.4 to 11.2.0.2
SQL> alter system set events '10195 trace name context off'; 2.5 手工调用执行Job无异常
begin
dbms_job.run();
end;
/
但是进程还是未启动 2.6 终于发现问题
测试环境JOB,无法自动调用,根据文档排查,测试环境处于受限模式
http://blog.itpub.net/29487349/viewspace-1663945/
受限模式,配置后,已连接session不影响,新的session无restricted session权限则无法登陆db SQL> select instance_name,logins from v$instance;
INSTANCE_NAME LOGINS
---------------- ----------
tt RESTRICTED
SQL> alter system disable restricted session;
System altered.
SQL> select instance_name,logins from v$instance;
INSTANCE_NAME LOGINS
---------------- ----------
tt ALLOWED
SQL> select * from tt ;
C_DATE
-------------------
-- ::
-- ::
-- ::
-- ::
-- ::
-- ::
rows selected. SQL> truncate table tt;
Table truncated. Alert 日志,恢复正常情况后,job自动调用执行,自动后台启动cjq进程服务。
Sun Jul ::
Restarting dead background process CJQ0
Sun Jul ::
CJQ0 started with pid=, OS id= SQL> alter system set job_queue_processes=;
Sun Jul ::
Stopping background process CJQ0
Sun Jul ::
ALTER SYSTEM SET job_queue_processes= SCOPE=BOTH;
SQL> alter system set job_queue_processes=;
[oracle@adg1 ~]$ ps -ef|grep cjq
oracle : pts/ :: grep cjq 总结:
.修改job_queue_processes,从>0修改为0,并且cjq0进程存在,则会kill cjq0进程,并且后续的job无法自动调用执行
.修改参数job_queue_processes >,无法立即启动cjq0进程,而需要配合Job定时调用一个工作,会先启动cjq0进程(如果参数为0,则无法启动)
.手工执行调用存储过程,job id 并非能够立即启动cjq0进程,修改events '10195 trace name context off'只是解决,
存在CJQ进程或者10g升级至11g job无法自动执行问题处理;
.如果数据库连接状态为RESTRICTED 受限模式,如果没有相应权限,则JOB无法自动执行;
.如果cjq进程存在,但是job并不能自动调用执行,并且sga内存区域不为1 ,则需要重启或者根据mos
Jobs do not execute automatically (Doc ID 309945.1)进行处理
SQL> exec dbms_ijob.set_enabled(true);

最新文章

  1. Ajax实现原理,代码封装
  2. 用File判断D盘下面是否还有txt文件
  3. Sort Characters By Frequency
  4. 创建Xml文件与修改Xml文件
  5. 指定URL,计算文件大小
  6. 比较不错的一个ios找茬游戏源码
  7. WFS
  8. ANDROID_MARS学习笔记_S05_001_用SensorManager获取传感器
  9. LeetCode——Longest Substring Without Repeating Characters
  10. LeeCode-String to Integer (atoi)
  11. 「Foundation」集合
  12. C# 6 与 .NET Core 1.0 高级编程 - 38 章 实体框架核心(上)
  13. 移动端ios 输入框fixed固定在底部 焦点时乱跳加遮盖问题的解决 转自zhangyunling 加个人项目解决方案
  14. 安卓6.0新特性在Fragment申请运行时权限
  15. Java Web之Tomcat
  16. python面试题~反射,元类,单例
  17. .Net MVC关于子页面引用js库问题
  18. nginx-2.nginx是什么
  19. Unity---Inspector面板自定义
  20. Zip伪加密 破解ZIP密码

热门文章

  1. 如何使用eclipse创建简单的servlet
  2. PEP 476 -- Enabling certificate verification by default for stdlib http clients
  3. http://stblog.baidu-tech.com/?p=1684) coredump调试记录 - PHP篇 原创: 扶墙 贝壳产品技术 今天
  4. Tosca:键盘输入字符串
  5. SSIM (Structural SIMilarity) 结构相似性
  6. Java之Object对象中的wait()和notifyAll()用法
  7. 五、postman-sandbox
  8. asp乱码问题
  9. xcopy命令拷贝文件夹和文件
  10. win10更新之后vmware使用失败