Jerry Held - Oracle Software Downloads
Download
Report
Transcript Jerry Held - Oracle Software Downloads
Session id: 40208
Oracle Streams--Simplifying
Information Sharing in
Oracle10g
Patricia McElroy
Product Manager
Oracle Corporation
Patricia McElroy
Product Manager,
Distributed Systems
Oracle Corporation
Oracle Streams-Simplifying
Information Sharing
in Oracle10g
Agenda
Oracle Streams Overview
Streams Architecture
Hints and Tips
Oracle Streams
Simple solution for information sharing
Provides
–
–
–
–
uniquely flexible replication
message queuing
data warehouse loading
event management and notification
Streams Basic Elements
Capture
Staging
Capture
Staging
Consumption (apply)
Consumption
Multi-Database Streams
Capture
Staging
Consumption
Capture
Staging
Consumption
A stream can
contain multiple
elements from
multiple
databases
Events flow
between
staging areas
Capture
Capture
Streams captures events
–
–
Implicitly: log-based capture of DML and DDL
Explicitly: Direct enqueue of user messages
Captured events are published in the staging area
SQL and messaging APIs in multiple languages
–
JDBC, JMS, PL/SQL, C, SOAP
Log-Based Change Capture
Capture
Low overhead, low latency change capture
–
–
–
Changes to the database are written to the online
redo log
Oracle9i Streams can extract changes from the
log as it is written (hot mining)
Changes are formatted as a Logical Change
Record (LCR), a representation of the change
Logical Change Record
(LCR)
Database change = LCR
– DML
Object name, owner, Type of DML, SCN
Row change = LCR
OLD, NEW values
– DDL
Object name, owner, Type of DDL, SCN
DDL text
– LOB
Multiple LCRs per LOB
Piecewise chunks
Staging
Staging
Streams publishes captured events into a staging
area
–
–
–
–
Implemented as a queue
Supports for new type “any” datatype allows a single
staging area to hold any type of data
All events, LCRs and user-messages, can be staged in the
same queue
Messages remain in staging area until consumed by all
subscribers
Staging Area Propagation
Other staging
areas can
subscribe to
events
Staging
–
Propagation
Staging
–
in same
database
in a remote
database
Events can be
routed through a
series of staging
areas
Transformations
Staging
Transformations can be performed
–
–
–
as events enter the staging area
as events leave the staging area
as events propagate between staging areas
Transformation examples
–
change format, data type, column name, table
name
Consumption
Consumption
Staged events are consumed by subscribers
–
Implicitly: Apply Process
Default Apply
User-Defined Apply
–
Explicitly: Application dequeue via open
interfaces
JMS, C, C++, PLSQL, SOAP (XML/HTTP)
Default Apply
Consumption
The default apply engine will directly apply the
DML or DDL represented in the LCR
–
–
apply to local Oracle table
apply via DB Link to non-Oracle table
Automatic conflict detection with optional
resolution
–
unresolved conflicts placed in exception queue
Parallel apply maximizes concurrency
User-defined Apply
Consumption
User-written custom apply procedures
Written in PL/SQL, Java, C, C++
Uses:
–
–
–
full control over apply
normalizing or denormalizing data
populating related fields or tables
Rule-based Configuration
Consumers subscribe to published events
Content-based subscription
Rule is expressed as SQL WHERE clause
dbms_rule_adm.create_rule(
rule_name=>‘scott.rule1',
condition=>':dml.get_object_owner() = ''SCOTT'' AND
:dml.get_object_name()=''EMP''');
Rule sets for simplicity
Rule sets govern capture,staging, and apply
–
Negative, Inclusion
Dynamic rule maintenance
Replication Rules
Rule-based
–
–
–
DML, DDL
content
True/False
Granularity
–
–
–
–
–
Table
Subset of Table
Schema
Database
Tablespace
Tailored Replication API
DBMS_STREAMS_ADM
–
–
–
–
–
–
ADD_TABLE_RULES
ADD_SCHEMA_RULES
ADD_GLOBAL_RULES
ADD_SUBSET_RULES
MAINTAIN_TABLESPACES
ADD_MESSAGE_RULE
Directed Networks
INSERT …
VALUES (‘EUROPE’,’ ITALY’)
Propagation
independent of Apply
Rules-based
subscription determine if
event is locally applied
–
NY
(master)
EUROPE
London
(subset)
London applies UK only
WAN Friendly
–
–
Send once, fan out
NY-->London,
London-->Milan,
London-->Paris
ITALY
Milan
(subset)
FRANCE
Paris
(subset)
Automatic Conflict Detection
Automatic conflict detection with userselectable conflict resolution routines
–
–
latest timestamp, earliest timestamp, maximum or
minimum value, overwrite, discard
User-definable resolution routines
Conflict detection compares current row
values at receiving site with “old” values of
changed row from the originating site
–
–
–
if match, “new” values are applied to row
if not, conflict resolution method is used, if supplied
if still unresolved, place transaction in exception queue
Ability to disable conflict detection by column or
table
Streams Capture and Apply
empid|job
Update EMP set
job=‘coding’
where
empid=510;
EMP
100 | sales |…
510 | coding| ...
Queue
----LCRs
Capture
Redo Log
|..
Propagation
ACK
Queue
-----LCRs
Apply
EMP
Capture
• Background process, CPnn
• Invokes Logminer
• Staged in buffer queue (SGA)
Queue
----LCRs
Ack
• Restartable
Capture
Redo Log
•Automatic Flow Control
Capture Restart
• Every database change is in redo
• Ordered by SCN
• Last enqueued SCN
• capture restart
• Last acknowledged SCN
• instance restart
Queue
----LCRs
Ack
Capture
Redo Log
Downstream Capture
Zero impact at source site
Changes are captured by another database
–
–
Same Platform
Archive logs
Log transport services/ RFS to move logs
Propagation
• Job Queue processes
IMPLICIT
CAPTUR
E
IMPLICIT
APPLY
Propagation
LCRs
In memory
In memory
Queue/
Queue/
LCRs Acknowledgements LCRs
• Stream LCRs
• Maintain status
information
• 9i:Re-propagate on
instance crash
•10g: Reuse spilled
messages during
recovery
Apply
empid|job
|..
100 | sales |…
510 | coding| ...
Queue
-----LCRs
Reader
EMP
• Background processes
• Assembles transactions
• Exactly once apply
• Dependency computation
• Conflict detection
Coordinator
Ack
Apply
Server
Server
Server
…..
Transformation Example
empid|job |..
Update EMP set
job=‘coding’
where
empid=510;
EMP
100 | sales |…
510 |coding| ...
Queue
----LCRs
Capture
Propagation
ACK
Queue
-----LCRs
Person
Apply
Redo Log
•1-1 Mapping
•LCR based
T
Emp->Person
Customized Apply Example
empid|state|..
Update EMP set
state=‘CA’
where
empid=100;
105 | LA | ...
Queue
----LCRs
Capture
Redo Log
Propagation
ACK
Queue
Emp
-----LCRs Audit
Apply
•Full Control
•Transaction Based
U
100 | CA |…
EMP
95 | GA |…
Bit
Bucket
Do not apply
Changes to
EMP for
state=‘CA’;
Maintain
AUDIT table
of each LCR
Data Subsetting
empid|state|..
100 | CA |…
Update EMP set
job=‘CA’ where
empid=100;
Queue
-----LCRs
ACK
EMP
205 | CA | ...
CA
Queue
----LCRs
Capture
EMP
Apply
empid|state|..
Propagation
100 | LA |…
105 | LA | ...
LA
ACK
Queue
-----LCRs
Redo Log
Apply
EMP
Streams and RAC
Oracle9i
–
–
–
No hot mining
All Streams activities done on a single instance
(owning instance)
Streams restart after failure not automatic
Oracle10i
–
–
–
Hot mining
Primary and secondary owning instance
Failover of Streams processes automatic
Messaging Enhancements
Streams encompasses AQ
Simplified messaging APIs
Batch enqueue/dequeue
Criteria-based purge
Gateway to Tibco
Heterogeneous Support
LCR or
user message
Oracle to non-Oracle
Apply via gateway
–
Apply process on
Oracle node applies
change
Non-Oracle to Oracle
change capture
supported via explicit
enqueue of LCRs
Message Gateways
Gateway
MQ Series
Sybase
–
Message
Gateway
MQ Series
Heterogeneous Example
empid|state|..
Update EMP set
state=‘CA’
where
empid=100;
EMP
100 | CA |…
105 | LA | ...
Queue
----LCRs
Capture
Redo Log
Propagation
ACK
Queue
-----LCRs
EMP
Apply
Apply2
TG4
Sybs
EMP
Sybase
Customer Example
UK
Maintain application tables in
3 regional centers
JP
–
–
–
US
Provide Special Services
–
DR
Report
autonomous
low overhead
low latency
Gateway
–
Sybase
–
Reporting Database
Disaster Recovery
Legacy Application hosted
on Sybase
Streams Replication Features
Log-based Change Capture
Customizable Apply Engine
Directed Networks
Schema Evolution
Transformations
Heterogeneous Support
Explicit Enqueue/Dequeue
Streams Benefits for
Replication
Flexible Configurations
Reduced Network Traffic
Low Overhead
No Downtime Requirements
Software Updates
9.2.0.4 patch, minimum 9.2.0.2
Streams Wizard patch
Watch OTN Streams website for custom
software
–
http://otn.oracle.com/products/dataint/content.html
9.2.0.4 Configuration Tips
Use separate queues
–
–
Capture
Apply
Increase shared_pool_size and
max_sga_size init.ora parameters
Relocate Streams data dictionary tables from
SYSTEM
–
–
Set tablespace before configuring streams
Including apply-only sites
Rule Tips
Spelling counts!
Eliminate duplicate rules in a rule set.
Make sure that the source_database_name is
correctly specified.
–
At source site: SELECT global_name FROM
GLOBAL_NAME;
Ensure that rules do not allow objects with invalid
data types
– When using GLOBAL rules, modify existing rule
to eliminate the Streams Administrator schema
and other schemas with queues, ADTs or tables
with invalid data types.
Rule Management Tips
Having no rule set defined is NOT the same
as an empty rule set.
Use DBMS_STREAMS_ADM package to
create replication rules
Use same package to create or remove rules
–
DBMS_STREAMS_ADM
–
DBMS_RULE_ADM
Troubleshooting Tips
Message Number columns = source DML,DDL SCN
–
–
CAPTURE_MESSAGE_NUMBER, ENQUEUE_MESSAGE_NUMBER
DEQUEUE_MESSAGE_NUMBER, APPLIED_MESSAGE_NUMBER
ORA-26687 no instantiation scn set
–
–
–
Set Instantiation SCN
Exp/Imp with appropriate clauses
DBMS_APPLY_ADM.SET_TABLE_INSTANTIATION_SCN
ORA-01031 insufficient privilege
–
Explicitly grant privileges to apply user
MISSING Streams data dictionary information!
–
DBMS_CAPTURE_ADM.PREPARE_TABLE_INSTANTIATION
Troubleshooting #2
Determine the scope of the problem:
–
Apply not working for this site only
Check DBA_APPLY_ERROR for errors
- Procedure to display error details in doc
Check trace files
Check rules at this site
Still not working? …
–
Apply not working for any site
Check rules for both propagation and capture
Check propagation job is working
- Job queue processes
- DB Link
Make sure COMMIT was performed for transaction
Operational Tips
Replicating DDL?
–
–
–
Ensure that privileges are explicitly granted to the apply
user.
Modify any manual hotbackup scripts to set an apply tag
before starting the backup.
Configure Instantiation SCN at next higher level
Removing Archive log files from disk?
–
Ensure that scripts do not automatically remove files that
may be needed for capture to restart.
Implement “heartbeat” table
–
Update periodically.
Next Steps….
Recommended sessions36637
–
Data Integration with Oracle Streamsata
Wed 4:30 Room 130 Integration Using Oracle St
Recommended demos and/or hands-on labs
–
Hands-On Lab: Integrate your Information.
See Your Business in Our Software
–
Visit the Streams booth in the DEMOgrounds for more
information.
Relevant web sites to visit for more information
–
http://otn.oracle;com/products/dataint/content.html
QUESTIONS
ANSWERS