

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Configurazione di Oracle GoldenGate
<a name="Appendix.OracleGoldenGate.setting-up"></a>

Per configurare Oracle GoldenGate utilizzando Amazon RDS, configura l'hub su un'istanza Amazon EC2, quindi configura i database di origine e di destinazione. Le sezioni seguenti forniscono un esempio di come configurare Oracle GoldenGate per l'utilizzo con Amazon RDS for Oracle.

**Topics**
+ [Configurazione di un GoldenGate hub Oracle su Amazon EC2](#Appendix.OracleGoldenGate.Hub)
+ [Configurazione di un database di origine da utilizzare con Oracle GoldenGate su Amazon RDS](#Appendix.OracleGoldenGate.Source)
+ [Configurazione di un database di destinazione da utilizzare con Oracle GoldenGate su Amazon RDS](#Appendix.OracleGoldenGate.Target)

## Configurazione di un GoldenGate hub Oracle su Amazon EC2
<a name="Appendix.OracleGoldenGate.Hub"></a>

Per creare un GoldenGate hub Oracle su un'istanza Amazon EC2, devi prima creare un'istanza Amazon EC2 con un'installazione client completa di Oracle RDBMS. L'istanza Amazon EC2 deve inoltre avere installato il GoldenGate software Oracle. Le versioni del GoldenGate software Oracle dipendono dalle versioni del database di origine e di destinazione. Per ulteriori informazioni sull'installazione di Oracle GoldenGate, consulta la [ GoldenGatedocumentazione Oracle](https://docs.oracle.com/en/middleware/goldengate/core/index.html).

L'istanza Amazon EC2 che funge da GoldenGate hub Oracle archivia ed elabora le informazioni sulle transazioni dal database di origine in file trail. Per supportare questo processo, assicurati che siano soddisfatti i seguenti requisiti:
+ Sia stato allocato uno spazio di archiviazione sufficiente per i file trail.
+ L'istanza Amazon EC2 abbia una capacità di calcolo sufficiente per gestire la quantità di dati.
+ Inoltre, assicurati che l'istanza EC2 disponga di memoria sufficiente per archiviare le informazioni sulle transazioni prima che vengano scritte nel file di trail.

**Per configurare un hub di architettura GoldenGate classica Oracle su un'istanza Amazon EC2**

1. Crea sottodirectory nella directory Oracle. GoldenGate 

   Nella shell della riga di comando di Amazon EC2, start`ggsci`, l'interprete dei GoldenGate comandi Oracle. Il comando `CREATE SUBDIRS` crea le sottodirectory nella directory `/gg` per i file dei parametri, dei report e dei punti di controllo.

   ```
   prompt$ cd /gg
   prompt$ ./ggsci
   
   GGSCI> CREATE SUBDIRS
   ```

1. Configura il file `mgr.prm`.

   L'esempio seguente aggiunge le righe al file `$GGHOME/dirprm/mgr.prm`.

   ```
   PORT 8199
   PurgeOldExtracts ./dirdat/*, UseCheckpoints, MINKEEPDAYS 5
   ```

1. Avvia il manager.

   L'esempio seguente avvia `ggsci` ed esegue il comando `start mgr`.

   ```
   GGSCI> start mgr
   ```

L' GoldenGate hub Oracle è ora pronto per l'uso.

## Configurazione di un database di origine da utilizzare con Oracle GoldenGate su Amazon RDS
<a name="Appendix.OracleGoldenGate.Source"></a>

Completa le seguenti attività per configurare un database di origine da utilizzare con Oracle GoldenGate.

**Topics**
+ [Passaggio 1: attivazione della registrazione supplementare nel database di origine](#Appendix.OracleGoldenGate.Source.Logging)
+ [Passaggio 2: impostazione del parametro di inizializzazione ENABLE\$1GOLDENGATE\$1REPLICATION su true](#Appendix.OracleGoldenGate.Source.enable-gg-rep)
+ [Passaggio 3: impostazione del periodo di conservazione del log nel database di origine](#Appendix.OracleGoldenGate.Source.Retention)
+ [Fase 4: Creare un account GoldenGate utente Oracle nel database di origine](#Appendix.OracleGoldenGate.Source.Account)
+ [Passaggio 5: concessione dei privilegi all'account utente per il database di origine](#Appendix.OracleGoldenGate.Source.Privileges)
+ [Passaggio 6: aggiunta di un alias TNS per il database di origine](#Appendix.OracleGoldenGate.Source.TNS)

### Passaggio 1: attivazione della registrazione supplementare nel database di origine
<a name="Appendix.OracleGoldenGate.Source.Logging"></a>

Per attivare la registrazione supplementare minima a livello di database, esegui la seguente procedura PL/SQL: 

```
EXEC rdsadmin.rdsadmin_util.alter_supplemental_logging(p_action => 'ADD')
```

### Passaggio 2: impostazione del parametro di inizializzazione ENABLE\$1GOLDENGATE\$1REPLICATION su true
<a name="Appendix.OracleGoldenGate.Source.enable-gg-rep"></a>

Quando imposti il parametro di inizializzazione `ENABLE_GOLDENGATE_REPLICATION` su `true`, i servizi di database supportano la replica logica. Se il database di origine si trova in un'istanza database Amazon RDS, assicurati di disporre di un gruppo di parametri assegnato all'istanza database con il parametro di inizializzazione `ENABLE_GOLDENGATE_REPLICATION` impostato su `true`. Per ulteriori informazioni sul parametro di inizializzazione `ENABLE_GOLDENGATE_REPLICATION`, consulta la [documentazione di Oracle Database](https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/ENABLE_GOLDENGATE_REPLICATION.html).

### Passaggio 3: impostazione del periodo di conservazione del log nel database di origine
<a name="Appendix.OracleGoldenGate.Source.Retention"></a>

Assicurati di configurare il database di origine in modo che mantenga i log redo archiviati. Considera le linee guida seguenti:
+ Specifica il periodo di retention dei log in ore. Il valore minimo è 1 ora.
+ Imposta la durata su un valore superiore a eventuali potenziali tempi di inattività dell'istanza database di origine e a eventuali potenziali problemi relativi al periodo di comunicazione o di rete per l'istanza di origine. Tale durata consente a Oracle di GoldenGate recuperare i log dall'istanza di origine secondo necessità.
+ Assicurarsi di disporre di spazio sufficiente sulla propria istanza per i file.

Ad esempio, impostare il periodo di conservazione per i redo log archiviati su 24 ore.

```
EXEC rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',24)
```

Se non è abilitata l'opzione di conservazione dei log o il suo valore è troppo basso, riceverai un messaggio di errore simile al seguente.

```
2022-03-06 06:17:27  ERROR   OGG-00446  error 2 (No such file or directory) 
opening redo log /rdsdbdata/db/GGTEST3_A/onlinelog/o1_mf_2_9k4bp1n6_.log for sequence 1306 
Not able to establish initial position for begin time 2022-03-06 06:16:55.
```

Poiché l'istanza database mantiene i log redo archiviati, assicurati di disporre dello spazio sufficiente per i file. Per vedere quanto spazio hai utilizzato nelle ultime *num\$1hours* ore, esegui la seguente query, sostituendola *num\$1hours* con il numero di ore.

```
SELECT SUM(BLOCKS * BLOCK_SIZE) BYTES FROM V$ARCHIVED_LOG 
   WHERE NEXT_TIME>=SYSDATE-num_hours/24 AND DEST_ID=1;
```

### Fase 4: Creare un account GoldenGate utente Oracle nel database di origine
<a name="Appendix.OracleGoldenGate.Source.Account"></a>

Oracle GoldenGate funziona come utente del database e richiede i privilegi di database appropriati per accedere ai redo log e ai redo log archiviati per il database di origine. A questo scopo, crea un account utente sul database di origine. [Per ulteriori informazioni sulle autorizzazioni per un account GoldenGate utente Oracle, consulta la documentazione Oracle.](https://docs.oracle.com/en/middleware/goldengate/core/19.1/oracle-db/establishing-oracle-goldengate-credentials.html#GUID-79122058-27B0-4FB6-B3DC-B7D1B67EB053)

Le istruzioni seguenti creano un account utente denominato `oggadm1`. 

```
CREATE TABLESPACE administrator;
CREATE USER oggadm1  IDENTIFIED BY "password"
   DEFAULT TABLESPACE ADMINISTRATOR TEMPORARY TABLESPACE TEMP;
ALTER USER oggadm1 QUOTA UNLIMITED ON administrator;
```

**Nota**  
Specifica una password diversa dal prompt mostrato qui come best practice per la sicurezza.

### Passaggio 5: concessione dei privilegi all'account utente per il database di origine
<a name="Appendix.OracleGoldenGate.Source.Privileges"></a>

In questa attività, concedi i privilegi dell'account necessari agli utenti per il database di origine.

**Per concedere privilegi dell'account per il database di origine**

1. Concedi i privilegi necessari all'account GoldenGate utente Oracle utilizzando il comando SQL `grant` e la `rdsadmin.rdsadmin_util` procedura. `grant_sys_object` Le istruzioni seguenti concedono i privilegi all'utente denominato `oggadm1`.

   ```
   GRANT CREATE SESSION, ALTER SESSION TO oggadm1;
   GRANT RESOURCE TO oggadm1;
   GRANT SELECT ANY DICTIONARY TO oggadm1;
   GRANT FLASHBACK ANY TABLE TO oggadm1;
   GRANT SELECT ANY TABLE TO oggadm1;
   GRANT SELECT_CATALOG_ROLE TO rds_master_user_name WITH ADMIN OPTION;
   EXEC rdsadmin.rdsadmin_util.grant_sys_object ('DBA_CLUSTERS', 'OGGADM1');
   GRANT EXECUTE ON DBMS_FLASHBACK TO oggadm1;
   GRANT SELECT ON SYS.V_$DATABASE TO oggadm1;
   GRANT ALTER ANY TABLE TO oggadm1;
   ```

1. Concedi i privilegi necessari a un account utente per essere amministratore Oracle GoldenGate . Esegui il seguente PL/SQL programma.

   ```
   EXEC rdsadmin.rdsadmin_dbms_goldengate_auth.grant_admin_privilege (
       grantee                 => 'OGGADM1',
       privilege_type          => 'capture',
       grant_select_privileges => true, 
       do_grants               => TRUE);
   ```

   Per revocare i privilegi, utilizzare la procedura `revoke_admin_privilege` nello stesso pacchetto.

### Passaggio 6: aggiunta di un alias TNS per il database di origine
<a name="Appendix.OracleGoldenGate.Source.TNS"></a>

Aggiungi la seguente voce `$ORACLE_HOME/network/admin/tnsnames.ora` in Oracle Home che sarà utilizzata dal processo `EXTRACT`. Per ulteriori informazioni sul file `tnsnames.ora`, consulta la [documentazione di Oracle](https://docs.oracle.com/en/database/oracle/oracle-database/19/netrf/local-naming-parameters-in-tns-ora-file.html#GUID-7F967CE5-5498-427C-9390-4A5C6767ADAA).

```
OGGSOURCE=
   (DESCRIPTION= 
        (ENABLE=BROKEN)
        (ADDRESS_LIST= 
            (ADDRESS=(PROTOCOL=TCP)(HOST=goldengate-source.abcdef12345.us-west-2.rds.amazonaws.com)(PORT=8200)))
        (CONNECT_DATA=(SERVICE_NAME=ORCL))
    )
```

## Configurazione di un database di destinazione da utilizzare con Oracle GoldenGate su Amazon RDS
<a name="Appendix.OracleGoldenGate.Target"></a>

In questo task, si configura un'istanza DB di destinazione da utilizzare con Oracle GoldenGate.

**Topics**
+ [Passaggio 1: impostazione del parametro di inizializzazione ENABLE\$1GOLDENGATE\$1REPLICATION su true](#Appendix.OracleGoldenGate.Target.enable-gg-rep)
+ [Fase 2: Creare un account GoldenGate utente Oracle nel database di destinazione](#Appendix.OracleGoldenGate.Target.User)
+ [Passaggio 3: concessione dei privilegi all'account per il database di destinazione](#Appendix.OracleGoldenGate.Target.Privileges)
+ [Passaggio 4: aggiunta di un alias TNS per il database di destinazione](#Appendix.OracleGoldenGate.Target.TNS)

### Passaggio 1: impostazione del parametro di inizializzazione ENABLE\$1GOLDENGATE\$1REPLICATION su true
<a name="Appendix.OracleGoldenGate.Target.enable-gg-rep"></a>

Quando imposti il parametro di inizializzazione `ENABLE_GOLDENGATE_REPLICATION` su `true`, i servizi di database supportano la replica logica. Se il database di origine si trova in un'istanza database Amazon RDS, assicurati di disporre di un gruppo di parametri assegnato all'istanza database con il parametro di inizializzazione `ENABLE_GOLDENGATE_REPLICATION` impostato su `true`. Per ulteriori informazioni sul parametro di inizializzazione `ENABLE_GOLDENGATE_REPLICATION`, consulta la [documentazione di Oracle Database](https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/ENABLE_GOLDENGATE_REPLICATION.html).

### Fase 2: Creare un account GoldenGate utente Oracle nel database di destinazione
<a name="Appendix.OracleGoldenGate.Target.User"></a>

Oracle GoldenGate viene eseguito come utente del database e richiede i privilegi di database appropriati. A questo scopo, crea un account utente nel database di destinazione.

L'istruzione seguente crea un utente denominato `oggadm1`.

```
CREATE TABLESPSACE administrator;
CREATE USER oggadm1  IDENTIFIED BY "password" 
   DEFAULT TABLESPACE administrator 
   TEMPORARY TABLESPACE temp;
ALTER USER oggadm1 QUOTA UNLIMITED ON administrator;
```

**Nota**  
Specifica una password diversa dal prompt mostrato qui come best practice per la sicurezza.

### Passaggio 3: concessione dei privilegi all'account per il database di destinazione
<a name="Appendix.OracleGoldenGate.Target.Privileges"></a>

In questa attività, concedi i privilegi dell'account necessari agli utenti per il database di destinazione.

**Per concedere i privilegi all'account per il database di destinazione**

1. Concedi i privilegi necessari all'account GoldenGate utente Oracle sul database di destinazione. Nell'esempio seguente vengono concessi privilegi a `oggadm1`.

   ```
   GRANT CREATE SESSION        TO oggadm1;
   GRANT ALTER SESSION         TO oggadm1;
   GRANT CREATE CLUSTER        TO oggadm1;
   GRANT CREATE INDEXTYPE      TO oggadm1;
   GRANT CREATE OPERATOR       TO oggadm1;
   GRANT CREATE PROCEDURE      TO oggadm1;
   GRANT CREATE SEQUENCE       TO oggadm1;
   GRANT CREATE TABLE          TO oggadm1;
   GRANT CREATE TRIGGER        TO oggadm1;
   GRANT CREATE TYPE           TO oggadm1;
   GRANT SELECT ANY DICTIONARY TO oggadm1;
   GRANT CREATE ANY TABLE      TO oggadm1;
   GRANT ALTER ANY TABLE       TO oggadm1;
   GRANT LOCK ANY TABLE        TO oggadm1;
   GRANT SELECT ANY TABLE      TO oggadm1;
   GRANT INSERT ANY TABLE      TO oggadm1;
   GRANT UPDATE ANY TABLE      TO oggadm1;
   GRANT DELETE ANY TABLE      TO oggadm1;
   ```

1. Concedi i privilegi necessari a un account utente per essere amministratore Oracle GoldenGate . Esegui il seguente PL/SQL programma.

   ```
   EXEC rdsadmin.rdsadmin_dbms_goldengate_auth.grant_admin_privilege (
       grantee                 => 'OGGADM1',
       privilege_type          => 'apply',
       grant_select_privileges => true, 
       do_grants               => TRUE);
   ```

   Per revocare i privilegi, utilizzare la procedura `revoke_admin_privilege` nello stesso pacchetto.

### Passaggio 4: aggiunta di un alias TNS per il database di destinazione
<a name="Appendix.OracleGoldenGate.Target.TNS"></a>

Aggiungi la seguente voce `$ORACLE_HOME/network/admin/tnsnames.ora` in Oracle Home che sarà utilizzata dal processo `REPLICAT`. Per i database Oracle multitenant, assicurati che l'alias TNS punti al nome del servizio del PDB. Per ulteriori informazioni sul file `tnsnames.ora`, consulta la [documentazione di Oracle](https://docs.oracle.com/en/database/oracle/oracle-database/19/netrf/local-naming-parameters-in-tns-ora-file.html#GUID-7F967CE5-5498-427C-9390-4A5C6767ADAA).

```
OGGTARGET=
    (DESCRIPTION= 
        (ENABLE=BROKEN)
        (ADDRESS_LIST= 
            (ADDRESS=(PROTOCOL=TCP)(HOST=goldengate-target.abcdef12345.us-west-2.rds.amazonaws.com)(PORT=8200)))
        (CONNECT_DATA=(SERVICE_NAME=ORCL))
    )
```