1 configuring advanced replication julian dyke independent consultant web version - july 2009...
TRANSCRIPT
![Page 1: 1 Configuring Advanced Replication Julian Dyke Independent Consultant Web Version - July 2009 juliandyke.com © 2009 Julian Dyke](https://reader036.vdocuments.mx/reader036/viewer/2022082818/56649ef45503460f94c08022/html5/thumbnails/1.jpg)
1
ConfiguringAdvanced Replication
Julian Dyke
Independent Consultant
Web Version - July 2009
juliandyke.com
© 2009 Julian Dyke
![Page 2: 1 Configuring Advanced Replication Julian Dyke Independent Consultant Web Version - July 2009 juliandyke.com © 2009 Julian Dyke](https://reader036.vdocuments.mx/reader036/viewer/2022082818/56649ef45503460f94c08022/html5/thumbnails/2.jpg)
2
juliandyke.com
© 2009 Julian Dyke
Introduction
This presentation describes a basic Advanced Replication multi-master configuration
The configuration is between two databases DB1 and DB2 running on servers node1 and node2 respectively
One table called TEAM from the GP schema is replicated
The sample configuration was developed in Oracle 10.2.0.4 on Linux 32-bit
![Page 3: 1 Configuring Advanced Replication Julian Dyke Independent Consultant Web Version - July 2009 juliandyke.com © 2009 Julian Dyke](https://reader036.vdocuments.mx/reader036/viewer/2022082818/56649ef45503460f94c08022/html5/thumbnails/3.jpg)
3
juliandyke.com
© 2009 Julian Dyke
Advanced ReplicationReplicated Objects Create a user
CREATE USER gp IDENTIFIED BY gp;
GRANT DBA TO gp;
As the GP user create and populate a table to be replicated
CREATE TABLE team(
team_code VARCHAR2(3),team_name VARCHAR2(30),country_code VARCHAR2(3)
);
ALTER TABLE team ADD CONSTRAINT team_pk PRIMARY KEY (team_code);
INSERT INTO team VALUES ('MCL','McLaren','GBR');INSERT INTO team VALUES ('FER','Ferrari','FER');
COMMIT;
Note - table MUST have primary key constraint
![Page 4: 1 Configuring Advanced Replication Julian Dyke Independent Consultant Web Version - July 2009 juliandyke.com © 2009 Julian Dyke](https://reader036.vdocuments.mx/reader036/viewer/2022082818/56649ef45503460f94c08022/html5/thumbnails/4.jpg)
4
juliandyke.com
© 2009 Julian Dyke
Advanced ReplicationReplication Administrator On each node as SYS (SYSDBA)
create a user called REPADMIN
CREATE USER repadmin IDENTIFIED BY repadmin;
grant privileges to REPADMIN to create and manage the replicated environment
BEGINdbms_repcat_admin.grant_admin_any_schema (username=> 'REPADMIN');
END;/
![Page 5: 1 Configuring Advanced Replication Julian Dyke Independent Consultant Web Version - July 2009 juliandyke.com © 2009 Julian Dyke](https://reader036.vdocuments.mx/reader036/viewer/2022082818/56649ef45503460f94c08022/html5/thumbnails/5.jpg)
5
juliandyke.com
© 2009 Julian Dyke
Advanced ReplicationRegister Propagator On each node as SYS (SYSDBA)
register REPADMIN as a propagator
BEGINdbms_defer_sys.register_propagator (username => 'REPADMIN');
END;/
The propagator is responsible for propagating the deferred transaction queue to other master sites.
![Page 6: 1 Configuring Advanced Replication Julian Dyke Independent Consultant Web Version - July 2009 juliandyke.com © 2009 Julian Dyke](https://reader036.vdocuments.mx/reader036/viewer/2022082818/56649ef45503460f94c08022/html5/thumbnails/6.jpg)
6
juliandyke.com
© 2009 Julian Dyke
Advanced ReplicationRegister Receiver On each node as SYS (SYSDBA)
register REPADMIN as a receiver
BEGINdbms_repcat_admin.register_user_repgroup(
username => 'REPADMIN',privilege_type => 'RECEIVER',list_of_gnames => NULL
);END;/
The receiver receives the propagated deferred transactions sent by the propagator from other master sites.
![Page 7: 1 Configuring Advanced Replication Julian Dyke Independent Consultant Web Version - July 2009 juliandyke.com © 2009 Julian Dyke](https://reader036.vdocuments.mx/reader036/viewer/2022082818/56649ef45503460f94c08022/html5/thumbnails/7.jpg)
7
juliandyke.com
© 2009 Julian Dyke
Advanced ReplicationSchedule Purge On each node as REPADMIN
schedule an hourly purge of the deferred transactions queue
BEGINdbms_defer_sys.schedule_purge(
next_date => SYSDATE,interval => 'SYSDATE + 1/24',delay_seconds => 0
);END;
/
Successfully completed deferred transactions should be purged to reduce the size of the deferred transactions queue
![Page 8: 1 Configuring Advanced Replication Julian Dyke Independent Consultant Web Version - July 2009 juliandyke.com © 2009 Julian Dyke](https://reader036.vdocuments.mx/reader036/viewer/2022082818/56649ef45503460f94c08022/html5/thumbnails/8.jpg)
8
juliandyke.com
© 2009 Julian Dyke
Advanced ReplicationConfigure Network On each node add network services to
$ORACLE_HOME/network/admin/tnsnames.ora
DB1.JULIANDYKE.COM=(DESCRIPTION=
(ADDRESS= (PROTOCOL=TCP)(HOST=node1)(PORT=1521))(CONNECT_DATA = (SID=DB1))
)
DB2.JULIANDYKE.COM=(DESCRIPTION=
(ADDRESS= (PROTOCOL=TCP)(HOST=node2)(PORT=1521))(CONNECT_DATA = (SID=DB2))
)
![Page 9: 1 Configuring Advanced Replication Julian Dyke Independent Consultant Web Version - July 2009 juliandyke.com © 2009 Julian Dyke](https://reader036.vdocuments.mx/reader036/viewer/2022082818/56649ef45503460f94c08022/html5/thumbnails/9.jpg)
9
juliandyke.com
© 2009 Julian Dyke
Advanced ReplicationDatabase Links In DB1
As SYS (SYSDBA) create public database link e.g.
CREATE PUBLIC DATABASE LINK db2.juliandyke.com USING 'db2.juliandyke.com';
As REPADMIN create private database link e.g.
CREATE DATABASE LINK db2.juliandyke.comCONNECT TO repadmin IDENTIFIED BY repadmin;
In DB2 As SYS (SYSDBA) create public database link e.g.
CREATE PUBLIC DATABASE LINK db1.juliandyke.com USING 'db1.juliandyke.com';
As REPADMIN create private database link e.g.
CREATE DATABASE LINK db1.juliandyke.comCONNECT TO repadmin IDENTIFIED BY repadmin;
![Page 10: 1 Configuring Advanced Replication Julian Dyke Independent Consultant Web Version - July 2009 juliandyke.com © 2009 Julian Dyke](https://reader036.vdocuments.mx/reader036/viewer/2022082818/56649ef45503460f94c08022/html5/thumbnails/10.jpg)
10 juliandyke.co
m
© 2009 Julian Dyke
Advanced ReplicationScheduled Links In each database as REPADMIN
Define a schedule for each database link e.g. in DB1
BEGINdbms_defer_sys.schedule_push(
destination => 'db2.juliandyke.com',interval => 'SYSDATE + (1/144)',next_date => SYSDATE,parallelism => 1,execution_seconds => 1500,delay_seconds => 120
);END;/
In DB2 set the destination to db1.juliandyke.com
![Page 11: 1 Configuring Advanced Replication Julian Dyke Independent Consultant Web Version - July 2009 juliandyke.com © 2009 Julian Dyke](https://reader036.vdocuments.mx/reader036/viewer/2022082818/56649ef45503460f94c08022/html5/thumbnails/11.jpg)
11
juliandyke.com
© 2009 Julian Dyke
Advanced ReplicationReplication Group In DB1 only as REPADMIN
Create a replication group called REPGROUP1
BEGINdbms_repcat.create_master_repgroup (gname => 'REPGROUP1');
END;/
![Page 12: 1 Configuring Advanced Replication Julian Dyke Independent Consultant Web Version - July 2009 juliandyke.com © 2009 Julian Dyke](https://reader036.vdocuments.mx/reader036/viewer/2022082818/56649ef45503460f94c08022/html5/thumbnails/12.jpg)
12 juliandyke.co
m
© 2009 Julian Dyke
Advanced ReplicationReplication Objects In DB1 only as REPADMIN
Create a replication object for GP.TEAM table
BEGINdbms_repcat.create_master_repobject(
gname => 'REPGROUP1',type => 'TABLE',sname => 'GP',oname => 'TEAM',use_existing_object => TRUE,copy_rows => TRUE
);END;/
![Page 13: 1 Configuring Advanced Replication Julian Dyke Independent Consultant Web Version - July 2009 juliandyke.com © 2009 Julian Dyke](https://reader036.vdocuments.mx/reader036/viewer/2022082818/56649ef45503460f94c08022/html5/thumbnails/13.jpg)
13 juliandyke.co
m
© 2009 Julian Dyke
Advanced ReplicationAdd Master Databases In DB1 only as REPADMIN
Add DB2 as a second master database in REPGROUP1
BEGINdbms_repcat.add_master_database(
gname => 'REPGROUP1',master => 'db2.juliandyke.com',use_existing_objects => TRUE,copy_rows => TRUE,propagation_mode => 'ASYNCHRONOUS'
);END;/
Check new master has been added using:
SELECT dblink FROM dba_repsitesWHERE gname = 'REPGROUP1';
![Page 14: 1 Configuring Advanced Replication Julian Dyke Independent Consultant Web Version - July 2009 juliandyke.com © 2009 Julian Dyke](https://reader036.vdocuments.mx/reader036/viewer/2022082818/56649ef45503460f94c08022/html5/thumbnails/14.jpg)
14 juliandyke.co
m
© 2009 Julian Dyke
Advanced ReplicationGenerate Replication Support In DB1 only as REPADMIN
Generate replication support for GP.TEAM
BEGINdbms_repcat.generate_replication_support(
sname => 'GP',oname => 'TEAM',type => 'TABLE',min_communication => TRUE
);END;/
![Page 15: 1 Configuring Advanced Replication Julian Dyke Independent Consultant Web Version - July 2009 juliandyke.com © 2009 Julian Dyke](https://reader036.vdocuments.mx/reader036/viewer/2022082818/56649ef45503460f94c08022/html5/thumbnails/15.jpg)
15 juliandyke.co
m
© 2009 Julian Dyke
Advanced ReplicationStart Replication In DB1 only as REPADMIN
Resume replication for REPGROUP1
BEGINdbms_repcat.resume_master_activity (gname => 'REPGROUP1');
END;/
![Page 16: 1 Configuring Advanced Replication Julian Dyke Independent Consultant Web Version - July 2009 juliandyke.com © 2009 Julian Dyke](https://reader036.vdocuments.mx/reader036/viewer/2022082818/56649ef45503460f94c08022/html5/thumbnails/16.jpg)
16 juliandyke.co
m
© 2009 Julian Dyke
Thank you for your interest