11.2.0.2的SPM的一个bug

 

 

将该参数optimizer_capture_sql_plan_baselines 设置为true后,出现大量的等待事件:enq: HW - contention

 

select * from VW_SESSION_WAIT_LHR;

 

 

SELECT a.SID,

a.serial#,

a.WAIT_CLASS,

a.EVENT,

a.BLOCKING_SESSION,

a.SQL_TEXT

FROM VW_SESSION_LHR a

WHERE a.EVENT = 'enq: HW - contention';

 

 

 

Sql语句:

 

MERGE INTO sqlobj$data

USING dual

ON (:1 IS NULL)

WHEN MATCHED THEN

UPDATE

SET comp_data = :2

WHERE signature = :3

AND category = :4

AND obj_type = :5

AND plan_id = :6

WHEN NOT MATCHED THEN

INSERT

(signature,

category,

obj_type,

plan_id,

comp_data,

spare1,

spare2)

VALUES

(:7,

:8,

:9,

:10,

:11,

NULL,

NULL);

 

 

数据库版本:

 

 

解决:

总体来说是Oracle的一个bug

第一步:先把该属性禁用 alter system  Set optimizer_capture_sql_plan_baselines=false;

第二步:采用如下的存过把已经捕捉到的执行计划全部删掉,不然系统需要等待很久才能恢复正常,因为当前的很多sql都是正在更新系统表 sqlobj$data (或者使用sys用户直接把相关表清空也可以,同一个道理,主要是减少表的数据量)

 

 

---使用拥有dba角色的用户多次执行如下存过,要多次执行哟,直到 DBA_SQL_PLAN_BASELINES 中查询不出来数据为止

 

DECLARE

v BINARY_INTEGER;

BEGIN

 

FOR cur IN (SELECT * FROM DBA_SQL_PLAN_BASELINES a) LOOP

BEGIN

v := DBMS_SPM.drop_sql_plan_baseline(sql_handle => cur.SQL_HANDLE);

EXCEPTION

WHEN OTHERS THEN

NULL;

END;

 

END LOOP;

 

EXCEPTION

WHEN OTHERS THEN

dbms_output.put_line('error:' || SQLCODE || ',' || SQLERRM);

END;

 

 

 

 

 

Description

This defect has many apparent unrelated symptoms :

1) An unexpected growth is observed in sysaux tablespace with

optimizer_capture_sql_plan_baselines set to true.

2) Excessive redo generation

3) Additional recursive calls, increasing parsing and execution time.

   

The issue is caused by SQL Plan Management that keeps collecting baselines

in every execution instead of just on hard parsing.

   

Rediscovery Notes:

 Query on v$sysaux_occupants shows SQL_MANAGEMENT_BASE as one of the highest.

   

The following query is observed in SQL traces:

   

MERGE INTO sqlobj$data    

USING dual ON (:1 IS NULL)

WHEN MATCHED THEN         

UPDATE SET comp_data = :2 

  WHERE signature = :3    

    AND category = :4     

      AND obj_type = :5   

        AND plan_id = :6  

  WHEN NOT MATCHED THEN   

      INSERT (signature, category, obj_type, plan_id, comp_data,

              spare1, spare2)

      VALUES (:7, :8, :9, :10, :11, null, null);

   

Workaround

 Set optimizer_capture_sql_plan_baselines=false

   

HOOKS CBO:SPM parameter:optimizer_capture_sql_plan_baselines LIKELYAFFECTS XAFFECTS_11.1.0.6 XAFFECTS_V11010006 AFFECTS=11.1.0.6 XAFFECTS_11.1.0.7 XAFFECTS_V11010007 AFFECTS=11.1.0.7 XAFFECTS_11.2.0.1 XAFFECTS_V11020001 AFFECTS=11.2.0.1 XAFFECTS_11.2.0.2 XAFFECTS_V11020002 AFFECTS=11.2.0.2 XPRODID_5 PRODUCT_ID=5 PRODID-5 RDBMS XCOMP_RDBMS COMPONENT=RDBMS TAG_CBO TAG_PERF TAG_SPACEUSE TAG_SPM TAG_SYSAUX CBO PERF SPACEUSE SPM SYSAUX FIXED_11.2.0.3 FIXED_12.1.0.1 FIXED_WIN:B107P41 FIXED_WIN:B202P04

Further details on this issue can be found in Note:1304775.1

Please note: The above is a summary description only. Actual symptoms can vary. Matching to any symptoms here does not confirm that you are encountering this problem. For questions about this bug please consult Oracle Support.

References

Bug:9910484 (This link will only work for PUBLISHED bugs)Note:245840.1 Information on the sections in this article

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26736162/viewspace-1248506/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26736162/viewspace-1248506/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
clear;clc parentdir = 'F:\data process\fMRI\fmrioutput'; % 定义储存各被试源文件的上级文件夹 cd(parentdir); % 进入这个上级文件夹 allsubjects = dir('sub*');%查找该文件夹下的所有被试 subinfos = numel(allsubjects); for i=1:numel(allsubjects) % 对每个被试进行循环 cursubject = allsubjects(i).name; % 找到当前被试的名字 matlabbatch=cell(1); curWPAT = fullfile(parentdir,cursubject,'WPAT'); curfucout=fullfile('F:\data process\fMRI\fmrioutput',cursubject,'WPAT') matlabbatch{1}.spm.stats.fmri_spec.dir = {curfucout}; matlabbatch{1}.spm.stats.fmri_spec.sess.scans = cellstr(spm_select('ExtFPList', curWPAT, '^sw*.nii', Inf)) matlabbatch{1}.spm.stats.fmri_spec.timing.units = 'scans'; matlabbatch{1}.spm.stats.fmri_spec.timing.RT = 2; matlabbatch{1}.spm.stats.fmri_spec.timing.fmri_t = 16; matlabbatch{1}.spm.stats.fmri_spec.timing.fmri_t0 = 8; %% matlabbatch{1}.spm.stats.fmri_spec.sess.cond = struct('name', {}, 'onset', {}, 'duration', {}, 'tmod', {}, 'pmod', {}, 'orth', {}); matlabbatch{1}.spm.stats.fmri_spec.sess.multi = {'D:\data process\fMRI\onsets\subject(i)_run1.mat'}; matlabbatch{1}.spm.stats.fmri_spec.sess.regress = struct('name', {}, 'val', {}); matlabbatch{1}.spm.stats.fmri_spec.sess.tempxx=dir(fullfile(curfucout,'rp*.txt')) matlabbatch{1}.spm.stats.fmri_spec.sess.hpf = 128; matlabbatch{1}.spm.stats.fmri_spec.fact = struct('name', {}, 'levels', {}); matlabbatch{1}.spm.stats.fmri_spec.bases.hrf.derivs = [0 0]; matlabbatch{1}.spm.stats.fmri_spec.volt = 1; matlabbatch{1}.spm.stats.fmri_spec.global = 'None'; matlabbatch{1}.spm.stats.fmri_spec.mthresh = 0.8; matlabbatch{1}.spm.stats.fmri_spec.mask = {''}; matlabbatch{1}.spm.stats.fmri_spec.cvi = 'AR(1)'; matlabbatch{2}.spm.stats.fmri_est.spmmat(1) = cfg_dep('fMRI model specification: SPM.mat File', substruct('.','val', '{}',{1}, '.','val', '{}',{1}, '.','val', '{}',{1}), substruct('.','spmmat')); matlabbatch{2}.spm.stats.fmri_est.write_residuals = 0; matlabbatch{2}.spm.stats.fmri_est.method.Classical = 1; matlabbatch{3}.spm.stats.con.spmmat(1) = cfg_dep('Model estimation: SPM.mat File', substruct('.','val', '{}',{2}, '.','val', '{}',{1}, '.','val', '{}',{1}), substruct('.','spmmat')); matlabbatch{3}.spm.stats.con.consess{1}.tcon.name = 'Old'; matlabbatch{3}.spm.stats.con.consess{1}.tcon.weights = 1; matlabbatch{3}.spm.stats.con.consess{1}.tcon.sessrep = 'none'; matlabbatch{3}.spm.stats.con.delete = 0; end;怎么改
05-24
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值