关于Oracle Job 不执行
2008-11-11 19:48
我们用的生产环境Job是可以正常执行的,但是在测试环境是不可以执行的
在网上查了一下原因如下
SQL> show parameter job
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
job_queue_processes integer 0
job_queue_processes 这个参数设置成了0,可以通过语句
ALTER SYSTEM SET JOB_QUEUE_PROCESSES = 10
来解决
另外,看了一下Eygle的文章也有帮助,下面是链接过来的文章
转自:http://www.eygle.com/archives/2004/11/job_can_not_execute_auto.html
昨天接到研发人员报告,数据库定时任务未正常执行,导致某些操作失败。
开始介入处理该事故.
系统环境:
SunOS DB 5.8 Generi ......
创建myt表并插入数据,如下:
create table myt(name varchar2,create_time date)
insert into myt values('john',to_date(sysdate,'DD-MON-YY'));
insert into myt values('tom',to_date(sysdate,'DD-MON-YY'));
insert into myt values('lili',to_date(sysdate,'DD-MON-YY'));
在sql*plus中显示如下:
SQL> select * from myt;
NAME CREATE_TIME
---------- -----------
john 2010-5-19
tom 2010-5-19
lili 2010-5-19
SQL> select 1 from myt;
1
----------
1
1
1
SQL> select 0 from myt;
0
----------
......
SELECT...FOR UPDATE 语句的语法如下:
SELECT ... FOR UPDATE [OF column_list][WAIT n|NOWAIT][SKIP LOCKED];
其中:
OF 子句用于指定即将更新的列,即锁定行上的特定列。
WAIT 子句指定等待其他用户释放锁的秒数,防止无限期的等待。
“使用FOR UPDATE WAIT”子句的优点如下:
1防止无限期地等待被锁定的行;
2允许应用程序中对锁的等待时间进行更多的控制。
3对于交互式应用程序非常有用,因为这些用户不能等待不确定
4 若使用了skip locked,则可以越过锁定的行,不会报告由wait n 引发的‘资源忙’异常报告
示例:
create table t(a varchar2(20),b varchar2(20));
insert into t values('1','1');
insert into t values('2','2');
insert into t values('3','3');
insert into t values('4','4');
现在执行如下操作:
在plsql develope中打开两个sql窗口,
在1窗口中运行sql
select * from t where a='1' for update;
在2窗口中运行sql1
1. select * f ......
指标名称 指标描述 指标范围 指标单位
1.关于实例效率(Instance Efficiency Percentages)的性能指标
缓冲区未等待率
(Buffer Nowait %) 指在缓冲区中获取Buffer的未等待比率。 该指标的值应接近100%,如果该值较低,则可能要增大buffer cache。 %
Redo缓冲区未等待率
(Redo NoWait %) 指在Redo缓冲区获取Buffer的未等待比率。 该指标的值应接近100%,如果该值较低,则有2种可能的情况:
1) online redo log没有足够的空间;
2)log切换速度较慢。 %
缓冲区命中率
(Buffer Hit %) 指数据块在数据缓冲区中的命中率。 该指标的值通常应在90%以上,否则,需要调整。如果持续小于90%,可能要加大db_cache_size。但有时,缓存命中率低并不意味着cache设置小了,可能是潜在的全表扫描降低了缓存命中率。 %
内存排序率
(In-memory Sort %) 指排序操作在内存中进行的比率。当查询需要排序的时候,数据库会话首先选择在内存中进行排序,当内存大小不足的时候,将使用临时表空间进行磁盘排序,但磁盘排序效率和内存排序效率相差好几个数量级。 该指标的值应接近100%,如果指标的值较低,则表示出现了大量排序时的磁盘I/O操作,可考虑加大sort_area_size参数的值。 %
共 ......
指标名称
指标描述
指标范围
指标单位
1.关于实例效率(Instance Efficiency Percentages)的性能指标
缓冲区未等待率
(Buffer Nowait %)
指在缓冲区中获取Buffer的未等待比率。
该指标的值应接近100%,如果该值较低,则可能要增大buffer cache。
%
Redo缓冲区未等待率
(Redo NoWait %)
指在Redo缓冲区获取Buffer的未等待比率。
该指标的值应接近100%,如果该值较低,则有2种可能的情况:
1.online redo log没有足够的空间;
2.log切换速度较慢。
%
缓冲区命中率
(Buffer Hit %)
指数据块在数据缓冲区中的命中率。
该指标的值通常应在90%以上,否则,需要调整。如果持续小于90%,可能要加大db_cache_size。但有时,缓存命中率低并不意味着cache设置小了,可能是潜在的全表扫描降低了缓存命中率。
%
内存排序率
(In-memory Sort %)
指排序操作在内存中进行的比率。当查询需要排序的时候,数据库会话首先选择在内存中进行排序,当内存大小不足的时候,将使用临时表空间进行磁盘排序,但磁盘排序效率和内存排序效率相差好几个数量级。
该指标的值应接近100%,如果 ......
1 设计表过程中 尽量采用数据驱动思想
比如说用户注册 因为业务情况 需要4个字段不同组合来表示用户从哪里注册的。 业务部需要不断扩展新的渠道来招揽用户,比如在某个网站做了广告。而不能在业务程序或存储过程直接修改
update f_userinfo
set f_regchannel='新浪首页广告注册'
where f_regurl='http://www.sina.com.cn' and f_come='index.html' and f_cooper=7
直接做到业务配置表 己所谓的基础表。 f_id,f_regchannel,f_regurl,f_come,f_cooper,f_channel.
在过程中采用游标逐行读取,组合成动态SQL。
2 存储过程或者业务端逻辑程序 不能在代码中含有固定的 数值,字符,时间等条件。
比如说 where name='shark' and money=10000 这两个值应该存在配置表中。
我们有很多理由来推脱,比如开发项目时候需求做的不够;项目时间太紧了;业务不断变化;没有测试部门。
假如上面的条件 写成 这样 where name='shak'。
当用户提出数据有问题,你去查发现 ......