Jerry Held

advertisement
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
Download