大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
oracle 表的统计信息,跟他的执行计划很有关联
在网站设计制作、网站建设过程中,需要针对客户的行业特点、产品特性、目标受众和市场情况进行定位分析,以确定网站的风格、色彩、版式、交互等方面的设计方向。成都创新互联还需要根据客户的需求进行功能模块的开发和设计,包括内容管理、前台展示、用户权限管理、数据统计和安全保护等功能。
执行计划的正常是否,跟SQL的执行速度很有关系
首先讲解一下如何查看一个数据库的是否开启自动统计分析
1、查看参数:STATISTICS_LEVEL(在V$PARAMETER表中查看数据的情况),10g中默认为typical,只有将STATISTICS_LEVEL参数设置为ALL或者typical才能让ORACLE识别过期的统计信息。
2、自动表分析每天晚上10开始,那说明应该是JOB定时在处理,自动统计分析的JOB是:GATHER_STATS_JOB。
每个对象都有相应的属性,JOB相应的属性记录在DBA_SCHEDULER_JOBS这个字典中。
在DBA_SCHEDULER_JOBS这个视图中特别需要关注的,enabled这个字段,TRUE:表示启用,FALSE: 表示关闭
3、查看每天JOB的执行情况
通过查看DBA_SCHEDULER_JOB_RUN_DETAILS这个视图,可以观察自动表分析的JOB有没有执行过 GATHER_STATS_JOB
如何开启自动统计信息收集
1、修改参数值
alter system set STATISTICS_LEVEL=typical;
2、启动GATHER_STATS_JOB这个JOB
BEGIN
DBMS_SCHEDULER.DISABLE('GATHER_STATS_JOB');
END;
如何关闭统计信息
1、修改参数值
alter system set STATISTICS_LEVEL=basic;
2、关闭GATHER_STATS_JOB这个JOB
BEGIN
DBMS_SCHEDULER.ENABLED('GATHER_STATS_JOB');
END;
监控数据的变化程度,关于增、删、改数据的变化量
记录在DBA_TAB_MODIFICATIONS视图里面。我们在查询DBA_TAB_MODIFICATIONS视图的时候有可能查询不到结果,或者查询的结果不准确,这个时候需要用DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO过程将内存中的信息刷新到该视图中
select * from v$access a where object like '存储过程名%' --存储过程名为大写字母
select * from v$session where sid=74 --74为上一个查询得到的SID值,可能是多个,这里找到他们对应的serial#值
alter system kill session '74,118' --参数为'sid,serial#',用于停止这个回话,同时也终止了存储过程
找出正在执行的JOB 编号及其会话编号 SELECT SID,JOB FROM DBA_JOBS_RUNNING; 停止该JOB 的执行 SELECT SID,SERIAL# FROM V$SESSION WHERE SID='SID'; ALTER SYSTEM KILL SESSION 'SID,SERIAL'; EXEC DBMS_JOB.BROKEN(JOB,TRUE); 实例分析: 1,查询正在运行的Job,通过查询有两个,和进程占用较多的是两个ORACLE 进程符合。 SQL SELECT SID,JOB FROM DBA_JOBS_RUNNING; SID JOB ---------- ---------- 12 116 16 117 2,查询正在运行的job 的信息 SQL SELECT SID,SERIAL# FROM V$SESSION WHERE SID='12'; SID SERIAL# ---------- ---------- 12 4 SQL SELECT SID,SERIAL# FROM V$SESSION WHERE SID='16'; SID SERIAL# ---------- ---------- 16 1 3,利用查询出来的job 信息将job 结束掉 SQL ALTER SYSTEM KILL SESSION '12,4'; System altered. SQL ALTER SYSTEM KILL SESSION '16,1'; System altered. 4,如果不希望运行上述job 的话,可以将job 设置为broken. EXEC DBMS_JOB.BROKEN(116,TRUE); EXEC DBMS_JOB.BROKEN(117,TRUE);