Deadlock due to HCC(Exadata)

Block level deaklock issue could happen when HCC is enabled.

Hybrid Columnar Compression(HCC) is the way Exadata compresses the data. HCC utilizes a combination of both row and columnar methods for storing data.
A logical construct, called the Compression Unit (CU), is used to store a set of compressed data.

HCC uses one lock per Compression Unit… instead of per row.
That is the reason we could see so many block contention in replication software.

As you can imagine, user could get endless deadlock issues even though they increased NI_TRANS & PCT_FREE a lot.
Actually, as this issue is not from ITL shortage issue.

As a workaround, you could disable HCC on the table in Oracle11g in case most operations were UPDATE and the UPDATE operation decompresses the existing data.
That is an expected behavior on HCC.
You should realize that you don’t need to keep the table with HCC for that reason.

Fortunately,
In Oracle 12c, user can choose a “Row level locking” instead of “Compression Unit Locking”

 

Query: How many rows are in the Oracle block

You may want to use the query below to check the degree of data contention.

SELECT dbms_rowid.rowid_block_number(rowid) blockno, count(*) cnt
FROM compress_test_table
GROUP BY dbms_rowid.rowid_block_number(rowid);
Member Login
Welcome, (First Name)!

Forgot? Show
Log In
Enter Member Area
My Profile Not a member? Sign up. Log Out