Oracle MultiVersion Concurrency Control (MVCC) Version 21c
General Information
Library Note
Morgan's Library Page Header
ACE Director Alum Daniel Morgan, founder of Morgan's Library, is scheduling
complimentary technical Workshops on Database Security for the first 30
Oracle Database customers located anywhere in North America, EMEA, LATAM, or
APAC that send an email to
asra_us@oracle.com. Request a Workshop for
your organization today.
The Multi-Version Concurrency model is the single most important concept to understand about Oracle and how it works.
The underlying mechanisms are the control files, system change numbers (SCN), and how Oracle utilizes ROLLBACK/UNDO segments.
First Available
version 4.0
SQL*Plus Demo
conn uwclass/uwclass@pdbdev
CREATE TABLE mvcc_test AS
SELECT * FROM all_objects;
SELECT COUNT(*) FROM mvcc_test;
variable x REFCURSOR
BEGIN
OPEN :x FOR
SELECT COUNT(*) FROM mvcc_test;
END;
/
DELETE FROM mvcc_test WHERE rownum < 20001;
COMMIT;
SELECT COUNT(*) FROM mvcc_test;
variable y REFCURSOR
BEGIN
OPEN :y FOR
SELECT COUNT(*) FROM mvcc_test;
END;
/
DELETE FROM mvcc_test;
COMMIT;
SELECT COUNT(*) FROM mvcc_test;
print x
print y
DROP TABLE mvcc_test PURGE;
CREATE TABLE mvcc_test AS
SELECT * FROM all_objects;
SELECT COUNT(*) FROM mvcc_test;
variable z REFCURSOR
set timing on
BEGIN
OPEN :z FOR
SELECT * FROM mvcc_test;
END;
/
set timing off
DELETE FROM mvcc_test;
COMMIT;
SELECT COUNT(*) FROM mvcc_test;
print z
Try the above demo substituting TRUNCATE for DELETE and COMMIT. What is the difference?