Oracle - DBA

 
Vista:

DBA

Publicado por lesanch (4 intervenciones) el 16/09/2009 17:21:19
Hola a todos,

Necesito la ayuda de alguien pues la verdad ando un poco presionado. El tema es que necesitaría saber como realizar una replicación avanzada en Oracle 8i pues tengo un problema que no logro hacer que dos bases repliquen en ambos sentidos, solo en uno; y supongo me estará faltando algo para que repliquen de modo bilateral, podrían ayudarme por favor ?

Desde la base que contiene tabla A a través de un DBLINK logro replicar hacia la base B. La base A contiene la Master Table y el Materialized View Log y la base B contiene el Materialized View y el Refresh Group que realiza la réplica.

Los scripts que utilizo en los pasos son:

1- Creación de la Tabla en la Base A:

CREATE TABLE SAM.TABLE
(
NRO_PEDIDO_WEB NUMBER(10) NOT NULL,
NRO_POSICION_WEB NUMBER(10) NOT NULL,
ID_SESSION VARCHAR2(100),
D_TIPO_DIMENSION VARCHAR2(255),
)
TABLESPACE SAM_DATA
PCTUSED 40
PCTFREE 10
INITRANS 1
MAXTRANS 255
STORAGE (
INITIAL 64K
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
FREELISTS 1
FREELIST GROUPS 1
BUFFER_POOL DEFAULT
)
LOGGING
NOCACHE
NOPARALLEL;

CREATE UNIQUE INDEX SAM.PK_TABLE ON SAM.TABLE
(NRO_PEDIDO_WEB, NRO_POSICION_WEB)
LOGGING
TABLESPACE SAM_DATA
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 64K
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
FREELISTS 1
FREELIST GROUPS 1
BUFFER_POOL DEFAULT
)
NOPARALLEL;

CREATE PUBLIC SYNONYM TABLE FOR SAM.TABLE;

ALTER TABLE SAM.TABLE ADD (
CONSTRAINT PK_TABLE
PRIMARY KEY
(NRO_PEDIDO_WEB, NRO_POSICION_WEB)
USING INDEX
TABLESPACE SAM_INDEX
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 64K
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
FREELISTS 1
FREELIST GROUPS 1
));

GRANT DELETE, INSERT, SELECT, UPDATE ON SAM.TABLE TO USUARIO1;

GRANT DELETE, INSERT, SELECT, UPDATE ON SAM.TABLE TO USUARIO2;

------------------------------------------------------------------------
2- Creación del Materialized View Log en la Base A

CREATE MATERIALIZED VIEW LOG ON SAM.TABLE
TABLESPACE SAM_DATA
PCTUSED 30
PCTFREE 60
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 64K
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
)
NOCACHE
LOGGING
NOPARALLEL
WITH PRIMARY KEY;

-------------------------------------------------------------------------

3- Creación del Materialized View en la Base B

CREATE MATERIALIZED VIEW SAM.TABLE
TABLESPACE SAM_DATA
PCTUSED 40
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 64K
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
FREELISTS 1
FREELIST GROUPS 1
BUFFER_POOL DEFAULT
)
NOCACHE
LOGGING
NOPARALLEL
BUILD IMMEDIATE
USING INDEX
TABLESPACE SAM_INDEX
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 64K
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
FREELISTS 1
FREELIST GROUPS 1
BUFFER_POOL DEFAULT
)
REFRESH FAST
WITH PRIMARY KEY
FOR UPDATE
AS
SELECT
"TABLE"."NRO_PEDIDO_WEB" "NRO_PEDIDO_WEB",
"TABLE"."NRO_POSICION_WEB" "NRO_POSICION_WEB",
"TABLE"."ID_SESSION" "ID_SESSION",
"TABLE"."D_TIPO_DIMENSION" "D_TIPO_DIMENSION"
FROM "TABLE"@DBLINK.WORLD "TABLE";

COMMENT ON TABLE SAM.TABLE IS 'snapshot table for snapshot SAM.TABLE';

CREATE PUBLIC SYNONYM TABLE FOR SAM.TABLE;

GRANT DELETE, INSERT, SELECT, UPDATE ON SAM.TABLE TO USUARIO1;

GRANT DELETE, INSERT, SELECT, UPDATE ON SAM.TABLE TO USUARIO2;

---------------------------------------------------------------------------

4- Creación del Refresh Group en la Base B

DECLARE
SnapArray SYS.DBMS_UTILITY.UNCL_ARRAY;
BEGIN
SnapArray(1) := 'SAM.TABLE';
SnapArray(2) := NULL;
SYS.DBMS_REFRESH.MAKE (
name => 'SAM.REFRESHTABLE'
,tab => SnapArray
,next_date => TO_DATE('09/16/2009 12:22:33', 'MM/DD/YYYY HH24:MI:SS')
,interval => '/*10:Mins*/ sysdate + 10/(60*24)'
,implicit_destroy => FALSE
,lax => TRUE
,job => 0
,rollback_seg => NULL
,push_deferred_rpc => TRUE
,refresh_after_errors => TRUE
,purge_option => 0
,parallelism => 0
,heap_size => 0
);
Commit;
END;
/

---------------------------------------------------------------------------

Ayuda por favor !!!

Gracias,
lesanch.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder