You are on page 1of 4

///en tnsnames

SERVERA =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.2)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = SERVERA)
)
)
//// poner en modo archive log con sqlplus sys/oracle@serverB
shutdown immediate
startup mount;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;
archive log list;
// creacion de minitienda en el enterprice manager como sys
// con sqlplus sys/oracle
grant
grant
grant
grant
grant
grant

execute
execute
execute
execute
execute
execute

on
on
on
on
on
on

dbms_aqadm to minitienda;
dbms_capture_adm
to minitienda;
dbms_propagation_adm to minitienda;
dbms_streams_adm to
minitienda;
dbms_apply_adm
to
minitienda;
dbms_flashback
to
minitienda;

begin dbms_streams_auth.grant_admin_privilege
(grantee => 'minitienda',
grant_privileges => true);
end;
/
// agregar rol dba
grant connect, resource, dba to minitienda;
// agregar exp full e imm full
grant exp_full_database to minitienda;
grant imp_full_database to minitienda;
//variables para el Streams.
alter system set global_names=true;
alter system set Streams_pool_size=100m;
// crear el database link
CONNECT minitienda/minitienda@serverB
CREATE DATABASE LINK serverA CONNECT TO minitienda
IDENTIFIED BY minitienda USING 'serverA';
// creacion de colas en enterprise manager logueado como minitienda
// crear al usuario minitienda y las tres tablas.

// crear el apply process en serverB


BEGIN
DBMS_APPLY_ADM.CREATE_APPLY(
queue_name
=> 'minitienda.apply_queue',
apply_name
=> 'apply_emp_dep',
apply_captured => FALSE);
END;
/

//reglas de apply
BEGIN
DBMS_STREAMS_ADM.ADD_TABLE_RULES(
table_name
=> 'minitienda.producto',
streams_type
=> 'apply',
streams_name
=> 'apply_emp_dep',
queue_name
=> 'minitienda.apply_queue',
source_database => 'serverA');
END;
/
BEGIN
DBMS_STREAMS_ADM.ADD_TABLE_RULES(
table_name
=> 'minitienda.venta',
streams_type
=> 'apply',
streams_name
=> 'apply_emp_dep',
queue_name
=> 'minitienda.apply_queue',
source_database => 'serverA');
END;
/
BEGIN
DBMS_STREAMS_ADM.ADD_TABLE_RULES(
table_name
=> 'minitienda.detalleventa',
streams_type
=> 'apply',
streams_name
=> 'apply_emp_dep',
queue_name
=> 'minitienda.apply_queue',
source_database => 'serverA');
END;
/
/// reglas de propagacion
BEGIN
DBMS_STREAMS_ADM.ADD_TABLE_PROPAGATION_RULES(
table_name
=> 'minitienda.producto',
streams_name
=> 'send_emp_dep',
source_queue_name
=> 'minitienda.capture_queue',
destination_queue_name => 'minitienda.apply_queue@serverA',
source_database
=> 'serverB',
queue_to_queue
=> TRUE);
END;
/
BEGIN
DBMS_STREAMS_ADM.ADD_TABLE_PROPAGATION_RULES(
table_name
=> 'minitienda.venta',

streams_name
source_queue_name
destination_queue_name
source_database
queue_to_queue

=>
=>
=>
=>
=>

'send_emp_dep',
'minitienda.capture_queue',
'minitienda.apply_queue@serverA',
'serverB',
TRUE);

END;
/
BEGIN
DBMS_STREAMS_ADM.ADD_TABLE_PROPAGATION_RULES(
table_name
=> 'minitienda.detalleventa',
streams_name
=> 'send_emp_dep',
source_queue_name
=> 'minitienda.capture_queue',
destination_queue_name => 'minitienda.apply_queue@serverA',
source_database
=> 'serverB',
queue_to_queue
=> TRUE);
eEND;
/
/// configuracion de captura sincrona
BEGIN
DBMS_STREAMS_ADM.ADD_TABLE_RULES(
table_name
=> 'minitienda.producto',
streams_type => 'sync_capture',
streams_name => 'sync_capture',
queue_name
=> 'minitienda.capture_queue');
END;
/
BEGIN
DBMS_STREAMS_ADM.ADD_TABLE_RULES(
table_name
=> 'minitienda.venta',
streams_type => 'sync_capture',
streams_name => 'sync_capture',
queue_name
=> 'minitienda.capture_queue');
END;
/
BEGIN
DBMS_STREAMS_ADM.ADD_TABLE_RULES(
table_name
=> 'minitienda.detalleventa',
streams_type => 'sync_capture',
streams_name => 'sync_capture',
queue_name
=> 'minitienda.capture_queue');
END;
/
////////// configurar la instanciacion
DECLARE
iscn NUMBER;
BEGIN
iscn := DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER();
DBMS_APPLY_ADM.SET_TABLE_INSTANTIATION_SCN@serverA(
source_object_name
=> 'minitienda.producto',
source_database_name => 'serverB',
instantiation_scn
=> iscn);
END;

/
DECLARE
iscn NUMBER;
BEGIN
iscn := DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER();
DBMS_APPLY_ADM.SET_TABLE_INSTANTIATION_SCN@serverA(
source_object_name
=> 'minitienda.venta',
source_database_name => 'serverB',
instantiation_scn
=> iscn);
END;
/
DECLARE
iscn NUMBER;
BEGIN
iscn := DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER();
DBMS_APPLY_ADM.SET_TABLE_INSTANTIATION_SCN@serverA(
source_object_name
=> 'minitienda.detalleventa',
source_database_name => 'serverB',
instantiation_scn
=> iscn);
END;
/
/// iniciar el apply process
BEGIN
DBMS_APPLY_ADM.START_APPLY(
apply_name => 'apply_emp_dep');
END;
/

You might also like