Supplemental Logging
Download
Report
Transcript Supplemental Logging
Supplemental
Logging
Julian Dyke
Independent Consultant
Web Version
1
© 2006 Julian Dyke
juliandyke.com
Supplemental
Logging
2
© 2006 Julian Dyke
juliandyke.com
Supplemental Logging
Example
ALTER DATABASE
ADD SUPPLEMENTAL LOG DATA
(PRIMARY KEY) COLUMNS;
CREATE TABLE t1
(
c1 NUMBER,
c2 NUMBER,
c3 NUMBER
);
ALTER TABLE t1
ADD CONSTRAINT t1_pk
PRIMARY KEY (c1,c2);
Redo Header
Change Header
KTU
KDO
c3 = 1
Supplementary Header
c1 = 100
c2 = 20
Change Header
INSERT INTO t1 VALUES (100,20,1);
UPDATE t1 SET c3 = 2
WHERE c1 = 100
AND c2 = 20;
3
© 2006 Julian Dyke
KTU
KDO
c3 = 2
juliandyke.com
Supplemental Logging
Minimal Supplemental Logging
Required for LogMiner
Includes additional information in redo stream
Minimal supplemental logging can be enabled using:
ALTER DATABASE
ADD SUPPLEMENTAL LOG DATA;
Minimal supplemental logging can be enabled using:
ALTER DATABASE
DROP SUPPLEMENTAL LOG DATA;
4
© 2006 Julian Dyke
juliandyke.com
Supplemental Logging
Minimal Supplemental Logging
To check whether minimal supplemental logging is enabled:
SELECT supplemental_log_data_min
FROM v$database;
5
Returns YES or IMPLICIT if enabled
Allows LogMiner to support
chained rows
clustered tables
index organized tables (IOTs)
© 2006 Julian Dyke
juliandyke.com
Supplemental Logging
Database Supplemental Logging
6
Can be enabled
For all columns
For primary key columns
For unique columns
For foreign key columns
All columns
All columns are included with the exception of:
LONG
LOB
LONG RAW
Abstract Data Types
Collections
© 2006 Julian Dyke
juliandyke.com
Supplemental Logging
Database Supplemental Logging
To enable supplemental logging at database level:
ALTER DATABASE
ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
ALTER DATABASE
ADD SUPPLEMENTAL LOG DATA (UNIQUE) COLUMNS;
ALTER DATABASE
ADD SUPPLEMENTAL LOG DATA (FOREIGN KEY) COLUMNS;
ALTER DATABASE
ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
7
Database can be mounted and open
© 2006 Julian Dyke
juliandyke.com
Supplemental Logging
Database Supplemental Logging
To disable supplemental logging at database level:
ALTER DATABASE
DROP SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
ALTER DATABASE
DROP SUPPLEMENTAL LOG DATA (UNIQUE) COLUMNS;
ALTER DATABASE
DROP SUPPLEMENTAL LOG DATA (FOREIGN KEY) COLUMNS;
ALTER DATABASE
DROP SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
8
© 2006 Julian Dyke
juliandyke.com
Supplemental Logging
Database Supplemental Logging
To monitor database level supplemental logging:
SELECT
supplemental_log_data_min,
supplemental_log_data_pk,
supplemental_log_data_ui,
supplemental_log_data_fk,
supplemental_log_data_all
FROM v$database;
9
© 2006 Julian Dyke
juliandyke.com
Supplemental Logging
Log Groups
10
Implemented as constraints
If no name specified for log group then system constraint
name will be allocated e.g SYS_C005223
Can be
Unconditional
Before image of supplemental columns always included
in redo
Conditional
Before image of supplemental columns only included in
redo if supplemental columns have changed
In Oracle 10.2, minimal supplemental logging must be enabled
at database level before supplemental logging can be enabled
at table level
© 2006 Julian Dyke
juliandyke.com
Supplemental Logging
Unconditional Supplemental Log Groups
To specify an unconditional supplemental log group for
primary key column(s):
ALTER TABLE t1
ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
To specify an unconditional supplemental log group that
includes all table columns:
ALTER TABLE t1
ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
To specify an unconditional supplemental log group that
includes selected columns:
ALTER TABLE t1
ADD SUPPLEMENTAL LOG GROUP t1_g1 (c1,c3) ALWAYS;
11
© 2006 Julian Dyke
juliandyke.com
Supplemental Logging
Conditional Supplemental Log Groups
To specify a conditional supplemental log group for unique
key column(s) and/or bitmap index column(s):
ALTER TABLE t1
ADD SUPPLEMENTAL LOG DATA (UNIQUE) COLUMNS;
To specify a conditional supplemental log group that includes
all foreign key columns:
ALTER TABLE t1
ADD SUPPLEMENTAL LOG DATA (FOREIGN KEY) COLUMNS;
To specify a conditional supplemental log group that includes
selected columns:
ALTER TABLE t1
ADD SUPPLEMENTAL LOG GROUP t1_g1 (c1,c3);
12
© 2006 Julian Dyke
juliandyke.com
Supplemental Logging
Dropping Supplemental Log Groups
To drop a supplemental log group:
ALTER TABLE t1
DROP SUPPLEMENTAL LOG GROUP t1_g1;
To drop supplemental logging of data use:
ALTER TABLE t1
DROP SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
ALTER TABLE t1
DROP SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
ALTER TABLE t1
DROP SUPPLEMENTAL LOG DATA (UNIQUE) COLUMNS;
ALTER TABLE t1
DROP SUPPLEMENTAL LOG DATA (FOREIGN KEY) COLUMNS;
13
© 2006 Julian Dyke
juliandyke.com
Supplemental Logging
DBA_LOG_GROUPS view
Describes currently configured supplemental log groups:
14
OWNER
VARCHAR2(30)
LOG_GROUP_NAME
VARCHAR2(30)
TABLE_NAME
VARCHAR2(30)
LOG_GROUP_TYPE
VARCHAR2(19)
ALWAYS
VARCHAR2(11)
GENERATED
VARCHAR2(14)
LOG_GROUP_TYPE can be:
PRIMARY KEY LOGGING
UNIQUE KEY LOGGING
FOREIGN KEY LOGGING
ALL COLUMN LOGGING
USER LOG GROUP
© 2006 Julian Dyke
ALWAYS can be:
ALWAYS
CONDITIONAL
GENERATED can be
GENERATED NAME
USER NAME
juliandyke.com
Supplemental Logging
DBA_LOG_GROUP_COLUMNS view
Describes columns in currently configured supplemental log
groups:
OWNER
VARCHAR2(30)
LOG_GROUP_NAME
VARCHAR2(30)
TABLE_NAME
VARCHAR2(30)
COLUMN_NAME
VARCHAR2(4000)
POSITION
NUMBER
LOGGING_PROPERTY
VARCHAR2(6)
15
LOGGING_PROPERTY can be:
LOG
NO_LOG
Only applies to log groups (not log data) configurations
© 2006 Julian Dyke
juliandyke.com
Thank you for your interest
info@juliandyke.com
16
© 2006 Julian Dyke
juliandyke.com