Esegui migrazione Oracle RAC

Per eseguire la migrazione di un database Oracle RAC da un server Oracle Cloud Infrastructure Classic a un sistema Oracle Cloud Infrastructure Database, è possibile utilizzare Oracle Data Guard. È necessario configurare il database su Oracle Cloud Infrastructure Classic come database primario (il database di origine) di cui si esegue la migrazione a un database in standby (il database di destinazione) su Oracle Cloud Infrastructure sui sistemi Virtual Machine.

Configura il database primario (di origine)

Per configurare il database primario (il database di origine), configurare Oracle Data Guard e modificare i file listener.ora e tnsnames.ora per il database in standby (il database di destinazione).

Configura il database primario per il database in standby

In questa configurazione è possibile configurare il database primario (di origine) in modo che utilizzi Oracle Data Guard.

  1. Utilizzare SSH per collegarsi al database primario (il database di origine) server.
  2. Sul database in standby (il database di destinazione), connettersi come Oracle del proprietario del software del database.
    sudo su - oracle
  3. Eseguire lo script oraenv, che imposta la variabile di ambiente $ORACLE_HOME.
    . oraenv
  4. Collegarsi all'istanza del database come utente che dispone dei privilegi di amministratore. ad esempio:
    sqlplus / as sysoper
  5. Assicurarsi che il database sia in modalità ARCHIVELOG.
    ARCHIVE LOG LIST
  6. Se l'output per Database log mode è No Archive Mode e l'output per Automatic archival è Disabled, procedere come segue:
    1. Esci da SQL*Plus
      SQL> exit
    2. Chiudere il database.
      srvctl stop database -db db_unique_name
    3. Riavvia il database in modalità MOUNT
      srvctl start database -db db_unique_name -o mount
    4. Collegarsi all'istanza del database come utente che dispone dei privilegi di amministratore. ad esempio:
      sqlplus / as sysoper
    5. Abilita la modalità ARCHIVELOG.
      ALTER DATABASE ARCHIVELOG;
    6. Assicurarsi che il database sia ora in modalità ARCHIVELOG.
      ARCHIVE LOG LIST
      L'output per la modalità di log del database deve essere Archive Mode e l'output per Automatic archival è abilitato .
    7. Aprire il database.
      ALTER DATABASE OPEN;
  7. Connettersi con il privilegio di amministratore di SYSDBA.
    CONNECT / AS SYSDBA
  8. Per un ambiente multi-tenant, effettuare le operazioni riportate di seguito.
    1. Controllare lo stato del PDBS.
      SHOW PDBS
    2. Se la PDBS non è aperta, aprirla.
      ALTER PLUGGABLE DATABASE ALL OPEN;
  9. Assicurarsi che il database sia in modalità FORCE LOGGING. ad esempio:
    SELECT NAME, OPEN_MODE, FORCE_LOGGING FROM V$DATABASE;
  10. Se necessario, abilitare force logging.
    ALTER DATABASE FORCE LOGGING;
  11. Controllare la configurazione.
    SELECT NAME, CDB, OPEN_MODE, FORCE_LOGGING FROM V$DATABASE;
    La colonna FORCE_LOGGING deve essere YES.
  12. Utilizzare il comando SHOW PARAMETER per controllare i parametri di database riportati di seguito.
    1. DB_NAME e DB_UNIQUE_NAME: assicurarsi che questi nomi siano diversi dai nomi utilizzati nel database di destinazione.
    2. REMOTE_LOGIN_PASSWORDFILE: questo parametro deve essere impostato su EXCLUSIVE.

Aggiungi servizi statici al file listener.ora del database primario

In questa sezione è necessario aggiungere un nuovo listener statico a listener.or a e riavviare il listener.

  1. Utilizzare SSH per collegarsi al primo nodo del database primario (di origine).
  2. Alla riga di comando, connettersi come grid user.
    sudo su - grid
  3. Modificare il file /u01/app/12.2.0.1/grid/network/admin/listener.ora in modo da includere il listener statico. L'esempio riportato di seguito mostra il formato da utilizzare per un listener statico.
    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (SDU=65535)
          (GLOBAL_DBNAME = source_db_unique_name.source_db_domain)
          (ORACLE_HOME = source_oracle_home)
          (ENVS="TNS_ADMIN= source_oracle_home/network/admin")
          (SID_NAME = source_db_name)
        )
      )
  4. Arrestare il listener.

    Nota

    L'arresto e l'avvio del listener statico possono avere effetto su nuove connessioni al database per alcuni secondi.
    srvctl stop listener -l LISTENER
  5. Riavviare il listener.
    srvctl start listener -l LISTENER
  6. Controllare lo stato del listener.
    lsnrctl status
  7. Convalidare la presenza di voci nell'output con lo stato UNKNOWN.
  8. Ripetere i passi precedenti per il secondo nodo del database primario (il database di origine).

Configurare i parametri del database primario

Dopo aver configurato il database primario (di origine) e aggiunto i servizi statici al file listener.ora del database primario, è possibile configurare i parametri Oracle Data Guard sul database primario.

  1. Utilizzare SSH per collegarsi al primo nodo RAC del database primario (il database di origine).
  2. Collegarsi all'istanza del database come utente che dispone del privilegio di amministratore di SYSDBA.
    sqlplus / as sysdba
    Enter password: password
  3. Abilita la gestione automatica dei file in standby.
    ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO SID='*' SCOPE=BOTH;
  4. Imposta la destinazione del ritardo di archiviazione.
    ALTER SYSTEM SET ARCHIVE_LAG_TARGET=1800 SID='*' SCOPE=BOTH;
  5. Identificare i nomi e le posizioni dei file di configurazione del broker Oracle. Le istruzioni riportate di seguito dipendono dal tipo di memorizzazione del database.
    ALTER SYSTEM SET DG_BROKER_CONFIG_FILE1='/u02/app/oracle/oradata/<db_unique_name>/dr1<db_unique_name>.dat' SID='*' SCOPE=BOTH; SCOPE=BOTH;
    ALTER SYSTEM SET DG_BROKER_CONFIG_FILE2='/u03/app/oracle/fast_recovery_area/<db_unique_name>/dr2<db_unique_name>.dat' SID='*' SCOPE=BOTH;
  6. Abilitare il processo DMON di Oracle Broker per il database.
    ALTER SYSTEM SET DG_BROKER_START=TRUE SCOPE=BOTH;
  7. (Facoltativo) Impostare i parametri DB_BLOCK_CHECKING e DB_BLOCK_CHECKSUM.
    ALTER SYSTEM SET DB_BLOCK_CHECKING=FULL SID='*' SCOPE=BOTH;
    ALTER SYSTEM SET DB_BLOCK_CHECKSUM=FULL SID='*' SCOPE=BOTH;
  8. (Facoltativo) Impostare il buffer di log su 256 megabyte.
    ALTER SYSTEM SET LOG_BUFFER=268435456 SID='*' SCOPE=BOTH;
  9. Impostare il parametro DB_LOST_WRITE_PROTECT su TYPICAL.
    ALTER SYSTEM SET DB_LOST_WRITE_PROTECT=TYPICAL SID='*' SCOPE=BOTH;
  10. Abilitare la funzione di flashback del database. Il valore minimo consigliato per DB_FLASHBACK_RETENTION_TARGET è 120 minuti.
    ALTER DATABASE FLASHBACK ON;
    ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET=120; 
    ALTER SYSTEM ARCHIVE LOG CURRENT;
  11. Aggiunge i redo log in standby in base al redo log in linea. È possibile utilizzare la query riportata di seguito per determinare il numero e le dimensioni (in byte) dei file ORL. La dimensione dei redo log in standby deve essere uguale a quella dei redo log in linea, ma è necessario aggiungere uno o più redo log in standby aggiuntivi rispetto a quelli in linea. Nell'esempio seguente esistono quattro redo log In linea, pertanto è necessario aggiungere almeno cinque redo log In standby. In altre parole, per ogni thread è necessario specificare i redo log correnti più almeno uno, quindi utilizzare la stessa dimensione dei redo log originali.
    1. Eseguire la query riportata di seguito per determinare il numero e le dimensioni in byte dei redo log Oracle.
      SELECT GROUP#, BYTES FROM V$LOG;
      L'output deve essere simile a quello riportato di seguito.
      GROUP# BYTES
      ------ ----------
      1      1073741824
      2      1073741824
      3      1073741824
      4      1073741824
    2. Per il primo thread, specificare i redo log correnti più uno e utilizzare le stesse dimensioni dei redo log correnti. ad esempio:
      ALTER DATABASE ADD STANDBY LOGFILE THREAD 1
      GROUP 5 SIZE 1073741824,
      GROUP 6 SIZE 1073741824, 
      GROUP 7 SIZE 1073741824,
      GROUP 8 SIZE 1073741824,
      GROUP 9 SIZE 1073741824;
    3. Per il secondo thread, specificare i redo log correnti più uno e utilizzare le stesse dimensioni dei redo log correnti. ad esempio:
      ALTER DATABASE ADD STANDBY LOGFILE THREAD 2
      GROUP 10 SIZE 1073741824,
      GROUP 11 SIZE 1073741824, 
      GROUP 12 SIZE 1073741824,
      GROUP 13 SIZE 1073741824,
      GROUP 14 SIZE 1073741824;
    4. Verificare di aver creato il numero corretto di redo log in standby.
      SELECT GROUP#, BYTES FROM V$STANDBY_LOG;
      Verrà visualizzato un output simile al seguente:
          GROUP#      BYTES
      ---------- ----------
               5 1073741824
               6 1073741824
               7 1073741824
               8 1073741824
               9 1073741824
              10 1073741824
              11 1073741824
              12 1073741824
              13 1073741824
              14 1073741824
      10 rows selected.

Configura il database in standby (di destinazione)

Per configurare il database in standby (di destinazione), è necessario eliminare il database in standby e modificare i file oratab, listener.ora e tnsnames.ora .

Aggiungere voci per le istanze di database

Aggiornare il file /etc/oratab sui nodi Oracle RAC e aggiungere una voce per l'istanza di database come riportato di seguito.

  1. Utilizzare SSH per collegarsi al primo nodo del database di origine (il database primario) di cui eseguire la migrazione.
  2. Aggiornare /etc/oratab per aggiungere l'ID istanza di database alla voce di database effettuando le operazioni riportate di seguito.
    1. Modifica /etc/oratab:
      sudo vi /etc/oratab
    2. Aggiungere una voce per il database nel seguente formato:
      $ORACLE_SID:$ORACLE_HOME:N
      Esempio per il nodo 1:
      orcl1:/u01/app/oracle/product/12.1.0.2/dbhome_1:N
      Esempio per il nodo 2:
      orcl2:/u01/app/oracle/product/12.1.0.2/dbhome_1:N
  3. Eseguire lo script oraenv per impostare le variabili di ambiente del database, ad esempio $ORACLE_HOME :
    . oraenv
  4. Ripetere i passi precedenti per il secondo nodo Oracle RAC.

Elimina il database in standby (di destinazione)

  1. Utilizzare SSH per eseguire il login al server in standby (di destinazione).
  2. Passare all'utente oracle proprietario del database.
  3. Collegarsi all'istanza del database come utente che dispone del privilegio di amministratore di SYSDBA.
    sqlplus / as sysdba
    Enter password: password
  4. Annullare l'cluster del database come riportato di seguito.
    alter system set cluster_database=false sid='*' scope=spfile;
    System altered.
  5. Chiudi SQL*Plus:
     exit
  6. Arrestare il database utilizzando srvctl:
    srvctl stop database -db database_unqiue_name
  7. Collegarsi all'istanza del database come utente che dispone del privilegio di amministratore di SYSDBA.
    sqlplus / as sysdba
    Enter password: password
  8. Avviare e installare il database in modalità limitata:
     startup mount restrict
    ORACLE instance started.
    Total System Global Area 7516192768 bytes
    Fixed Size                  2941872 bytes
    Variable Size            1409289296 bytes
    Database Buffers         6073352192 bytes
    Redo Buffers               30609408 bytes
    Database mounted.
  9. Elimina il database in standby:
     drop database;
    Database dropped.

Aggiungi servizi statici al file listener.ora del database in standby

Dopo aver aggiunto i servizi statici al database in standby (il database di origine) file listener.ora , è necessario riavviare il listener.

  1. Utilizzare SSH per collegarsi al primo nodo Oracle RAC del database in standby (il database di origine).
  2. Alla riga di comando, connettersi come utente grid.
    sudo su - grid
  3. Modificare ilfile $ORACLE_HOME/network/admin/listener.ora in modo che includa static listener. Nell'esempio seguente viene illustrato il formato da utilizzare per uno static listener.
    SID_LIST_LISTENER=
     (SID_LIST=
      (SID_DESC=
      (SDU=65535)
      (GLOBAL_DBNAME = standby_db_unique_name.standby_db_domain)
      (SID_NAME = standby_db_sid)
      (ORACLE_HOME= standby_oracle_home)
      (ENVS="TNS_ADMIN= standby_oracle_home/network/admin")
      )
    )
  4. Utilizzare la utility srvctl per arrestare il listener.
    srvctl stop listener -l LISTENER
  5. Riavviare listener.
    srvctl start listener -l LISTENER
  6. Controllare lo stato di listener.
    lsnrctl status

    Nota

    output è il nuovo listener con stato UNKNOWN
  7. Ripetere questi passi per il secondo nodo Oracle RAC.

Copia i wallet TDE dal database primario al database in standby

È possibile copiare manualmente i file del wallet TDE dal sistema di database primario (il database di origine) nel database in standby (il database di destinazione) utilizzando SCP (Secure Copy Protocol).

Comprimi il wallet TDE

È necessario eseguire questa operazione nel database primario (il database di origine).

  1. Utilizzare SSH per collegarsi al database primario (il database di origine) server.
  2. Alla riga di comando, connettersi come proprietario del software del database oracle.
    sudo su - oracle
  3. Eseguire lo script oraenv, che imposta la variabile di ambiente $ORACLE_HOME.
    . oraenv
  4. Per trovare la posizione del wallet, collegarsi all'istanza del database primario (il database di origine) con ilprivilegio di amministratore SYSDBA .
    sqlplus / as sysdba
  5. Eseguire una query sulla colonna WRL_PARAMETER della vista dinamica V$ENCRYPTION_WALLET per trovare la directory in cui si trova il wallet.
    SELECT * FROM V$ENCRYPTION_WALLET;
  6. Uscire da SQL*Plus.
    exit
  7. Andare alla directory in cui si trovano i file del wallet. ad esempio:
    cd /u02/app/oracle/admin/source_db_unique_name
  8. Usare il comando tar per comprimere il wallet TDE. ad esempio:
    tar cvf tde_wallet.tar ./tde_wallet
    Viene visualizzato un output simile al seguente:
    ./tde_wallet/
    ./tde_wallet/ewallet.p12
    ./tde_wallet/cwallet.sso
    ./tde_wallet/ewallet_2018021607225910.p12
Copiare il wallet TDE e impostare le autorizzazioni sulla directory del wallet

Dopo aver eseguito il backup del file wallet TDE, è necessario creare una directory per il wallet e impostare le autorizzazioni per questa directory.

  1. Copiare il file tar del wallet in una directory tmp. Ad esempio:
    cp tde_wallet.tar /tmp/
  2. Uscire per diventare l'utente OPC.
    $ exit
  3. Copiare la chiave privata dall'host locale al database primario.
    Per impostazione predefinita, le chiavi private non vengono memorizzate nei database
    scp -i /home/opc/.ssh/privateKey opc@<Primary DB IP>:/home/opc/.ssh/
  4. Utilizzare SCP per copiare i file del wallet dal database primario (il database di origine) al database in standby (il database di destinazione), nelladirectory /opt/oracle/dcs/commonstore/wallets/tde/$ORACLE_UNQNAME . ad esempio:
    scp -i /home/opc/.ssh/privateKey /tmp/tde_wallet.tar opc@<Standby DB IP>:/tmp/
    Viene visualizzato un output simile al seguente:
    tde_wallet.tar
    100% 20KB 20.0KB/s 00:00
  5. Utilizzare SSH per collegarsi al database server di destinazione.
  6. Eseguire l'accesso come proprietario del software del database oracle.
    sudo su - oracle
  7. Eseguire lo script oraenv, che imposta la variabile di ambiente $ORACLE_HOME.
    . oraenv
  8. Per trovare la posizione del wallet, visualizzare il contenuto di sqlnet.ora.
    cat $ORACLE_HOME/network/admin/sqlnet.ora
  9. Ilparametro ENCRYPTION_WALLET_LOCATION visualizza la posizione del wallet. Ad esempio:
    ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=/opt/oracle/dcs/commonstore/wallets/tde/$ORACLE_UNQNAME)))
  10. Andare alla directory del wallet di destinazione. ad esempio:
    cd /opt/oracle/dcs/commonstore/wallets/tde
  11. Controllare che il wallet corretto si trovi in questa directory.
    ls target_db_unique_name
  12. Eseguire il backup del file wallet. ad esempio:
    mv target_db_unique_name target_db_unique_name.old
  13. Creare una directory in cui memorizzare il wallet. ad esempio:
    mkdir target_db_unique_name
  14. Controllare le autorizzazioni sulla directory del wallet.
    ls -ld target_db_unique_name
  15. Se necessario, concedere al proprietario del software del database le autorizzazioni Oracle di lettura, scrittura ed esecuzione.
    chmod 700 target_db_unique_name
  16. Controllare di nuovo le autorizzazioni.
    ls -ld target_db_unique_name
  17. Copiare il file tar del wallet nella directory corrente.
    cp /tmp/tde_wallet.tar .
  18. Controllare le autorizzazioni.
    ls -rlt
    Viene visualizzato un output simile al seguente:
    total 124
    drwx------ 2 oracle oinstall 20480 Feb 16 09:25 target_db_unique_name.old
    drwx------ 2 oracle oinstall 20480 Feb 16 10:16 target_db_unique_name
    -rw-r--r-- 1 oracle oinstall 20480 Feb 16 10:17 tde_wallet.tar
Completa il processo del wallet TDE

È necessario estrarre il file del wallet TDE tar e spostarlo nella directory del wallet sul database in standby (il database di destinazione).

  1. Nel database in standby (il database di destinazione) assicurarsi di trovarsi nella directory wallet corretta. ad esempio:
    pwd
     
    # Output similar to the following should appear:
    /opt/oracle/dcs/commonstore/wallets/tde
  2. Estrarre il file tar.
    tar xvf tde_wallet.tar
    Verrà visualizzato un output simile al seguente:
    ./tde_wallet/ewallet.p12
    ./tde_wallet/ewallet_2018050819024979.p12
    ./tde_wallet/cwallet.sso
  3. Spostare il contenuto tde_wallet nella directory del wallet sul database in standby (il database di destinazione).
    mv ./tde_wallet/* ./target_db_unique_name
  4. Rimuovere il contenuto tde_wallet dal database in standby (il database di destinazione).
    rm -rf ./tde_wallet

Configurare il file dei parametri di inizializzazione in standby e avviare l'istanza in modalità NOMOUNT

Dopo aver configurato il file di inizializzazione in standby, è possibile riavviare il database in modalità NOMOUNT.

  1. Utilizzare SSH per collegarsi al database in standby (il database di destinazione) server.
  2. Eseguire l'accesso come proprietario del software del database oracle.
    sudo su - oracle
  3. Eseguire lo script oraenv, che imposta la variabile di ambiente $ORACLE_HOME.
    . oraenv
  4. Passare alla directory dbs.
    cd $ORACLE_HOME/dbs
  5. Creare un file dei parametri di inizializzazione temporaneo, denominato init_<sid>.ora, dove <sid> è il SID del database di destinazione, come riportato di seguito.
    echo "*.db_name='db_name'" > $ORACLE_HOME/dbs/init<sid>.ora
    echo "*.db_unique_name='target_db_unique_name'" >> $ORACLE_HOME/dbs/init<sid>.ora
  6. Eseguire il backup del password file esistente, se esistente. Ad esempio:
    mv $ORACLE_HOME/dbs/orapw<sid> $ORACLE_HOME/dbs/orapw<sid>.old
  7. Crea un nuovo password file. ad esempio:
    orapwd file=$ORACLE_HOME/dbs/orapwtarget password=admin_password_for_primary entries=5
  8. Modificare il password file del cluster in un password file non-ASM:
    $ srvctl modify database -d <oci_db_unique_name> -pwfile $ORACLE_HOME/dbs/orapw<oci_oracle_sid>
    $ srvctl config database -d <oci_db_unique_name>
  9. Connettersi all'istanza di database in standby (il database di destinazione) come utente che dispone del privilegio di amministratore di sysdba. Ad esempio:
    sqlplus / as sysdba 
  10. Chiudere il database. ad esempio:
    shutdown immediate
  11. Riavviare il database in modalità NOMOUNT utilizzando il file dei parametri di inizializzazione init<sid>.ora.
    startup force nomount PFILE=?/dbs/init<sid>.ora

Duplica il database di destinazione per il database in standby dal database attivo

È possibile eseguire uno script per duplicare il database in standby (il database di destinazione). Se il database primario (il database di origine) è grande, è possibile allocare canali aggiuntivi per migliorarne le prestazioni. Per un database appena installato, in genere un canale esegue la duplicazione del database in alcuni minuti. Assicurarsi che non si verifichino errori dopo aver eseguito l'operazione di duplicazione di Oracle Recovery Manager (Oracle RMAN). In caso di errori, riavviare il database utilizzando il file dei parametri di inizializzazione (non spfile), nel caso venga generato nella directory $ORACLE_HOME/dbs come parte del processo di duplicazione Oracle RMAN.

  1. Connettersi al database in standby (il database di destinazione) come proprietario del software del database oracle.
    su - oracle
  2. Eseguire lo script oraenv, che imposta la variabile di ambiente $ORACLE_HOME.
    . oraenv
  3. Crea dup.rcv
    vi dup.rcv
    Incollare il contenuto dello script durante l'aggiornamento delle variabili richieste.
  4. Con il database in standby (il database di destinazione) in modalità NOMOUNT, connettersi a Oracle RMAN.
    rman
    RMAN> connect target sys@<primary_db_tnsnames_name>
    target database Password: password
    RMAN> connect auxiliary sys@<standby_db_tnsnames_name>
    auxiliary database Password: password
  5. Eseguire lo script riportato di seguito per duplicare il database di destinazione per un database in standby da un database attivo. L'esempio riportato di seguito mostra lo script dup.rcv, che deve essere creato dall'utente, ed è basato sulla nota My Oracle Support 2369137 . RMAN Esecuzioni duplicate attive nel metodo RMAN-06217 -- PUSH & PULL Spiegazione (ID documento 2369137.1). In questo esempio, lo script dup.rcv è stato personalizzato per eseguire il push della duplicazione (copie di immagini) dal file system a Oracle Automatic Storage Management (Oracle ASM). Altre opzioni, ad esempio da file system a Oracle Automatic Storage Management Cluster File System o da Oracle ASM a Oracle ASM, richiedono modifiche ai parametri di destinazione file e ai parametri di conversione del nome file.
    @dup.rcv
    Output similar to the following appears:
    
    RMAN> run {
    2> allocate channel prmy1 type disk;
    3> allocate channel prmy2 type disk;
    4> allocate channel prmy3 type disk;
    5> allocate channel prmy4 type disk;
    6> allocate auxiliary channel stby1 type disk;
    7> allocate auxiliary channel stby2 type disk;
    8> allocate auxiliary channel stby type disk;
    9> duplicate target database for standby from active database dorecover
    10> spfile
    11> parameter_value_convert '/u02/app/oracle/oradata/source_db_name','+DATA'
    12> Set CLUSTER_DATABASE='FALSE'
    13> set db_unique_name='<target_db_unique_name>'
    14> set db_create_file_dest='+DATA'
    15> set db_create_online_log_dest_1='+RECO'
    16> set db_recovery_file_dest='+RECO'
    17> set audit_file_dest='/u01/app/oracle/admin/db_name/adump'
    18> set control_files='+DATA','+RECO'
    19> set dg_broker_config_file1='+DATA/<target_db_unique_name>/dr1<target_db_unique_name>.dat'
    20> set dg_broker_config_file2='+RECO/<target_db_unique_name>/dr2<target_db_unique_name>.dat'
    21> set dispatchers='(PROTOCOL=TCP) (SERVICE=<target_db_name>XDB)'
    22> set instance_name='<target_db_name>'
    23> set db_domain='<target_db_domain>'
    24> set db_recovery_file_dest='+RECO'
    25> ;
    26> }

Passi successivi alla duplicazione Oracle Recovery Manager

Dopo aver completato l'operazione di duplicazione di Oracle Recovery Manager (Oracle RMAN), è necessario eseguire questi task di cleanup sul database in standby (il database di destinazione).

Aggiorna il password file

Aggiornare il password file come indicato di seguito.

  1. Sposta di nuovo il password file in ASM:
    [oracle@oci_node1 ~]$ cp $ORACLE_HOME/dbs/orapw<oci_node1_oracle_sid> /tmp/orapw<oci_node1_oracle_sid>
  2. Uscire dall'utente opc:
    [oracle@oci_node1 ~]$ exit
  3. Passare all'utente grid:
    [opc@oci_node1 ~]$ sudo su - grid
  4. Passa al prompt ASMCMD:
    [grid@oci_node1 ~]$ asmcmd
  5. Copiare la password in ASMCMD:
    ASMCMD> pwcopy --dbuniquename <oci_db_unique_name> '/tmp/orapw<oci_node1_oracle_sid>' '+DATA'

    Nota

    Il comando potrebbe visualizzare errori perché la versione di ASM è diversa da quella del database. Gli errori possono essere ignorati in quanto il problema di registrazione viene risolto in seguito in questa procedura.

  6. Passare alla directory +DATA/<OCI_DB_UNIQUE_NAME>/PASSWORD/per trovare l'ID_generato dal sistema da utilizzare nel passo 9 .
    ASMCMD> cd +DATA/<OCI_DB_UNIQUE_NAME>/PASSWORD/ 
    ASMCMD> ls -lt
  7. Uscire da ASMCMD e dall'utente grid:
    ASMCMD> exit
    [grid@oci_node1 ~]$ exit
  8. Passa all'utente Oracle :
    [opc@oci_node1 ~]$ sudo su - oracle
  9. Eseguire lo script oraenv, che imposta la variabile di ambiente $ORACLE_HOME.
    . oraenv
  10. Modificare il password file nel cluster in ASM:
    [oracle@oci_node1 ~]$ srvctl modify database -d <oci_db_unique_name> -pwfile +DATA/<OCI_DB_UNIQUE_NAME>/PASSWORD/pwd<oci_db_unique_name><system_generated_id>
    [oracle@oci_node1 ~]$ rm $ORACLE_HOME/dbs/orapw<oci_node1_oracle_sid>
Abilita Oracle Flashback

Abilitare Oracle Flashback.

  1. Utilizzare SSH per collegarsi al database in standby (il database di destinazione) server.
  2. Eseguire l'accesso come proprietario del software del database oracle.
    sudo su - oracle
  3. Collegarsi all'istanza del database come utente che dispone del privilegio di amministratore di SYSOPER. ad esempio:
    sqlplus / as sysoper
    Enter password: password
  4. Abilitare Oracle Flashback.
    ALTER DATABASE FLASHBACK ON;
  5. Connettersi come utente con il privilegio di amministratore di SYSDBA.
    CONNECT / AS SYSDBA
  6. Impostare la destinazione di conservazione flashback.
    ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET=120;
Spostare il file spfile in Oracle Automatic Storage Management

Spostare il file spfile in Oracle Automatic Storage Management.

  1. Usa SSH per la connessione al database in standby (il database di destinazione) server.
  2. Collegarsi all'istanza del database come utente che dispone del privilegio di amministratore di SYSOPER.
  3. Creare e spostare il file spfile in Oracle Automatic Storage Management.
    1. Creare il pfile.
      create pfile='/tmp/init<sid>.ora' from spfile;
    2. Chiudi SQL*Plus:
      SQL> exit
    3. Modifica pfile:
      vi /tmp/init<sid>.ora
    4. Eliminare la riga seguente dal file:
      *.instance_name=<sid_for_node1>
    5. Aggiungere le seguenti righe per ogni nodo:
      <sid_for_node1>.instance_name='<sid_for_node1>'
      <sid_for_node2>.instance_name='<sid_for_node2>'
    6. Accedere a SQL*Plus come utente amministratore. ad esempio:
      sqlplus sys / as sysdba
      Password: password
    7. Chiude il database
      shutdown immediate
    8. Riavviare il database in modalità MOUNT utilizzando il file initdb_name.ora appena creato.
      startup mount pfile='/tmp/init<sid>.ora';
    9. Creare il file spfile.
      create spfile='+DATA' from pfile='/tmp/init<sid>.ora';
  4. Uscire da SQL*Plus.
  5. L'utente grid può trovare il file spfile su Oracle Automatic Storage Management utilizzando il comando asmcmd.
    asmcmd
    ASMCMD> cd +DATA/target_db_unique_name/PARAMETERFILE/
    ASMCMD> ls -lt
    Viene visualizzato un output simile al seguente:
    Type           Redund  Striped  Time             Sys  Name
    PARAMETERFILE  UNPROT  COARSE   APR 09 16:00:00  Y    spfile.262.973010033
    Prendere nota del nome ASM (spfile.262.973010033), necessario nel task successivo.
Modificare il file inittarget_db_name.ora in modo che faccia riferimento al file spfile

È possibile modificare il file init<sid>.ora in modo che faccia riferimento al file spfile.

  1. Usa SSH per la connessione al database in standby (il database di destinazione) server.
  2. Eseguire l'accesso come proprietario del software del database oracle.
    su - oracle
  3. Eseguire lo script oraenv per impostare la variabile di ambiente $ORACLE_HOME.
    . oraenv
  4. Passare alla directory $ORACLE_HOME/dbs.
    cd $ORACLE_HOME/dbs
  5. Assicurarsi che il file init<sid>.ora si trovi in questa directory.
    ls *.ora
  6. Modificare il file inittarget_db_name.ora in modo che faccia riferimento al file spfile. ad esempio:
    mv spfiletarget_db_name.ora spfiletarget_db_name.ora.stby
    mv init<sid>.ora init<sid>.ora.stby
    echo ''SPFILE='+DATA/target_db_unique_name/PARAMETERFILE/spfile.262.973010033'' > init<sid>.ora
    cat init<sid>inittarget_db_name.ora--To check the file
    In questo output, spfile.262.973010033 è il nome del file generato quando si sposta ilfile spfile in Oracle Automatic Storage Management nel task precedente.
    Viene visualizzato un output simile al seguente:
    SPFILE='+DATA/target_db_unique_name/PARAMETERFILE/spfile.262.973010033'
Modifica e avvia il database in standby in modalità MOUNT

È possibile utilizzare srvctl per modificare e avviare il database in standby (il database di destinazione).

  1. Utilizzare SSH per collegarsi al database in standby (il database di destinazione) server.
  2. Eseguire l'accesso come proprietario del software del database oracle.
    su - oracle
  3. Eseguire lo script oraenv, che imposta la variabile di ambiente $ORACLE_HOME.
    . oraenv
  4. Utilizzare srvctl per modificare e avviare il database in standby (il database di destinazione) in modalità MOUNT. ad esempio:
    srvctl modify database -db target_db_unique_name -role /
    PHYSICAL_STANDBY -s "READ ONLY"  -spfile /
    +DATA/target_db_unique_name/PARAMETERFILE/spfile.262.973010033
    
    srvctl config database -db target_db_unique_name
  5. Collegarsi all'istanza del database come utente che dispone del privilegio di amministratore di SYSOPER.
    sqlplus / as sysoper
  6. Chiudere il database,
    SQL*Plus
    SHUTDOWN IMMEDIATE
  7. avvia il database in MOUNT
    STARTUP MOUNT
  8. modifica il parametro cluster_database
    
    alter  system set cluster_database=True  sid='*' scope=spfile;
  9. Chiude il database
    SHUTDOWN IMMEDIATE
  10. Uscire da SQL*Plus.
    EXIT
  11. Avviare il database in modalità MOUNT utilizzando srvctl.
    srvctl start database -db target_db_unique_name -o mount
  12. Collegarsi all'istanza del database come utente che dispone del privilegio di amministratore di SYSDBA.
    sqlplus / as sysdba
  13. Eseguire una query sulla vista dinamica V$DATABASE per assicurarsi che il database sia in modalità MOUNT.
    SELECT NAME, OPEN_MODE FROM V$DATABASE;
    Viene visualizzato #Output simile a quello riportato di seguito.
    NAME              OPEN_MODE
    --------------    ---------
    source_db_name    MOUNTED
Impostare i parametri di conversione del database e del nome file di log sul database primario

È necessario impostare i parametri di conversione per il database e il nome del file di log sul database primario (il database di origine).

  1. Utilizzare SSH per collegarsi al database primario (il database di origine) server.
  2. Passa all'utente Oracle:
    sudo su - oracle
  3. Collegarsi all'istanza del database come utente che dispone del privilegio di amministratore di SYSDBA. ad esempio:
    sqlplus / as sysdba
    Enter password: password
  4. Controllare il parametro CONVERT.
    SHOW PARAMETER CONVERT
    Viene visualizzato un output simile al seguente:
    NAME                         TYPE        VALUE
    ------------------------------------ ----------- ------
    db_file_name_convert                 string
    log_file_name_convert                string
    pdb_file_name_convert                string
    La colonna VALUE deve essere vuota (nulla). Se è presente un valore, annotare questo valore al termine della migrazione. Al termine della migrazione, questi valori sono impostati su null.
  5. Utilizzare le informazioni di questo output per impostare ilparametro DB_FILE_NAME_CONVERT .

    Nota

    Tenere presente che in questo passo il valore SOURCE_DB_NAME deve essere maiuscolo.
    ALTER SYSTEM SET DB_FILE_NAME_CONVERT='+DATA','/u02/app/oracle/oradata/SOURCE_DB_NAME/'' SID='*' SCOPE=SPFILE;
  6. Impostare il parametro LOG_FILE_NAME_CONVERT. ad esempio:
    ALTER SYSTEM SET LOG_FILE_NAME_CONVERT='+RECO','/u04/app/oracle/redo/' SID='*' SCOPE=SPFILE;
  7. Riavviare il database.
    srvctl stop database -db source_db_name
    srvctl start database -db source_db_name
Impostare i parametri di conversione del database e del nome file di log sul database in standby

È necessario impostare i parametri di conversione per il database e il nome del file di log sul database in standby (il database di destinazione).

  1. Utilizzare SSH per collegarsi al database in standby (il database di destinazione) server.
  2. Passa all'utente Oracle:
    sudo su - oracle
  3. Collegarsi all'istanza del database come utente che dispone del privilegio di amministratore di SYSDBA. Ad esempio:
    sqlplus / as sysdba
    Enter password: password
  4. Controllare il parametro CONVERT.
    SHOW PARAMETER CONVERT
    Viene visualizzato un output simile al seguente:
     NAME                        TYPE        VALUE
    ------------------------------------ ----------- ------
    db_file_name_convert                 string
    log_file_name_convert                string
    pdb_file_name_convert                string
    La colonna VALUE deve essere vuota (nulla). Se è presente un valore, annotare questo valore al termine della migrazione. Al termine della migrazione, questi valori sono impostati su null.
  5. Utilizzare le informazioni di questo output per impostare il parametro DB_FILE_NAME_CONVERT. ad esempio:

    Nota

    Tenere presente che in questo passo il valore SOURCE_DB_NAME deve essere maiuscolo.
    ALTER SYSTEM SET DB_FILE_NAME_CONVERT='/u02/app/oracle/oradata/SOURCE_DB_NAME/','+DATA' SID='*' SCOPE=SPFILE;
  6. Impostare il parametro LOG_FILE_NAME_CONVERT. ad esempio:
    ALTER SYSTEM SET LOG_FILE_NAME_CONVERT='/u04/app/oracle/redo/','+RECO'
    SID='*' SCOPE=SPFILE;
  7. Riavviare il database.
    srvctl stop database -db target_db_unique_name
    srvctl start database -db target_db_unique_name -o mount

Configurare il database con Oracle Data Guard Broker

È possibile utilizzare la utility dbmgrl per configurare il database primario (il database di origine) o il database in standby (il database di destinazione) con Oracle Data Guard Broker.

  1. Utilizzare SSH per collegarsi al database primario (il database di origine) o al database in standby (il database di destinazione).
  2. Avviare la utility della riga di comando dgmgrl:
    dgmgrl
  3. Connettersi come utente SYS dal sistema di database primario o in standby. Ad esempio, per eseguire il login a un database primario connome TNS OCIC-ORCL:
    connect sys@ocic-orcl
    Enter password: password
  4. Utilizzando la utility dbmgrl, creare la configurazione e l'identità Oracle Data Guard per i database primario e in standby. ad esempio:
    create configuration configuration_name as primary database is source_db_unique_name connect identifier is OCIC-ORCL; -- Uses the source TNS name
     
    add database target_db_unique_name as connect identifier is OCI-ORCL; --Uses the target TNS name
  5. Abilita la configurazione.
    enable configuration
  6. Mostra la configurazione Oracle Data Guard sul database in standby.
    show configuration
    Viene visualizzato un output simile al seguente:
    Configuration - configuration_name
      Protection Mode: MaxPerformance
      Members:
      source_db_unique_name           - Primary database
        target_db_unique_name         - Physical standby database
    
    Fast-Start Failover: DISABLED
    
    Configuration Status:
    SUCCESS   (status updated 12 seconds ago)

Convalida del broker Oracle Data Guard sul database primario e sul database in standby

È possibile utilizzare SQL*Plus per convalidare Oracle Data Guard Broker sul database primario (il database di origine) e sul database in standby (il database di destinazione).

Convalida broker Oracle Data Guard sul database primario

È possibile utilizzare SQL*Plus per convalidare Oracle Data Guard Broker nel database primario (il database di origine).

  1. Utilizzare SSH per collegarsi al database primario (il database di origine) server.
  2. Connettersi come utente che dispone del privilegio di amministratore di SYSDBA. Ad esempio, per un database primario il cui nome TNS è OCIC-ORCL:
    connect sys@ocic-orcl as sysdba
    Enter password: password
  3. Eseguire una query sulla vista dinamica di V$DATABASE.
    SELECT FORCE_LOGGING, FLASHBACK_ON, OPEN_MODE, DATABASE_ROLE, SWITCHOVER_STATUS, DATAGUARD_BROKER, PROTECTION_MODE FROM V$DATABASE;
    
  4. Viene visualizzato un output simile al seguente:
    
    FORCE_LOGGING                           FLASHBACK_ON       OPEN_MODE
    --------------------------------------- ------------------ -----------
    DATABASE_ROLE    SWITCHOVER_STATUS    DATAGUAR PROTECTION_MODE
    ---------------- -------------------- -------- --------------------
    YES                                     YES                READ WRITE
    PRIMARY          TO STANDBY           ENABLED  MAXIMUM PERFORMANCE
    Nell'output, DATABASE_ROLE deve essere PRIMARY e OPEN_MODE deve essere READ WRITE.

Convalida broker Oracle Data Guard sul database in standby

È possibile utilizzare SQL*Plus per convalidare Oracle Data Guard Broker sul database in standby (il database di destinazione).

  1. Utilizzare SSH per collegarsi al database in standby (il database di destinazione) server.
  2. Connettersi come utente che dispone del privilegio di amministratore di SYSDBA.
  3. Eseguire una query sulla vista dinamica di V$DATABASE.
    SELECT FORCE_LOGGING, FLASHBACK_ON,
    OPEN_MODE, DATABASE_ROLE, SWITCHOVER_STATUS,
    DATAGUARD_BROKER, PROTECTION_MODE
    FROM V$DATABASE;
    Viene visualizzato un output simile al seguente:
    FORCE_LOGGING                           FLASHBACK_ON       OPEN_MODE
    --------------------------------------- ------------------ -----------
    DATABASE_ROLE    SWITCHOVER_STATUS    DATAGUAR PROTECTION_MODE
    ---------------- -------------------- -------- --------------------
    YES                                     YES                MOUNTED
    PHYSICAL STANDBY NOT ALLOWED          ENABLED  MAXIMUM PERFORMANCE
    L'output deve mostrare DATABASE_ROLE come PHYSICAL STANDBY e OPEN_MODE come MOUNTED.
  4. Verificare che i processi Oracle Data Guard vengano avviati nel database in standby.
    SELECT PROCESS,PID,DELAY_MINS FROM V$MANAGED_STANDBY;
    Viene visualizzato un output simile al seguente:
    PROCESS   PID                      DELAY_MINS
    --------- ------------------------ ----------
    ARCH      9207                              0
    ARCH      9212                              0
    ARCH      9216                              0
    ARCH      9220                              0
    RFS       1065                              0
    RFS       1148                              0
    RFS       1092                              0
    MRP0      972                               0
    RFS       1208                              0
    L'output dovrebbe indicare che i processi sono in esecuzione senza alcun ritardo. Se DELAY_MINS for MRP0, i database vengono sincronizzati.
  5. Controllare il parametro LOG_ARCHIVE_DEST.
    SHOW PARAMETER LOG_ARCHIVE_DEST_
    Viene visualizzato un output simile al seguente:
    NAME                         TYPE      VALUE
    ---------------------------- --------- -----------------------------
    log_archive_dest_1           string       
                                           location=USE_DB_RECOVERY_FILE_
                                           DEST, valid_for=(ALL_LOGFILES,
                                           ALL_ROLES)
    log_archive_dest_10          string
    log_archive_dest_11          string
    log_archive_dest_12          string
    log_archive_dest_13          string
    log_archive_dest_14          string
    log_archive_dest_15          string
    ...
    log_archive_dest_2           string    service="oci-orcl", ASYNC
                                           NOAF FIRM delay=0 optional
                                           compression=disable
                                           max_failure=0 max_connections
                                           =1 reopen=300 db_unique_name=
                                           "source_db_unique_name"
                                           net_timeout=30, valid_for=
                                           (online_logfile,all_roles)
    ...
    
    L'output deve essere simile all'output di log_archive_dest_2, con il servizio che punta al database in standby (il database di destinazione), che in questo esempio è oci-orcl.
  6. Controllare il parametro LOG_ARCHIVE_CONFIG.
    SHOW PARAMETER LOG_ARCHIVE_CONFIG#
    Viene visualizzato un output simile al seguente:
    
    NAME                         TYPE      VALUE
    ---------------------------- --------- -----------------------------------------------------------
    log_archive_config           string    dg_config=(source_db_unique_name,target_db_unique_name)
    
  7. Controllare il parametro FAL_SERVER.
    SHOW PARAMETER FAL_SERVER
    Viene visualizzato un output simile al seguente:
    
    NAME                        TYPE      VALUE
    --------------------------- --------- ----------
    fal_server                  string    <tns_entry_of_primary>  
  8. Controllare il parametro LOG_ARCHIVE_FORMAT.
    SHOW PARAMETER LOG_ARCHIVE_FORMAT
    Viene visualizzato un output simile al seguente:
    
    NAME                        TYPE      VALUE
    --------------------------- --------- --------------
    log_archive_format          string    %t_%s_%r.dbf

Completa la convalida sul database primario

È possibile utilizzare dgmrgl per completare la convalida di Oracle Data Guard Broker sul database primario (il database di origine).

  1. Utilizzare SSH per collegarsi al database primario (il database di origine) server.
  2. Ripetere i passi da 5 a 8 nell'argomento Convalida broker Oracle Data Guard sul database in standby nel database primario (il database di origine).
  3. Avviare la utility della riga di comando dgmgrl:
    dgmgrl
  4. Connettersi come utente SYS dal sistema di database primario o in standby. Ad esempio, per eseguire il login a un database primario con nome TNS OCIC-ORCL:
    connect sys@primary_db_tnsnames_name
    Enter password: password
  5. Controllare la configurazione di Oracle Data Guard.
    show configuration verbose
    Viene visualizzato un output simile al seguente:
    Configuration - configuration_name
     
      Protection Mode: MaxPerformance
      Members:
      source_db_unique_name           - Primary database
        target_db_unique_name         - Physical standby database
     
      Properties:
        FastStartFailoverThreshold      = '30'
        OperationTimeout                = '30'
        TraceLevel                      = 'USER'
        FastStartFailoverLagLimit       = '30'
        CommunicationTimeout            = '180'
        ObserverReconnect               = '0'
        FastStartFailoverAutoReinstate  = 'TRUE'
        FastStartFailoverPmyShutdown    = 'TRUE'
        BystandersFollowRoleChange      = 'ALL'
        ObserverOverride                = 'FALSE'
        ExternalDestination1            = ''
        ExternalDestination2            = ''
        PrimaryLostWriteAction          = 'CONTINUE'
     
    Fast-Start Failover: DISABLED
  6. Controllare lo stato sul database in standby (il database di destinazione). ad esempio:
    show database verbose target_db_unique_name
    Dopo aver completato questi passi, è necessario verificare che la configurazione di Oracle Data Guard funzioni come previsto eseguendo le operazioni di switchover in entrambe le direzioni.

Esecuzione della migrazione

Per completare la migrazione, è necessario eseguire un'operazione di switchover dal database primario (il database di origine) al database in standby (il database di destinazione).

  1. Utilizzare SSH per collegarsi al database primario (il database di origine) server.
  2. Avviare la utility della riga di comando dgmgrl.
    dgmgrl 
  3. Connettersi come utente SYS dal sistema di database primario o in standby. Ad esempio, per eseguire il login a un database primario il cui nome TNS è OCIC-ORCL:.
    connect sys@ocic-orcl
    Enter password: password
  4. Controllare la configurazione.
    show configuration verbose
  5. Nell'output descrittivo della configurazione verificare che l'impostazione Stato database indichi SUCCESS.
  6. Controllare la configurazione del database primario (il database di origine).
    show database verbose source_db_unique_name
    L'output descrittivo del database deve indicare che il ruolo è primario e che l'impostazione per StaticConnectIdentifier è uguale a DGConnectIdentifier.
  7. Eseguire un'operazione di switchover sul database in standby (il database di destinazione).
    switchover to target_db_unique_name
    L'output deve indicare che l'operazione di switchover si verifica tra i due database.
  8. Eseguire Mostra configurazione per verificare che non vi siano errori o avvertenze:
    show configuration;

Passi successivi alla migrazione

Dopo aver completato la migrazione di un database Oracle da un server Oracle Cloud Infrastructure Compute Classic a un server Oracle Cloud Infrastructure che utilizza un sistema di database Virtual Machine, è necessario convalidare la migrazione e quindi rimuovere la configurazione dal database primario (il database di origine).

Eseguire il test della configurazione di Oracle Data Guard sul database in standby

In questa fase il database di destinazione è ora il database primario. Il database di origine è ora il database in standby.

È possibile eseguire il test della connessione Oracle Data Guard nel database di destinazione eseguendo un'operazione di switchover con il database di origine. Questa operazione di switchover renderà il database di destinazione di nuovo ruolo in standby. Lo scopo di questo test è provare a tornare alla configurazione originale qualora il database di destinazione non funzioni.

  1. Utilizzare SSH per collegarsi al database in standby (il database di destinazione) server.
  2. Avviare la utility dgmgrl. ad esempio:
    dgmgrl sys@target_db
    Enter password: password
  3. Eseguire un'operazione di switchover sul database di origine. Questa operazione renderà il database di destinazione il ruolo in standby.
    switchover to source_db_unique_name;
    L'output deve indicare che l'operazione di switchover si verifica tra i due database.
  4. (Facoltativo) Per impedire che vengano apportate modifiche al nuovo database in standby finché il nuovo database primario non sarà completamente funzionale, disabilitare temporaneamente la funzione Redo Apply.
    edit database source_db_unique_name set state = 'APPLY-OFF';
    Se si esegue un'altra operazione di switchover in modo che il database di destinazione sia il database in standby, è possibile eseguire un'operazione APPLY-OFF per impedire l'aggiornamento del database di origine. Ciò consente di mettere in servizio il database di destinazione e di conservare il database di origine come backup point in time in caso di errore logico nella nuova configurazione.
  5. (Facoltativo) Per riavviare la funzionalità di applicazione:
    edit database source_db_unique_name set state = 'APPLY-ON';
  6. Uscire da dgmgrl.
    exit
  7. Eseguire un'operazione di switchover al database di destinazione, che diventerà il ruolo in standby del database di origine.
    switchover to target_db_unique_name;
    L'output deve indicare che l'operazione di switchover si verifica tra i due database.
  8. Eseguire il test della connessione al nuovo database primario. Ad esempio, dopo aver esportato il nome univoco target, connettersi come utente SYS e selezionare uno spazio tabella cifrato. In questo esempio la tabella HR.EMPLOYEES è cifrata.
    exit
  9. Eseguire il test della connessione al nuovo database primario. Ad esempio, dopo aver esportato il nome univoco target, connettersi come utente SYS e selezionare uno spazio tabella cifrato. In questo esempio la tabella HR.EMPLOYEES è cifrata.
    export ORACLE_UNQNAME=target_db_unique_name
     
    sqlplus sys@target_TNS_name
    Password: password
     
    SQL> ALTER SESSION SET CONTAINER = PDB1;
    SQL> SELECT * FROM HR.EMPLOYEES;
     
    SQL> EXIT

Esegui cleanup del database in standby

Dopo aver completato la migrazione ed eseguirne il test, è possibile rimuovere la configurazione Oracle Data Guard dal database in standby (il database di destinazione). Non è necessario rimuovere il database di origine originale. In questa fase, il database in standby è il nuovo database di origine.

  1. Utilizzare SSH per collegarsi al database in standby (il database di destinazione) server e collegarsi a Oracle Data Guard dgmgrl utility.
  2. Controllare la configurazione.
    show configuration
  3. Se la configurazione non mostra Protection Mode: MaxPerformance, impostare Oracle Data Guard in modo che utilizzi la modalità di protezione MaxPerformance.
    edit configuration set protection mode as maxperformance
  4. Disabilitare e rimuovere la configurazione.
    edit database source_db_unique_name set state = 'APPLY-OFF';
     
    disable configuration;
     
    remove configuration;
     
    exit
  5. Connettersi all'istanza di database come utente che dispone del privilegio di amministratore di SYSDBA, ad esempio:
    sqlplus / as sysdba
  6. Controllare i parametri DG_BROKER_CONFIG_FILE.
    SHOW PARAMETER DB_BROKER_CONFIG_FILE
    L'output deve elencare i dati e i file di recupero associati per questa configurazione, in genere denominati dg_broker_config_file1 e dg_broker_config_file2.
  7. Avviare un'altra finestra del terminale e collegarsi a asmcmd come utente della griglia.
  8. Rimuovere i file di configurazione Oracle Data Guard elencati durante la selezione dei parametri di DG_BROKER_CONFIG_FILE.
  9. Tornare alla finestra che esegue SQL*Plus.
  10. Eseguire le istruzioni ALTER SYSTEM riportate di seguito.
    ALTER SYSTEM SET DG_BROKER_START=FALSE SID='*' SCOPE=BOTH;
    ALTER SYSTEM SET DG_BROKER_CONFIG_FILE1='' SID='*' SCOPE=SPFILE;
    ALTER SYSTEM SET DG_BROKER_CONFIG_FILE2='' SID='*' SCOPE=SPFILE;
    ALTER SYSTEM RESET LOG_ARCHIVE_CONFIG SID='*' SCOPE=SPFILE;
  11. Controllare i seguenti parametri:
    SHOW PARAMETER DB_FILE_NAME_CONVERT
    SHOW PARAMETER LOG_FILE_NAME_CONVERT
    SHOW PARAMETER LOG_ARCHIVE_DEST
    SHOW PARAMETER LOG_ARCHIVE_DEST_STATE
    SHOW PARAMETER STANDBY_ARCHIVE_DEST
    SHOW PARAMETER FAL
  12. Se sono impostati parametri precedenti, reimpostare i parametri in modo che utilizzino valori vuoti. Ad esempio, per STANDBY_ARCHIVE_DEST :
    ALTER SYSTEM SET STANDBY_ARCHIVE_DEST='' SID='*' SCOPE=SPFILE;
  13. Riavviare il database.
    SHUTDOWN IMMEDIATE
    STARTUP
  14. Elimina i log in standby dal database primario (il database di origine).
    1. Trovare i numeri di gruppo per i redo log del database in standby che si trovano nel nuovo database primario (in precedenza nel database di destinazione).
      SELECT GROUP# FROM V$STANDBY_LOG;Output similar to the following appears:    GROUP#
      ----------
               5
               6
               7
               8
               9
    2. Rimuovere i log in standby. ad esempio:
      ALTER DATABASE DROP STANDBY LOGFILE GROUP 5;
      ALTER DATABASE DROP STANDBY LOGFILE GROUP 6;
      ALTER DATABASE DROP STANDBY LOGFILE GROUP 7;
      ALTER DATABASE DROP STANDBY LOGFILE GROUP 8;
      ALTER DATABASE DROP STANDBY LOGFILE GROUP 9;
  15. (Facoltativo) Modificare i parametri DB_BLOCK_CHECKSUM e DB_BLOCK_CHECKING.
    I valori predefiniti sono DB_BLOCK_CHECKSUM=TYPICAL e DB_BLOCK_CHECKING=FALSE.
  16. Uscire da SQL*Plus.
    EXIT