Você está na página 1de 16

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 Redo Header
ADD SUPPLEMENTAL LOG DATA
(PRIMARY KEY) COLUMNS; Change Header
CREATE TABLE t1 KTU
(
KDO
c1 NUMBER,
c2 NUMBER, c3 = 1
c3 NUMBER
Supplementary Header
);
c1 = 100
ALTER TABLE t1
ADD CONSTRAINT t1_pk c2 = 20
PRIMARY KEY (c1,c2);
Change Header
INSERT INTO t1 VALUES (100,20,1);
KTU
UPDATE t1 SET c3 = 2 KDO
WHERE c1 = 100
c3 = 2
AND c2 = 20;

3 © 2006 Julian Dyke 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;

 Returns YES or IMPLICIT if enabled


 Allows LogMiner to support
 chained rows
 clustered tables
 index organized tables (IOTs)

5 © 2006 Julian Dyke juliandyke.com


Supplemental Logging
Database Supplemental Logging
 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

6 © 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;

 Database can be mounted and open

7 © 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
 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

10 © 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:
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:  ALWAYS can be:


 PRIMARY KEY LOGGING  ALWAYS
 UNIQUE KEY LOGGING  CONDITIONAL
 FOREIGN KEY LOGGING  GENERATED can be
 ALL COLUMN LOGGING  GENERATED NAME
 USER LOG GROUP  USER NAME

14 © 2006 Julian Dyke 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)

 LOGGING_PROPERTY can be:


 LOG
 NO_LOG

 Only applies to log groups (not log data) configurations

15 © 2006 Julian Dyke juliandyke.com


Thank you for your interest

info@juliandyke.com

16 © 2006 Julian Dyke juliandyke.com

Você também pode gostar