Skip to Main Content

Breadcrumb

Question and Answer

Connor McDonald

Thanks for the question, Hariharan.

Asked: June 19, 2017 - 8:45 am UTC

Last updated: August 03, 2017 - 1:12 am UTC

Version: 11.2.0.3

Viewed 10K+ times! This question is

You Asked

Hi,

We are getting enq: FB - contention for some client and its because of Insert statement. We have Very few Oracle document and SR's created to this can we have an idea on why we are getting this and way to find and fix the issue ( possible ways )

Top 5 Timed Foreground Events

Event Waits Time(s) Avg wait (ms) % DB time Wait Class
enq: FB - contention 43,339 4,711,908 108722 99.40 Other


Thanks in Advance,


and Connor said...

"FB" stands for "format block". When we need to allocate/format some blocks from a datafile, we need to make sure two people (sessions) are not trying to do this for the same blocks.

But based on those numbers, that looks like something might not be right. There's been some bugs in the past - see MOS note 1379986.1.

I'd log a call with Support and provide the *full* AWR report to them

Rating

  (3 ratings)

Is this answer out of date? If it is, please let us know via a Comment

Comments

Hariharan Senthil pandiyan, June 20, 2017 - 5:04 am UTC

Thanks for the update, I will check further.

Hariharan Senthil pandiyan, June 26, 2017 - 12:48 pm UTC

Thanks,

enq: FB Contention on 12.1.0.2

Eric Vasquez, August 02, 2017 - 6:22 am UTC

I am having same issue, I reviewed the document suggested but those bugs apply to lower version, I have the patches suggested, running in EXA machine.
I am doing RAT in two DBs, in one of them is running but not in the other.
I review the disk types and in the DB that is running no having enq: FB contention has NORMAL redundancy.

I reviewed and follow the doc: ID 2277855.1
SQL> select session_id,SQL_ID,EVENT,P1,P1text,P2,P3,WAIT_TIME,SESSION_STATE,TIME_WAITED from v$active_session_history where event like '%FB%';
SQL> select name from v$tablespace where ts#=P2; ----------->>> P2 value from above
SQL> SELECT dbms_utility.data_block_address_block(p3) "BLOCK", dbms_utility.data_block_address_file(p3) "FILE" from dual; ---->>> P3 Value from Above

I need to determine the table for that block and file.
I am using :
SELECT segment_type, segment_name
FROM dba_extents
WHERE file_id = 1
AND 3840 BETWEEN block_id AND block_id + blocks -1;

I am creating a SR w/ Support, any help will be welcome.

Thank you
- Eric
Connor McDonald
August 03, 2017 - 1:12 am UTC

I'll just be doubling up the work that Support will be doing - but please keep us posted on what they have to say.

More to Explore

Performance

Get all the information about database performance in the Database Performance guide.