- Implantar uma topologia DR híbrida para um Oracle Exadata local
- Criar uma Instância Stand-by
Criar uma Instância Stand-by
Crie uma instância de nuvem stand-by a partir do banco de dados principal.
Criar um Log de Arquivamento
Verifique o modo de log do seu Oracle Exadata Database Machine local. Se estiver no modo NOARCHIVELOG, altere-o para o modo ARCHIVELOG para criar um log de arquivamento.
- Exiba o modo de log do servidor local.
SQL> select log_mode from v$database;A saída será semelhante à seguinte quando o modo de log estiver no modoNOARCHIVELOG:LOG_MODE ------------ NOARCHIVELOG - Faça shutdown da instância local.
SQL> shutdown immediate;A saída será semelhante à seguinte:Database closed. Database dismounted. ORACLE instance shut down. - Monte o banco de dados local.
SQL> startup mount;A saída será semelhante à seguinte:ORACLE instance started. Total System Global Area 4966054520 bytes Fixed Size 9144952 bytes Variable Size 922746880 bytes Database Buffers 4026531840 bytes Redo Buffers 7630848 bytes Database mounted. - Altere o log de arquivamento do banco de dados e abra o banco de dados.
SQL> alter database archivelog;SQL> alter database open; - Altere o modo de log para
ARCHIVELOG.SQL> select log_mode from v$database;LOG_MODE ------------ ARCHIVELOG - Exiba a lista de logs de arquivamento.
SQL> archive log list;A saída será semelhante à seguinte:Database log mode Archive Mode Automatic archival Enabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 4 Next log sequence to archive 7 Current log sequence 7 - Arquivar todos os logs.
SQL> archive log all;ORA-00271:there are no logs that need archiving
Instanciar o Banco de Dados Stand-by no OCI
Instancie o banco de dados Oracle Database Exadata Cloud Service stand-by.
- Interrompa ou faça shutdown do banco de dados Oracle Database Exadata Cloud Service usando o utilitário
srvctl.-
$ srvctl stop database -d standby DB_UNIQUE_NAME -o immediate -
$ srvctl stop database -d DB1_phx3g7 -o immediate
-
- Conecte-se ao banco de dados.
SQL> startup nomount; - No Oracle Exadata Database Machine local principal, execute a série de comandos a seguir para forçar o log e definir o arquivo de log.
SQL> alter database force logging;SQL> set linesize 500 pages 0 SQL> col value for a90 SQL> col name for a50 SQL> select name, value from v$parameter where name in ('db_name','db_unique_name','log_archive_config', 'log_archive_dest_1','log_archive_dest_2','log_archive_dest_state_1','log_archive_de st_state_2', 'remote_login_passwordfile', 'log_archive_format','log_archive_max_processes','fal_server','db_file_name_convert' ,'log_file_name_convert', 'standby_file_management');A saída será semelhante à seguinte:db_file_name_convert log_file_name_convert log_archive_dest_1 location=USE_DB_RECOVERY_FILE_DEST valid_for=(ALL_LOGFILES,ALL_ROLES) MAX_FAILURE=1 REOPEN =5 DB_UNIQUE_NAME=db1 ALTERNATE=LOG_ARCHIVE_DEST_2 log_archive_dest_2 location=+DATAC1 valid_for=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=db1 ALTERNATE=LOG_ARCHI VE_DEST_1 log_archive_dest_state_1 ENABLE log_archive_dest_state_2 ALTERNATE fal_server log_archive_config log_archive_format %t_%s_%r.dbf log_archive_max_processes 4 standby_file_management MANUAL remote_login_passwordfile EXCLUSIVE db_name db1 db_unique_name db1 14 rows selected. - Defina o gerenciamento de arquivos stand-by.
SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO SID='*'; - No Oracle Exadata Database Machine local principal, defina os parâmetros a seguir para arquivamento de log e gerenciamento stand-by.
LOG_ARCHIVE_CONFIG='DG_CONFIG=(PROD1,STAND1)' LOG_ARCHIVE_DEST_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=PROD1' LOG_ARCHIVE_DEST_2='SERVICE=STAND1 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=STAND1' LOG_ARCHIVE_DEST_STATE_1=ENABLE LOG_ARCHIVE_DEST_STATE_2=ENABLE REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE LOG_ARCHIVE_FORMAT=%t_%s_%r.arc LOG_ARCHIVE_MAX_PROCESSES=8 FAL_SERVER=STAND1 DB_FILE_NAME_CONVERT='STAND1',' PROD1' LOG_FILE_NAME_CONVERT= 'STAND1',' PROD1' STANDBY_FILE_MANAGEMENT=AUTOA amostra a seguir inclui os valores de parâmetro:ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(DB1, DB1_phx3g7)'; ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=DB1'; ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=DB1_phx3g7 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DB1_phx3g7’; ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_1=ENABLE; ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=DEFER; ALTER SYSTEM SET FAL_SERVER=DB1_phx3g7; ALTER SYSTEM SET FAL_CLIENT=DB1; ALTER SYSTEM SET DB_FILE_NAME_CONVERT='DB1_phx3g7','DB1' scope=spfile; ALTER SYSTEM SET LOG_FILE_NAME_CONVERT='DB1_phx3g7','DB1' scope=spfile; ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO; - No Oracle Exadata Database Machine local principal, efetue log-in como
sysdbae execute a série de comandos a seguir para forçar o log.$ sqlplus / as sysdbaSQL> ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(DB1, DB1_phx3g7)'; System altered. SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=DB1'; System altered. SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=DB1_phx3g7 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DB1_phx3g7'; System altered. SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_1=ENABLE; System altered. SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=DEFER; System altered. SQL> ALTER SYSTEM SET REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE;ERROR at line 1: ORA-02095: specified initialization parameter cannot be modified SQL> ALTER SYSTEM SET FAL_SERVER=DB1_phx3g7; System altered. SQL> ALTER SYSTEM SET FAL_CLIENT=DB1; System altered. SQL> ALTER SYSTEM SET DB_FILE_NAME_CONVERT='DB1_phx3g7','DB1' scope=spfile; System altered. SQL> ALTER SYSTEM SET LOG_FILE_NAME_CONVERT= 'DB1_phx3g7','DB1' scope=spfile; System altered. SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO; System altered.Não crie umpfileno Oracle Exadata Database Machine local principal. Em vez disso, use oPfilepadrão criado pelo Oracle Database Exadata Cloud Service. - No Oracle Database Exadata Cloud Service stand-by, efetue log-in como
sysdbae inicie a instância sem montar o banco de dados.$ sqlplus / as sysdbaSQL> startup nomount; - No Oracle Database Exadata Cloud Service stand-by, execute a série de comandos a seguir para definir o servidor, o log e o gerenciamento de arquivos.
alter system set fal_server='DB1' scope =spfile; alter system set fal_client='DB1_PHX3G7' scope =spfile; alter system set log_archive_config='DG_CONFIG=(DB1, DB1_phx3g7)' scope =spfile; alter system set log_archive_dest_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=DB1_PHX3G7' scope =spfile; alter system set log_archive_dest_2='SERVICE=DB1 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DB1' scope =spfile; alter system set log_archive_dest_state_1='ENABLE' scope =spfile; alter system set log_archive_dest_state_2='ENABLE' scope =spfile; alter system set log_archive_format='%t_%s_%r.dbf' scope =spfile; alter system set log_file_name_convert='DB1','DB1_phx3g7' scope =spfile; alter system set db_file_name_convert='DB1','DB1_phx3g7' scope =spfile; alter system set remote_login_passwordfile='exclusive' scope =spfile; alter system set standby_file_management='AUTO' scope =spfile; - No Oracle Database Exadata Cloud Service stand-by, use o Oracle Recovery Manager (RMAN) para definir um alvo de teste e stand-by na nuvem; em seguida, execute o RMAN para criar o stand-by.
rman target sys/Test_Dr_123@DB1 auxiliary sys/Test_Dr_123@DB1_Phx3g7A saída será semelhante à seguinte:connected to target database: DB1 (DBID=1657313530) connected to auxiliary database: DB1 (not mounted)RMAN> run - No Oracle Database Exadata Cloud Service stand-by, efetue log-in como
sysdbae desconecte-se da sessão.$ sqlplus / as sysdbaSQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION; - No Oracle Database Exadata Cloud Service stand-by, exiba os logs para verificar se a recuperação de Mídia está em Trânsito.
[oracle@exacs82-vm3sv1 DB11]$ pwd /u02/app/oracle/diag/rdbms/db1_phx3g7/DB11[oracle@exacs82-vm3sv1 trace]$ tail -f alert_DB11.logA saída incluirá uma linha semelhante à seguinte:PR00 (PID:253670): Media Recovery Waiting for T-1.S-125 (in transit) - No Oracle Exadata Database Machine local principal, efetue log-in no sqlplus como
sysdbae execute a série de comandos sql a seguir para alternar o arquivo de log.$ sqlplus / as sysdbaSQL> alter system switch logfile; SQL> / SQL> / SQL> / - No Oracle Database Exadata Cloud Service stand-by, efetue log-in como
sysdbae execute a série de comandos a seguir.SQL> SELECT ARCH.THREAD# "Thread", ARCH.SEQUENCE# "Last Sequence Received", APPL.SEQUENCE# "Last Sequence Applied", (ARCH.SEQUENCE# - APPL.SEQUENCE#) "Difference" FROM (SELECT THREAD#,SEQUENCE# FROM V$ARCHIVED_LOG WHERE (THREAD#,FIRST_TIME ) IN (SELECT THREAD#,MAX(FIRST_TIME) FROM V$ARCHIVED_LOG GROUP BY THREAD#)) ARCH,(SELECT THREAD# ,SEQUENCE# FROM V$LOG_HISTORY WHERE (THREAD#,FIRST_TIME ) IN (SELECT THREAD#,MAX(FIRST_TIME) FROM V$LOG_HISTORY GROUP BY THREAD#)) APPL WHERE ARCH.THREAD# = APPL.THREAD# ORDER BY 1;Thread Last Sequence Received Last Sequence Applied Difference ---------- ---------------------- --------------------- ---------- 1 124 124 0 2 26 26 0SQL> /Thread Last Sequence Received Last Sequence Applied Difference ---------- ---------------------- --------------------- ---------- 1 124 124 0 2 26 26 0SQL> /Thread Last Sequence Received Last Sequence Applied Difference ---------- ---------------------- --------------------- ---------- 1 130 128 2 2 27 27 0SQL> /Thread Last Sequence Received Last Sequence Applied Difference ---------- ---------------------- --------------------- ---------- 1 130 128 2 2 27 27 0SQL> /Thread Last Sequence Received Last Sequence Applied Difference ---------- ---------------------- --------------------- ---------- 1 130 130 0 2 28 28 0 - No Oracle Database Exadata Cloud Service stand-by, efetue log-in como
sysdbae execute a série de comandos a seguir.SQL> alter database recover managed standby database cancel;SQL> show parameter clusterNAME TYPE VALUE ------------------------------------ ----------- ------------------------------ cdb_cluster boolean FALSE cdb_cluster_name string cluster_database boolean FALSE cluster_database_instances integer 1 cluster_interconnects string 192.0.2.22:192.0.2.23 SQL> alter system set cluster_database=TRUE scope=spfile; System altered.SQL> alter system set cluster_database=TRUE scope=spfile;SQL> show parameter cluster;NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ cdb_cluster boolean FALSE cdb_cluster_name string cluster_database boolean FALSE cluster_database_instances integer 1 cluster_interconnects string 192.0.2.22:192.0.2.23 SQL> / System altered.SQL> show parameter pluggable;NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ enable_pluggable_database boolean FALSE SQL> shutdown; ORA-01109: database not open Database dismounted. ORACLE instance shut down. - No Oracle Database Exadata Cloud Service stand-by, exiba o status dos recursos e confirme se eles estão todos on-line.
[grid@exacs82-vm3sv1 ~]$ crsctl stat resA saída incluirá o tipo, o status do alvo e o estado de cada recurso. Por exemplo, :NAME=ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup) TYPE=ora.asm_listener.type TARGET=ONLINE , ONLINE STATE=ONLINE on exacs82-vm3sv1, ONLINE on exacs82-vm3sv2 NAME=ora.DATAC1.ACFSVOL01.advm TYPE=ora.volume.type TARGET=ONLINE , ONLINE STATE=ONLINE on exacs82-vm3sv1, ONLINE on exacs82-vm3sv2 NAME=ora.DATAC1.dg(ora.asmgroup) TYPE=ora.diskgroup.type TARGET=ONLINE , ONLINE STATE=ONLINE on exacs82-vm3sv1, ONLINE on exacs82-vm3sv2 NAME=ora.LISTENER.lsnr TYPE=ora.listener.type TARGET=ONLINE , ONLINE STATE=ONLINE on exacs82-vm3sv1, ONLINE on exacs82-vm3sv2 . . . - No Oracle Database Exadata Cloud Service stand-by, inicie e monte o banco de dados.
[oracle@exacs82-vm3sv1 ~]$ source DB1.env [oracle@exacs82-vm3sv1 ~]$ srvctl start database -db db1_phx3g7 -startoption mount - No Nó 1 do Oracle Database Exadata Cloud Service stand-by, efetue log-in como
sysdba, monte o banco de dados emopen_modee saia.oracle@exacs82-vm3sv1SQL> select open_mode from v$database;A saída será semelhante à seguinte:OPEN_MODE -------------------- MOUNTEDSQL> exit - No Nó 2 do Oracle Database Exadata Cloud Service stand-by, efetue log-in como
sysdba, monte o banco de dados emopen_modee saia.oracle@exacs82-vm3sv2SQL> select open_mode from v$database;A saída será semelhante à seguinte:OPEN_MODE -------------------- MOUNTEDSQL> exit - Desconecte-se da sessão.
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;A saída será semelhante à seguinte: - No Oracle Exadata Database Machine local principal, execute a seguinte série de comandos SQL para o arquivo de log.
SQL> alter database force logging;SQL> /SQL> / - No Oracle Database Exadata Cloud Service stand-by, efetue log-in como
sysdbae execute a série de comandos a seguir.SQL> SELECT ARCH.THREAD# "Thread", ARCH.SEQUENCE# "Last Sequence Received", APPL.SEQUENCE# "Last Sequence Applied", (ARCH.SEQUENCE# - APPL.SEQUENCE#) "Difference" FROM (SELECT THREAD#,SEQUENCE# FROM V$ARCHIVED_LOG WHERE (THREAD#,FIRST_TIME ) IN (SELECT THREAD#,MAX(FIRST_TIME) FROM V$ARCHIVED_LOG GROUP BY THREAD#)) ARCH,(SELECT THREAD# ,SEQUENCE# FROM V$LOG_HISTORY WHERE (THREAD#,FIRST_TIME ) IN (SELECT THREAD#,MAX(FIRST_TIME) FROM V$LOG_HISTORY GROUP BY THREAD#)) APPL WHERE ARCH.THREAD# = APPL.THREAD# ORDER BY 1;Thread Last Sequence Received Last Sequence Applied Difference ---------- ---------------------- --------------------- ---------- 1 161 161 0 2 41 41 0SQL> /Thread Last Sequence Received Last Sequence Applied Difference ---------- ---------------------- --------------------- ---------- 1 161 161 0 2 41 41 0SQL> /Thread Last Sequence Received Last Sequence Applied Difference ---------- ---------------------- --------------------- ---------- 1 161 161 0 2 41 41 0SQL> /Thread Last Sequence Received Last Sequence Applied Difference ---------- ---------------------- --------------------- ---------- 1 163 161 2 2 41 41 0SQL> /Thread Last Sequence Received Last Sequence Applied Difference ---------- ---------------------- --------------------- ---------- 1 163 161 2 2 41 41 0SQL> /Thread Last Sequence Received Last Sequence Applied Difference ---------- ---------------------- --------------------- ---------- 1 163 163 0 2 42 42 0 - No Oracle Exadata Database Machine local principal, verifique se o arquivo
tnsnames.oraestá configurado corretamente para o seguinte:
Verifique oDB1 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = exa11-scan1)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = db1.us.osc.oracle.com) (INSTANCE_NAME = db12) ) ) DB1_phx3g7 = (DESCRIPTION = (SDU = 65536) (RECV_BUF_SIZE = 134217728) (SEND_BUF_SIZE = 134217728) (ADDRESS_LIST = (CONNECT_TIMEOUT = 3) (RETRY_COUNT = 3) (ADDRESS = (PROTOCOL = TCP)(HOST = 10.255.195.136)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = DB1_phx3g7.datasubnetactiv.oscphevcn.oraclevcn.com) (UR = A) ) )tnsnamesdo banco de dados local (db1):[oracle@exa11db01 admin]$ tnsping db1
Verifique oUsed parameter files: /u01/app/oracle/product/19.0.0.0/dbhome_1/network/admin/sqlnet.ora Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = exa11-scan1)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = db1.us.osc.oracle.com) (INSTANCE_NAME = db11))) OK (0 msec)tnsnamesda instância do Oracle Database Exadata Cloud Service (DB1_phx3g7):[oracle@exa11db01 admin]$ tnsping DB1_phx3g7TNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on 05-FEB-2021 16:19:15 Copyright (c) 1997, 2020, Oracle. All rights reserved. Used parameter files: /u01/app/oracle/product/19.0.0.0/dbhome_1/network/admin/sqlnet.ora Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (SDU = 65536) (RECV_BUF_SIZE = 134217728) (SEND_BUF_SIZE = 134217728) (ADDRESS_LIST = (CONNECT_TIMEOUT = 3) (RETRY_COUNT = 3) (ADDRESS = (PROTOCOL = TCP)(HOST = 10.255.195.136)(PORT = 1521))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = DB1_phx3g7.datasubnetactiv.oscphevcn.oraclevcn.com) (UR = A))) OK (40 msec) - No Oracle Database Exadata Cloud Service stand-by, verifique se o arquivo
tnsnames.oraestá configurado corretamente para o seguinte:
Verifique odb1 = (DESCRIPTION = (SDU=65536) (RECV_BUF_SIZE=134217728) (SEND_BUF_SIZE=134217728) (ADDRESS_LIST = (CONNECT_TIMEOUT=3)(RETRY_COUNT=3) (ADDRESS = (PROTOCOL = TCP)(HOST = 10.136.74.18)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = db1.us.osc.oracle.com) (UR=A) ) ) DB1_phx3g7 = (DESCRIPTION = (SDU = 65536) (RECV_BUF_SIZE = 134217728) (SEND_BUF_SIZE = 134217728) (ADDRESS_LIST = (CONNECT_TIMEOUT = 3) (RETRY_COUNT = 3) (ADDRESS = (PROTOCOL = TCP)(HOST = 10.255.195.136)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = DB1_phx3g7.datasubnetactiv.oscphevcn.oraclevcn.com) (INSTANCE_NAME = DB12) (UR = A) ) )tnsnamesdo banco de dados local (db1):[oracle@exacs82-vm3sv2 DB1]$ tnsping db1
Verifique oTNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on 05-FEB-2021 16:34:59 Copyright (c) 1997, 2020, Oracle. All rights reserved. Used parameter files: /u02/app/oracle/product/19.0.0.0/dbhome_5/network/admin/DB1/sqlnet.ora Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (SDU=65536) (RECV_BUF_SIZE=134217728) (SEND_BUF_SIZE=134217728) (ADDRESS_LIST = (CONNECT_TIMEOUT=3)(RETRY_COUNT=3) (ADDRESS = (PROTOCOL = TCP)(HOST = 10.136.74.18)(PORT = 1521))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = db1.us.osc.oracle.com) (UR=A))) OK (40 msec)tnsnamesda instância do Oracle Database Exadata Cloud Service (DB1_phx3g7):[oracle@exacs82-vm3sv2 DB1]$ tnsping DB1_phx3g7TNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on 05-FEB-2021 16:35:15 Copyright (c) 1997, 2020, Oracle. All rights reserved. Used parameter files: /u02/app/oracle/product/19.0.0.0/dbhome_5/network/admin/DB1/sqlnet.ora Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (SDU = 65536) (RECV_BUF_SIZE = 134217728) (SEND_BUF_SIZE = 134217728) (ADDRESS_LIST = (CONNECT_TIMEOUT = 3) (RETRY_COUNT = 3) (ADDRESS = (PROTOCOL = TCP)(HOST = 10.255.195.136)(PORT = 1521))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = DB1_phx3g7.datasubnetactiv.oscphevcn.oraclevcn.com) (INSTANCE_NAME = DB12) (UR = A))) OK (0 msec)