Oracle Chained Rows
Version 19.2.0.1

Library Note Morgan's Library Page Header
For how many years have you been working with physical servers that are starving your database of the memory necessary to deploy important new performance features such as the Result Cache, Memoptimize Pool, In-Memory Aggregation, In-Memory Column Store, and Full Database Caching? Too long? Contact me to learn how to improve all queries ... not just some queries.
 
Manufacturing Chained Rows
Courtesy of Andy Hassall conn sys@pdbdev as sysdba

show parameter db_block_size

conn uwclass/uwclass

SQL> @?/rdbms/admin/utlchn1.sql

CREATE TABLE t (
col1  VARCHAR2(4000),
col2  VARCHAR2(4000));

INSERT INTO t VALUES ('x', '1');
INSERT INTO t VALUES ('xx', '2');

INSERT INTO t
(col1, col2)
VALUES
(LPAD('x',4096,'x'), LPAD('x',4096,'x'));

INSERT INTO t VALUES ('xxxx', '4');
INSERT INTO t VALUES ('xxxxx', '5');
COMMIT;

ANALYZE TABLE t LIST CHAINED ROWS INTO chained_rows;

set linesize 121
col table_name format a15
col head_rowid format a20

SELECT sys_op_rpb(rowid), table_name, head_rowid, analyze_timestamp
FROM chained_rows;

SELECT rowid, dbms_rowid.rowid_block_number(rowid) BN, sys_op_rpb(rowid), length(col1), length(col2)
FROM t;

SELECT table_name, chain_cnt
FROM user_tables
WHERE chain_cnt <> 0
ORDER BY 1;

ANALYZE TABLE t COMPUTE STATISTICS;

SELECT table_name, chain_cnt
FROM user_tables
WHERE chain_cnt <> 0
ORDER BY 1;

Related Topics
Analyze
DBMS_IOT
Tables
What's New In 18cR3
What's New In 19cR2

Morgan's Library Page Footer
This site is maintained by Dan Morgan. Last Updated: This site is protected by copyright and trademark laws under U.S. and International law. © 1998-2019 Daniel A. Morgan All Rights Reserved
DBSecWorx