Oracle Data Guard 18c -...

142
Oracle Data Guard 18c Em Oracle Enterprise Edion RU 18.4.0.0 Em Oracle Enterprise Linux 7.6 Inclui CDB Architecture Ricardo Porlho Proni [email protected] Esta obra está licenciada sob a licença Creave Commons Atribuição-SemDerivados 3.0 Brasil. Para ver uma cópia desta licença, visite hp://creavecommons.org/licenses/by-nd/3.0/br/.

Transcript of Oracle Data Guard 18c -...

Page 1: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

Oracle Data Guard 18cEm Oracle Enterprise Edition RU 18.4.0.0

Em Oracle Enterprise Linux 7.6Inclui CDB Architecture

Ricardo Portilho [email protected]

Esta obra está licenciada sob a licençaCreative Commons Atribuição-SemDerivados 3.0 Brasil.

Para ver uma cópia desta licença, visite http://creativecommons.org/licenses/by-nd/3.0/br/.

Page 2: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

2

Comandos no Treinamento

Comando com o usuário root:# ls -lh

Comando com um usuário oracle:$ ls -lh

Adicionar texto a um arquivo:$ vi initORCL.ora...db_cache_size=500M...

Comando no SQL*Plus:SQL> SELECT STATUS FROM V$INSTANCE;

Comando no RMAN:RMAN> REPORT SCHEMA;

Algo deve ser alterado de acordo com sua máquina:Hostname: nerv01.localdomain

Quando algo dá errado propositalmente:O que aconteceu?

Todas as senhas (root, oracle, SYS, SYSTEM) são Nerv2018.

Page 3: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

3

rlwrap

# wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm# yum -y install epel-release-latest-7.noarch.rpm# yum -y install rlwrap

$ rlwrap sqlplus / AS SYSDBA$ rlwrap rman TARGET /$ rlwrap lsnrctl$ rlwrap dgmgrl SYS/Nerv2017@ORCL

Page 4: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

4

glogin.sql

$ cat $ORACLE_HOME/sqlplus/admin/glogin.sql…SET PAGESIZE 1000SET LINESIZE 220SET TIMING ONSET TIME ONSET SQLPROMPT '&_user@&_connect_identifier> 'DEFINE _EDITOR=vi…

09:08:44 SYS@ORCL> SELECT 1 FROM DUAL;

1---------- 1

Elapsed: 00:00:00.0009:09:00 SYS@ORCL>

Page 5: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

5

Características da Alta Disponibilidade• Confiança• Recuperabilidade• Detecção de erros em tempo hábil• Continuidade operacional

Análise de Alta Disponibilidade• Análise de impacto no negócio• Custo de tempo fora de operação• Objetivo de tempo de recuperação (RTO)• Objetivo de ponto de recuperação (RPO)• Meta de gerenciamento• Custo total de propriedade (TCO)• Retorno sobre o investimento (ROI)

Sistemas e Alta Disponibilidade• Camada 1 (Faturamento, Vendas)• Camada 2 (Compras, Estoque)• Camada 3 (BI, Desenvolvimento)

Custos e Alta Disponibilidade• Tempo máximo de parada tolerado.• Frequência máxima de paradas tolerada.• Custos facilmente mensuráveis (vendas, funcionários ociosos, multas contratuais)• Custos dificilmente mensuráveis (processos judiciais)• Custos não mensusáveis (publicidade negativa, clientes irritados)

Alta Disponibilidade

Page 6: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

6

Implantação de Alta Disponibilidade

Page 7: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

7

• Fast-Start Fault Recovery• Oracle Restart• Oracle Real Application Clusters and Oracle Clusterware• Oracle RAC One Node• Oracle Data Guard• Oracle GoldenGate and Oracle Streams• Oracle Flashback Technology• Oracle Automatic Storage Management• Fast Recovery Area• Recovery Manager• Data Recovery Advisor• Oracle Secure Backup• Oracle Security Features• LogMiner• Oracle Exadata Storage Server Software (Exadata Cell)• Oracle Exadata Database Machine• Oracle Database File System (DBFS)• Client Failover• Automatic Block Repair• Corruption Prevention, Detection, and Repair

Soluções Oracle para Alta Disponibilidade

Page 8: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

8

• Operating system and hardware upgrades -> Oracle RAC• Oracle Database patches -> Oracle RAC• Oracle Grid Infrastructure upgrades and patches -> Oracle RAC• Storage Migration -> Oracle ASM• Migrating to Exadata Storage -> Oracle MAA best practices• Upgrading Exadata Storage -> Exadata Patch Manager• Migrating a single-instance database to Oracle RAC -> Oracle Grid Infrastructure• Migrating to Oracle ASM -> Oracle Data Guard• Migrating a single-instance database to Oracle RAC -> Oracle Data Guard• Patch set and database upgrades -> Oracle Data Guard using SQL Apply• Oracle interim patches, Oracle clusterware upgrades and patches, Oracle ASM upgrades, Operating

System and Hardware Upgrades -> Oracle Data Guard Standby-First Patch Apply• Migration across Windows and Linux -> Oracle Data Guard• Platform migration across the same endian format platforms -> Transportable database• Platform migration across different endian format platforms -> Transportable tablespace• Patch set and database upgrades, platform migration, rolling upgrades, and when different character

sets are required -> Oracle GoldenGate and Oracle Streams• Application upgrades -> Online Application Maintenance and Upgrades

Indisponibilidades Planejadas

Page 9: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

9

• Site Failures -> Oracle Data Guard• Site Failures -> Oracle GoldenGate and Oracle Streams• Site Failures -> Recovery Manager• Computer Failures -> Oracle Real Application Clusters and Oracle Clusterware• Computer Failures -> Oracle RAC One Node• Computer Failures -> Fast-Start Fault Recovery• Computer Failures -> Oracle Data Guard• Computer Failures -> Oracle GoldenGate and Oracle Streams• Storage Failures -> Oracle Automatic Storage Management• Storage Failures -> Oracle Data Guard• Storage Failures -> RMAN with Fast Recovery Area and Oracle Secure Backup• Storage Failures -> Oracle GoldenGate and Oracle Streams• Data Corruption -> Oracle Exadata Storage Server Software (Exadata Cell) and Oracle ASM• Data Corruption -> Corruption Prevention, Detection, and Repair• Data Corruption -> Data Recovery Advisor and RMAN with Fast Recovery Area• Data Corruption -> Oracle Data Guard• Data Corruption -> Oracle GoldenGate and Oracle Streams• Human Errors -> Oracle Security Features• Human Errors -> Oracle Flashback Technology• Human Errors -> LogMiner• Lost writes -> Oracle Data Guard, RMAN, DB_LOST_WRITE_PROTECT• Lost writes -> Oracle Data Guard Oracle Exadata Storage Server Software (Exadata Cell)• Hangs or slow down - Oracle Database and Oracle Enterprise Manager

Indisponibilidades não Planejadas

Page 10: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

10

High Availability Overviewhttp://docs.oracle.com/database/122/HAOVW/toc.htm

High Availability Best Practiceshttps://docs.oracle.com/database/121/HABPT/toc.htm

Data Guard Concepts and Administrationhttp://docs.oracle.com/en/database/oracle/oracle-database/18/sbydb/index.html

Data Guard Brokerhttp://docs.oracle.com/en/database/oracle/oracle-database/18/dgbkr/index.html

Global Data Services Concepts and Administration Guidehttp://docs.oracle.com/en/database/oracle/oracle-database/18/gsmug/index.html

Oracle Shardinghttp://docs.oracle.com/en/database/oracle/oracle-database/18/shard/index.html

Documentação

Page 11: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

11

Oracle Data Guard: Evolução

Page 12: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

12

✔ Data Guard Broker Support for RAC✔ Automatic LogMiner Configuration✔ Log Miner Support for Index-Organized Tables✔ LogMiner Support for More Types: LONG, Multibyte CLOB and NCLOB✔ Fine-Grained Supplemental Logging✔ Secured Redo Transmission✔ Uniquely Named Databases with DB_UNIQUE_NAME✔ Simplified Zero Data Loss for Data Guard SQL Apply✔ Zero Downtime Instantiation for SQL Apply✔ Real Time Apply✔ Automating Recovery Through Open Resetlogs in Standby Databases✔ Backup and Restore of Standby Control File

New Features Data Guard 10.1

Page 13: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

13

✔ Fast-Start Failover✔ Automatic Conversion of the Primary Database to a Standby Database Upon Failover✔ Optimized Asynchronous Redo Transmission✔ Faster Redo Apply Failover✔ Faster SQL Apply Failover✔ Additional Data Type Support in LogMiner and SQL Apply✔ Automatic Deletion of Applied Archive Logs✔ Improved Manageability for Redo Transport, Log Apply, and Broker✔ Easy Conversion of a Physical Standby Database to a Reporting Database✔ Flashback Across Data Guard Switchovers✔ Fine-Grained, Automated Tracking of SQL Apply Runtime Performance✔ Optimized Creation of Logical Standby Database

New Features Data Guard 10.2

Page 14: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

14

✔ Fast-Start Failover for Maximum Performance Mode✔ Compression of Redo Traffic (Only for Gap Resolution)✔ Real-Time Query Capability of Physical Standby Database✔ Fast Role Transitions in a Data Guard Configuration✔ User Configurable Conditions to Initiate Fast-Start Failover✔ Dynamic Setting of Oracle Data Guard SQL Apply Parameters✔ Enhanced Data Guard Broker Based Management Framework✔ Enhanced Data Guard Management Interface (Using SQL*Plus)✔ Histogram for Redo Transport Response Time✔ Snapshot Standby✔ Strong Authentication for Data Guard Redo Transport✔ Enhanced DDL Handling in Oracle Data Guard SQL Apply✔ Enhanced Oracle RAC Switchover Support for Logical Standby Databases✔ Oracle Scheduler Support in Data Guard SQL Apply✔ Fine-Grained Auditing (FGA) Support in Data Guard SQL Apply✔ Support Transparent Data Encryption (TDE) with Data Guard SQL Apply✔ Support XMLType Data Type (Only CLOB) in Data Guard SQL Apply✔ Virtual Private Database (VPD) Support in Data Guard SQL Apply✔ SMP Scalable Redo Apply✔ Archive Log Management Improvements

New Features Data Guard 11.1

Page 15: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

15

✔ Automatic Block Repair✔ Compressed Table Support in Logical Standby Databases and Oracle LogMiner✔ Configurable Real-Time Query Apply Lag Limit✔ Integrated Support for Application Failover in a Data Guard Configuration✔ Support Up to 30 Standby Databases✔ Universal Connection Pool (UCP) Integration with Oracle Data Guard✔ Enable Sampling for Active Data Guard✔ SQL Apply Support for Object Relational Model✔ SQL Apply Support for Binary XML✔ SPA Support for Active Data Guard Environment

New Features Data Guard 11.2

Page 16: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

16

✔ Global Data Services (GDS)✔ Data Guard Support for Separation of Duty (SoD)✔ Advanced Data Guard Broker Manageability✔ Oracle Data Guard Broker Support for Cascaded Standby Databases✔ Fast Sync✔ Single Command Role Transitions✔ Real-Time Apply is Default Setting for Data Guard✔ Resumable Switchover Operations✔ Active Data Guard Enhanced Security✔ Active Data Guard Support for DML on Global Temporary Tables✔ Active Data Guard Support for Sequences✔ Active Data Guard Real-Time Cascade✔ Active Data Guard Far Sync✔ SQL Apply Extended Data Type Support (EDS)✔ SQL Apply Support for Objects, Collections, and XMLType✔ SQL Apply Support for XMLType✔ SQL Apply Support for SecureFiles LOBs✔ Data Guard Rolling Upgrade Support for Advanced Data Types✔ Data Guard Rolling Upgrade Support for XDB Repository✔ Disaster Protection During Database Rolling Upgrade✔ Oracle Advanced Queuing (AQ) Support for Data Guard Database Rolling Upgrade✔ Oracle Data Guard Broker Support for Database Rolling Upgrades✔ Oracle Scheduler Support for Data Guard Database Rolling Upgrade✔ Rolling Upgrade Using Active Data Guard

New Features Data Guard 12.1

Page 17: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

17

✔ Distributed Operations on CLOB, BLOB and XMLType✔ OCI Support for Distributed LOBs✔ Minimizing Impact on Primary Database When Using Multiple SYNC Standby Databases✔ Oracle Data Guard Database Compare✔ Subset Standby✔ Oracle Data Guard Broker Support for Multiple Automatic Failover Targets✔ Oracle Data Guard Broker Support for Multiple Observers✔ Simplifying Observer Management for Multiple Fast-Start Failover Configurations✔ Oracle Data Guard Broker Support for Transport Destinations of Different Endianess Than the Primary✔ Oracle Data Guard Broker Support for Oracle Data Guard Multiple Instance Apply✔ Oracle Data Guard Broker Support for Enhanced Alternate Destination✔ Fast-Start Failover in Maximum Protection Mode✔ Block Comparison Tool Support in Oracle Data Guard Broker DGMGRL Interface✔ Oracle Data Guard Broker Support for Executing DGMGRL Command Scripts✔ Broker ConfigurationWideServiceName Configuration Property✔ Enhancing Support for Alternate Destinations✔ Automatically Synchronize Password Files in Oracle Data Guard Configurations✔ Preserving Application Connections to An Active Data Guard Standby During Role Changes✔ In-Memory in Oracle Active Data Guard (ADG) environments.✔ Oracle Active Data Guard is integrated with Oracle Sharding.✔ FARSYNC option on the RMAN DUPLICATE.✔ Diagnostic Pack in Oracle Active Data Guard.✔ Rolling upgrades are supported on multitenant container databases (CDBs).✔ Password file changes done on the primary database are now automatically propagated to standby databases.✔ Keep any sessions connected to the standby during the switchover/failover.✔ Encrypt and decrypt both new and existing tablespaces, and existing databases.

New Features Data Guard 12.2

Page 18: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

18

✔ Oracle Data Guard Multi-Instance Redo Apply Supports Use of Block Change Tracking Files✔ Automatic Correction of Non-logged Blocks at a Data Guard Standby Database✔ Copying a PDB in an Oracle Data Guard Environment✔ Refreshable PDB Switchover✔ The database buffer cache state is now maintained on an Oracle Active Data Guard standby during a role change.✔ Global temporary tables can now be dynamically created on an Oracle Active Data Guard standby database.✔ A new initialization parameter, ADG_ACCOUNT_INFO_TRACKING, extends control of user account security against login attacks across a production database and all Oracle Active Data Guard standby databases.✔ A new view V$DATAGUARD_PROCESS (which replaces V$MANAGED_STANDBY) provides information that can be queried to verify that redo is being transmitted from the primary database and applied to the standby database.✔ Metadata for private temporary tables (also known as local temporary tables) can be stored in memory.✔ Database nologging has been extended with two new modes: Standby Nologging for Load Performance and Standby Nologging for Data Availability.✔ A standby database can now be refreshed over the network using one RMAN command, RECOVER STANDBY DATABASE.✔ Enhancements have been made to Data Guard broker support for upgrades performed using the DBMS_ROLLING PL/SQL package.✔ Block Change Tracking is now supported with multi-instance redo apply.

New Features Data Guard 18c

Page 19: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

19

✔ VALIDATE DATABASE SPFILE performs a comparison of server parameter file (SPFILE) entries between the primary database and a specified standby database.✔ VALIDATE NETWORK CONFIGURATION performs network connectivity checks between members of a broker configuration.✔ VALIDATE STATIC CONNECT IDENTIFIER validates the static connect identifier of a database.✔ SET ECHO controls whether or not to echo commands that are issued either at the command-line prompt or from a DGMGRL script.✔ SHOW ALL (DGMGRL CLI properties) shows the values of DGMGRL CLI properties.✔ The AlternateLocation configurable property is renamed to StandbyAlternateLocation and has new valid values.✔ The StandbyArchiveLocation configurable property has new valid values.✔ The new OnlineArchiveLocation configurable property specifies the online redo log archive location for primary, logical, and snapshot standby databases.✔ The new OnlineAlternateLocation configurable property specifies an alternate online redo log archive location for primary, logical, and snapshot standby databases when the location specified by the OnlineArchiveLocation configurable property fails.✔ The V$DATAGUARD_PROCESS view, introduced in Oracle Database 12c Release 2 (12.2.0.1), now shows broker processes.

New Features Data Guard 18c

Page 20: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

20

Oracle Data Guard - Conceitos

Page 21: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

21

Configurações Primary database Physical standby database Logical standby database Snapshot Standby Database

Serviços Redo Transport Services Apply Services Role Transitions

Role Transitions Switchover Switchback Failover Reinstate Convert

Interfaces Enterprise Manager / Grid Control / Cloud Control DGMGRL SQL*Plus Initialization Parameters

Tecnologias Complementares Oracle RAC Flashback Database RMAN Oracle Global Data Services (GDS)

Terminologia

Page 22: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

22

Vantagens✔ Proteção contra desastres.✔ Completa proteção de dados.✔ Uso eficiente de recursos.✔ Flexibilidade entre disponibilidade e desempenho.✔ Flexibilidade entre configurações.✔ Detecção e resolução automática de erros.✔ Gerenciamento simples e centralizado.✔ Integração completa com Oracle Database.✔ Automatic role transitions.

Desvantagens✔ Maior complexidade do ambiente.✔ Maior custo de licenças.✔ Maior custo de equipamentos.✔ Maior custo de conhecimento.

Por que Data Guard?

Page 23: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

23

Physical x Logical

Page 24: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

24

Vantagens Proteção contra desastres. Proteção de dados. Redução da carga na Produção (RMAN, Read only SQL). Baixo impacto na Produção.

Desvantagens Banco de dados disponível apenas para leitura. O Standby deve ser uma cópia exata da Produção.

Por que Data Guard Physical Standby?

Page 25: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

25

● COMPATIBLE (Todos)● CONTROL_FILE_RECORD_KEEP_TIME (Todos)● CONTROL_FILES (Todos)● DB_FILE_NAME_CONVERT (Physical Standby, Snapshot Standby)● DB_UNIQUE_NAME (Todos)● FAL_SERVER (Physical Standby, Snapshot Standby)● INSTANCE_NAME (Todos)● LOG_ARCHIVE_CONFIG (Todos)● LOG_ARCHIVE_DEST_n (Todos)● LOG_ARCHIVE_DEST_STATE_n (Todos) ENABLE, DEFER ou ALTERNATE.● LOG_ARCHIVE_FORMAT (Todos)● LOG_ARCHIVE_MAX_PROCESSES (Todos)● LOG_ARCHIVE_MIN_SUCCEED_DEST (Todos)● LOG_ARCHIVE_TRACE (Todos)● LOG_FILE_NAME_CONVERT (Physical Standby, Logical tandby, Snapshot Standby)● REMOTE_LOGIN_PASSWORDFILE (Todos)● SHARED_POOL_SIZE (Todos)● STANDBY_FILE_MANAGEMENT (Primary, Physical Standby, Snapshot Standby)

OBSOLETE● FAL_CLIENT (Physical Standby, Snapshot Standby) Obsolete● STANDBY_ARCHIVE_DEST (Physical Standby, Logical Standby, Snapshot Standby) Obsolete● LOG_ARCHIVE_LOCAL_FIRST (Primary, Snapshot Standby) Obsolete

Parâmetros

Page 26: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

26

• DB_UNIQUE_NAME• LOCATION = path_name OU SERVICE=service_name• TEMPLATE = template• GROUP = group• VALID_FOR = (redo_log_type,database_role)

• PRIORITY = priority• MANDATORY• ALTERNATE = destination

• SYNC | ASYNC• AFFIRM | NOAFFIRM

• DELAY = minutes

• MAX_CONNECTIONS = count• NET_TIMEOUT = seconds• MAX_FAILURE = count• REOPEN = seconds

• COMPRESSION = {ENABLE|DISABLE|ZLIB|LZO}• ENCRYPTION = ENABLED|DISABLED

• NOREGISTER

LOG_ARCHIVE_DEST_n

Page 27: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

27

● Modo ARCHIVELOG.● FORCE LOGGING.● Resolução de nomes bilateral.● Resolução de SQL*Net bilateral.● Autenticação via PASSWORD FILE.● Criação, cópia e Restore de STANDBY CONTROLFILE (ou ACTIVE DUPLICATION).● Backup e Restore (ou ACTIVE DUPLICATION).● No Physical Standby, MOUNT em modo STANDBY DATABASE.● Adequação de parâmetros no PRIMARY.● Adequação de parâmetros no STANDBY.● Criação de STANDBY REDO LOGs.● No Physical Standby, execução de RECOVER MANAGED STANDBY.

Checklist para Physical Standby

Page 28: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

28

Na máquina nerv01, crie um banco de dados com o nome “TERR”, com um PDB com o nome TERRP.

Na máquina nerv01, crie um Listener, e inicie-o.Na máquina nerv02, crie um Listener, e inicie-o.

Na máquina nerv01, crie uma entrada no /etc/hosts para a máquina nerv02.Na máquina nerv02, crie uma entrada no /etc/hosts para a máquina nerv01.

Na máquina nerv01, coloque o banco de dados em modo ARCHIVELOG e o FORCE LOGGING.$ export ORACLE_SID=TERR$ rlwrap sqlplus / as sysdbaSQL> SHUTDOWN IMMEDIATE;SQL> STARTUP MOUNT;SQL> ALTER DATABASE ARCHIVELOG;SQL> ALTER DATABASE OPEN;SQL> ALTER DATABASE FORCE LOGGING;

Copie o PASSWORD FILE da máquina nerv01 para a máquina nerv02, em $ORACLE_HOME/dbs.$ scp $ORACLE_HOME/dbs/orapwTERR nerv02:$ORACLE_HOME/dbs/

Lab 1.1: Data Guard Physical Standby

Page 29: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

29

Copie o SPFILE da máquina nerv01 para a máquina nerv02, em $ORACLE_HOME/dbs.$ scp $ORACLE_HOME/dbs/spfileTERR.ora nerv02:$ORACLE_HOME/dbs/

Na máquina nerv01, crie uma entrada no tnsnames.ora para as instâncias das máquinas nerv01 e nerv02.TERR=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=nerv01)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=TERR)(SERVER=DEDICATED)))

TERR02=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=nerv02)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=TERR02)(SERVER=DEDICATED)))

Na máquina nerv02, crie uma entrada no tnsnames.ora para as instâncias das máquinas nerv01 e nerv02.TERR=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=nerv01)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=TERR)(SERVER=DEDICATED)))

TERR02=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=nerv02)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=TERR02)(SERVER=DEDICATED)))

LISTENER_TERR=(ADDRESS=(PROTOCOL=TCP)(HOST=nerv02.localdomain)(PORT = 1521))

Teste a resolução de nomes (ping) e o Oracle Net (tnsping) entre as duas máquinas.Por que não funciona?

Lab 1.2: Data Guard Physical Standby

Page 30: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

30

Nas máquinas nerv01 e nerv02, crie um diretório para armazenar ARCHIVED REDO LOGs.

Na máquina nerv02, inicie a instância, deixando-a no estado NOMOUNT.$ export ORACLE_SID=TERRSQL> STARTUP NOMOUNTPor que não funcionou?

Na máquina nerv02, crie todos os diretórios utilizados por parâmetros no SPFILE.$ strings $ORACLE_HOME/dbs/spfileTERR.ora$ mkdir -p /u01/app/oracle/admin/TERR/adump...

Na máquina nerv02, verifique os SERVICES que o LISTENER provê.

Na máquina nerv02, altere o seguinte parâmetro, e a reinicie.SQL> ALTER SYSTEM SET DB_UNIQUE_NAME=TERR02 SCOPE=SPFILE;SQL> SHUTDOWN IMMEDIATE;SQL> STARTUP NOMOUNT

Na máquina nerv02, veja qual o SERVICE que o LISTENER provê.

Lab 1.3: Data Guard Physical Standby

Page 31: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

31

Na máquina nerv01, conecte-se com RMAN nas duas instâncias e execute a duplicação.$ rlwrap rman TARGET SYS/Nerv2018 AUXILIARY=SYS/Nerv2018@TERR02RMAN> DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE DORECOVER NOFILENAMECHECK;Por que não funciona?

Nas máquinas nerv01 e nerv02, acompanhe o Alert Log.$ tail -f /u01/app/oracle/diag/rdbms/terr/TERR/trace/alert_TERR.log$ tail -f /u01/app/oracle/diag/rdbms/terr02/TERR/trace/alert_TERR.log

Na máquina nerv01, altere os parâmetros abaixo.SQL> ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(TERR,TERR02)';SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_1= 'LOCATION=/u01/archives/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=TERR';SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=TERR02 ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=TERR02';

Na máquina nerv02, altere os seguintes parâmetros.SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_1= 'LOCATION=/u01/archives/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=TERR02';SQL> ALTER SYSTEM SET FAL_SERVER=TERR;SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;

Lab 1.4: Data Guard Physical Standby

Page 32: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

32

Na máquina nerv01, gere alguns ARCHIVED REDO LOGs, e acompanhe o Alert Log.SQL> ALTER SYSTEM SWITCH LOGFILE;

Na máquina nerv02, inicie o RECOVER.SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

Nas máquinas nerv01 e nerv02, acompanhe o Alert Log.

Na máquina nerv01, gere alguns ARCHIVED REDO LOGs.

Lab 1.5: Data Guard Physical Standby

Page 33: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

33

Modos de Proteção

Page 34: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

34

Modos de Proteção

Page 35: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

35

Nas máquinas nerv01 e nerv02, acompanhe o Alert Log durante este Lab.

Na máquina nerv02, adicione STANDBY REDO LOGs.SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

SQL> ALTER DATABASE ADD STANDBY LOGFILE SIZE 209715200;SQL> ALTER DATABASE ADD STANDBY LOGFILE SIZE 209715200;SQL> ALTER DATABASE ADD STANDBY LOGFILE SIZE 209715200;SQL> ALTER DATABASE ADD STANDBY LOGFILE SIZE 209715200;SQL> SELECT * FROM V$LOG;SQL> SELECT * FROM V$STANDBY_LOG;SQL> SELECT * FROM V$LOGFILE;

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

Na máquina nerv01, gere alguns ARCHIVED REDO LOGs, e acompanhe os Alert Logs.

Lab 2.1: Modos de Proteção

Page 36: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

36

Na máquina nerv01, verifique qual o PROTECTION MODE atual.SQL> SELECT PROTECTION_MODE FROM V$DATABASE;

Na máquina nerv01, crie o SCHEMA para o teste de carga.SQL> ALTER SESSION SET CONTAINER = TERRP;SQL> SELECT PROTECTION_MODE FROM V$DATABASE;SQL> CREATE TABLESPACE SOE DATAFILE '/u01/app/oracle/oradata/TERR/TERRP/soe01.dbf' SIZE 10G AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED;

$ wget http://www.dominicgiles.com/swingbench/swingbench261090.zip$ unzip -q swingbench261090.zip$ cd /home/oracle/swingbench/bin$ ./oewizard

Lab 2.2: Modos de Proteção

Page 37: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

37

Lab 2.3: Modos de Proteção

Page 38: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

38

Lab 2.4: Modos de Proteção

Page 39: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

39

Lab 2.5: Modos de Proteção

Page 40: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

40

Lab 2.6: Modos de Proteção

Page 41: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

41

Lab 2.7: Modos de Proteção

Page 42: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

42

Lab 2.8: Modos de Proteção

Page 43: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

43

Lab 2.9: Modos de Proteção

Page 44: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

44

Lab 2.10: Modos de Proteção

Page 45: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

45

Lab 2.11: Modos de Proteção

Page 46: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

46

Lab 2.12: Modos de Proteção

Page 47: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

47

Na máquina nerv01, execute o teste de carga.$ cd /home/oracle/swingbench/bin$ ./charbench -uc 10 -cs //localhost/TERRP -rt 00:05 -c ../configs/SOE_Server_Side_V2.xml -r /home/oracle/MaximumPerformance.xml$ grep Statements /home/oracle/MaximumPerformance.xml

Lab 2.13: Modos de Proteção

Page 48: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

48

Na máquina nerv01, altere o PROTECTION MODE.SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=TERR02 SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=TERR02';SQL> ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE AVAILABILITY;

Na máquina nerv01, verifique qual o PROTECTION MODE atual.SQL> SELECT PROTECTION_MODE FROM V$DATABASE;

Na máquina nerv01, refaça o teste de carga, e compare.$ cd /home/oracle/swingbench/bin$ ./charbench -uc 10 -cs //localhost/TERRP -rt 00:05 -c ../configs/SOE_Server_Side_V2.xml -r /home/oracle/MaxAvailability.xml$ grep Statements /home/oracle/MaxAvailability.xml

Lab 2.14: Modos de Proteção

Page 49: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

49

Na máquina nerv01, altere o PROTECTION MODE.SQL> ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PROTECTION;

Na máquina nerv01, verifique qual o PROTECTION MODE atual.SQL> SELECT PROTECTION_MODE FROM V$DATABASE;

Na máquina nerv01, refaça o teste de carga, e compare.$ cd /home/oracle/swingbench/bin$ ./charbench -uc 10 -cs //localhost/TERRP -rt 00:05 -c ../configs/SOE_Server_Side_V2.xml -r /home/oracle/MaxProtection.xml$ grep Statements /home/oracle/MaxProtection.xml

Lab 2.15: Modos de Proteção

Page 50: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

50

Na máquina nerv02, execute SHUTDOWN IMMEDIATE.Por que não funciona?

Na máquina nerv02, execute SHUTDOWN ABORT.

Na máquina nerv01, execute uma operação de teste.SQL> CREATE TABLE T AS SELECT * FROM ALL_OBJECTS;Por que não funciona?

Na máquina nerv01, abra outra sessão e altere o PROTECTION MODE.SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=TERR02 ASYNC NOAFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=TERR02';Por que não funciona?

Altere o modo de proteção para MAXIMIZE PERFORMANCE.SQL> ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE;

Depois, reinicie a instância da máquina nerv02 e o RECOVER.SQL> STARTUP NOMOUNT;SQL> ALTER DATABASE MOUNT STANDBY DATABASE;SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

Na máquina nerv01, gere alguns ARCHIVED REDO LOGs, e acompanhe os Alert Logs.

Lab 2.16: Modos de Proteção

Page 51: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

51

Na máquina nerv01, altere os seguintes parâmetros.SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;SQL> ALTER SYSTEM SET FAL_SERVER=TERR02;

Na máquina nerv02, altere os seguintes parâmetros.SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=TERR ASYNC NOAFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=TERR';

Na máquina nerv01, verifique a possibilidade de SWITCHOVER e o execute.SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN;SQL> STARTUP NOMOUNT;SQL> ALTER DATABASE MOUNT STANDBY DATABASE;

Na máquina nerv01, verifique a possibilidade de SWITCHOVER.SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

Na máquina nerv02, verifique a possibilidade de SWITCHOVER e o execute.SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;SQL> ALTER DATABASE OPEN;

Lab 3.1: Switchover

Page 52: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

52

Na máquina nerv01, inicie o RECOVER como um STANDBY.SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

Na máquina nerv02, gere alguns ARCHIVED REDO LOGs e acompanhe o Alert Log.

Na máquina nerv01, adicione STANDBY REDO LOGs.SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

SQL> ALTER DATABASE ADD STANDBY LOGFILE SIZE 209715200;SQL> ALTER DATABASE ADD STANDBY LOGFILE SIZE 209715200;SQL> ALTER DATABASE ADD STANDBY LOGFILE SIZE 209715200;SQL> ALTER DATABASE ADD STANDBY LOGFILE SIZE 209715200;

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

Na máquina nerv02, gere alguns ARCHIVED REDO LOGs e acompanhe o Alert Log.

Lab 3.2: Switchover

Page 53: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

53

Na máquina nerv02, verifique a possibilidade de SWITCHOVER e o execute.SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN;SQL> STARTUP NOMOUNT;SQL> ALTER DATABASE MOUNT STANDBY DATABASE;

Na máquina nerv02, verifique a possibilidade de SWITCHOVER.SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

Na máquina nerv01, verifique a possibilidade de SWITCHOVER e o execute.SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;SQL> ALTER DATABASE OPEN;

Na máquina nerv02, inicie o RECOVER como um STANDBY.SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

Na máquina nerv01, gere alguns ARCHIVED REDO LOGs e acompanhe o Alert Log.

Lab 3.3: Switchback

Page 54: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

54

Na máquina nerv01, execute o SWITCHOVER com a sintaxe 12c.SQL> ALTER DATABASE SWITCHOVER TO TERR02 VERIFY;SQL> ALTER DATABASE SWITCHOVER TO TERR02;SQL> STARTUP NOMOUNT;SQL> ALTER DATABASE MOUNT STANDBY DATABASE;SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

Na máquina nerv02, finalize o SWITCHOVER.SQL> ALTER DATABASE OPEN;

Na máquina nerv02, gere alguns ARCHIVED REDO LOGs e acompanhe o Alert Log.

Na máquina nerv02, execute o SWITCHBACK com a sintaxe 12c.SQL> ALTER DATABASE SWITCHOVER TO TERR VERIFY;SQL> ALTER DATABASE SWITCHOVER TO TERR;SQL> STARTUP NOMOUNT;SQL> ALTER DATABASE MOUNT STANDBY DATABASE;SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

Na máquina nerv01, finalize o SWITHBACK.SQL> ALTER DATABASE OPEN;

Na máquina nerv01, gere alguns ARCHIVED REDO LOGs e acompanhe o Alert Log.

Lab 3.4: Switchback

Page 55: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

55

Na máquina nerv01, habilite o FLASHBACK (necessário para o REINSTATE).SQL> ALTER DATABASE FLASHBACK ON;

Na máquina nerv01, desligue a instância e o LISTENER.SQL> SHUTDOWN ABORT;

Na máquina nerv02, cancele o RECOVER.SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH;

Lab 3.5: Failover

Page 56: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

56

Na máquina nerv02, verifique a possibilidade de FAILOVER.SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

Na máquina nerv02, se o FAILOVER for possível, execute:SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;SQL> ALTER DATABASE OPEN;

Na máquina nerv02, se o FAILOVER não for possível, execute:SQL> ALTER DATABASE ACTIVATE PHYSICAL STANDBY DATABASE;SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;SQL> ALTER DATABASE OPEN;

Lab 3.6: Failover

Page 57: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

57

Na máquina nerv01, inicie a instância em MOUNT.SQL> STARTUP MOUNT;

Na máquina nerv01, volte a um SCN mais antigo que o FAILOVER.SQL> FLASHBACK DATABASE TO TIMESTAMP TO_TIMESTAMP( '2016-10-03 10:00:00','YYYY-MM-DD HH24:MI:SS');

OU

$ grep SCN /u01/app/oracle/diag/rdbms/terr/TERR/trace/alert_TERR.log SQL> FLASHBACK DATABASE TO SCN 912044;

Na máquina nerv01, converta o banco de dados para PHYSICAL STANDBY.SQL> ALTER DATABASE CONVERT TO PHYSICAL STANDBY;SQL> SHUTDOWN IMMEDIATE;SQL> STARTUP NOMOUNT;SQL> ALTER DATABASE MOUNT STANDBY DATABASE;SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

Na máquina nerv02, gere alguns ARCHIVED REDO LOGs e acompanhe o Alert Log.

Depois de concluir o Reinstate, execute o Switchback.

Lab 3.7: Reinstate

Page 58: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

58

Logical Standby

Page 59: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

59

Vantagens✔ Proteção contra tipos de falhas adicionais.✔ Uso eficiente de recursos.✔ Distribuição de carga.✔ Otimização para relatórios e requerimentos de suporte a decisões.✔ Minimizar tempo de parada durante upgrades.

Desvantagens✔ Diversas limitações de tipos de dados.✔ Diversas limitações de comandos SQL.✔ Aplicação do comando SQL, e não do REDO LOG.

Por que?

Page 60: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

60

• BFILE• ROWID, UROWID• Collections (including VARRAYs and nested tables)• Objects with nested tables and REFs• Spatial type MDSYS.SDO_GEORASTER• Spatial type MDSYS.SDO_TOPO_GEOMETRY

Tipos de dados não suportados (18c)

Page 61: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

61

• ALTER DATABASE• ALTER MATERIALIZED VIEW• ALTER MATERIALIZED VIEW LOG• ALTER SESSION• ALTER SYSTEM• CREATE CONTROL FILE• CREATE DATABASE• CREATE DATABASE LINK• CREATE PFILE FROM SPFILE• CREATE MATERIALIZED VIEW• CREATE MATERIALIZED VIEW LOG• CREATE SCHEMA AUTHORIZATION• CREATE SPFILE FROM PFILE• DROP DATABASE LINK• DROP MATERIALIZED VIEW• DROP MATERIALIZED VIEW LOG• EXPLAIN• LOCK TABLE• SET CONSTRAINTS• SET ROLE• SET TRANSACTION

Comandos SQL ignorados

Page 62: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

62

DBA_LOGSTDBY_EVENTS DBA_LOGSTDBY_HISTORY DBA_LOGSTDBY_LOG DBA_LOGSTDBY_NOT_UNIQUE DBA_LOGSTDBY_PARAMETERS DBA_LOGSTDBY_SKIP DBA_LOGSTDBY_SKIP_TRANSACTION DBA_LOGSTDBY_UNSUPPORTED V$LOGSTDBY_PROCESS V$LOGSTDBY_PROGRESS V$LOGSTDBY_STATE V$LOGSTDBY_STATS V$LOGSTDBY_TRANSACTION

Views

Page 63: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

63

Na máquina nerv03, crie um Listener, e inicie-o.

Na máquina nerv01, crie uma entrada no /etc/hosts para a máquina nerv03.Na máquina nerv02, crie uma entrada no /etc/hosts para a máquina nerv03.Na máquina nerv03, crie uma entrada no /etc/hosts para a máquina nerv01.Na máquina nerv03, crie uma entrada no /etc/hosts para a máquina nerv02.

Na máquina nerv01, crie uma entrada no tnsnames.ora (TERR03) para a instância da máquina nerv03.Na máquina nerv02, crie uma entrada no tnsnames.ora (TERR03) para a instância da máquina nerv03.Na máquina nerv03, crie uma entrada no tnsnames.ora para a instância da máquina nerv01.Na máquina nerv03, crie uma entrada no tnsnames.ora para a instância da máquina nerv02.Na máquina nerv03, crie uma entrada no tnsnames.ora para a instância da máquina nerv03.

Teste a resolução de nomes (ping) e o Oracle Net (tnsping) entre as três máquinas.

Na máquina nerv03, crie um banco Standby via DBCA.$ export ORACLE_SID=TERR$ dbca -silent -createDuplicateDB -gdbName TERR -sid TERR -sysPassword Nerv2018 -primaryDBConnectionString nerv01:1521/TERR -createAsStandby -dbUniquename TERR03$ rlwrap sqlplus / AS SYSDBASQL> SELECT OPEN_MODE FROM V$DATABASE;

Lab 4.1: Logical Standby

Page 64: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

64

Na máquina nerv03, crie dois diretórios para armazenar ARCHIVED REDO LOGs.

Na máquina nerv03, reinicie a instância, deixando-a em estado NOMOUNT.SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=/u01/archives/ VALID_FOR=(ONLINE_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=TERR03';SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=TERR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=TERR';SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_3='LOCATION=/u01/archives_stb/ VALID_FOR=(STANDBY_LOGFILES,STANDBY_ROLE) DB_UNIQUE_NAME=TERR03';SQL> ALTER SYSTEM SET FAL_SERVER=TERR;

Na máquina nerv01, habilite o terceiro local de archives.SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_3='SERVICE=TERR03 ASYNC NOAFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=TERR03';Por que não funciona?

Lab 4.2: Logical Standby

Page 65: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

65

Na máquina nerv03, habilite o RECOVERSQL> SHUTDOWN IMMEDIATE;SQL> STARTUP NOMOUNT;SQL> ALTER DATABASE MOUNT STANDBY DATABASE;SQL> ALTER DATABASE ADD STANDBY LOGFILE SIZE 209715200;SQL> ALTER DATABASE ADD STANDBY LOGFILE SIZE 209715200;SQL> ALTER DATABASE ADD STANDBY LOGFILE SIZE 209715200;SQL> ALTER DATABASE ADD STANDBY LOGFILE SIZE 209715200;SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

Na máquina nerv01, gere alguns ARCHIVED REDO LOGs, e verifique se a nerv03 está sincronizada.

Lab 4.3: Logical Standby

Page 66: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

66

Após a máquina nerv03 estar sincronizada, cancele o RECOVER.SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

Na máquina nerv01, crie um dicionário dos dados dos REDO LOGs.SQL> EXECUTE DBMS_LOGSTDBY.BUILD;

Na máquina nerv03, faça a conversão para LOGICAL STANDBY.SQL> ALTER DATABASE RECOVER TO LOGICAL STANDBY BI;SQL> SHUTDOWN IMMEDIATE;SQL> STARTUP MOUNT;SQL> ALTER DATABASE OPEN RESETLOGS;SQL> ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;

Verifique a View V$LOGSTDBY_PROGRESS.

Lab 4.4: Logical Standby

Page 67: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

67

Na máquina nerv01, crie uma tabela de teste.$ rlwrap sqlplus / AS SYSDBASQL> CREATE TABLE T AS SELECT * FROM ALL_OBJECTS;SQL> SELECT COUNT(*) FROM T;

Na máquina nerv03, confira a tabela criada.SQL> SELECT COUNT(*) FROM T;Por que não funciona?

Na máquina nerv01, crie uma tabela de teste com o usuário SCOTT.$ rlwrap sqlplus / AS SYSDBASQL> ALTER SESSION SET CONTAINER = TERRP;SQL> CREATE USER SCOTT IDENTIFIED BY TIGER ACCOUNT UNLOCK;SQL> ALTER USER SCOTT QUOTA UNLIMITED ON USERS;SQL> GRANT CONNECT, RESOURCE TO SCOTT;$ rlwrap sqlplus SCOTT/TIGER@TERRPPor que não funciona?SQL> CREATE TABLE T AS SELECT * FROM ALL_OBJECTS;

Na máquina nerv03, confira a tabela criada.$ rlwrap sqlplus / AS SYSDBASQL> ALTER SESSION SET CONTAINER = TERRP;SQL> SELECT COUNT(*) FROM SCOTT.T;

Na máquina nerv03, crie um índice.SQL> CREATE INDEX IDX_D_OBJECT_ID ON SCOTT.T(OBJECT_ID);

Lab 4.5: Logical Standby

Page 68: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

68

Na máquina nerv03, crie um índice.$ rlwrap sqlplus / as sysdbaSQL> ALTER DATABASE STOP LOGICAL STANDBY APPLY;SQL> ALTER SESSION SET CONTAINER = TERRP;SQL> EXECUTE DBMS_LOGSTDBY.SKIP (STMT => 'DML', SCHEMA_NAME => 'SCOTT', OBJECT_NAME => 'T');SQL> EXECUTE DBMS_LOGSTDBY.UNSKIP (STMT => 'DML', SCHEMA_NAME => 'SCOTT', OBJECT_NAME => 'T');SQL> CONN / AS SYSDBASQL> ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;

Lab 4.5: Logical Standby

Page 69: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

69

Na máquina nerv02, cancele o RECOVER, e abra o banco de dados para leitura.SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;SQL> ALTER DATABASE OPEN;SQL> SELECT OPEN_MODE FROM V$DATABASE;

Na máquina nerv02, verifique se o PDB TERRP está acessível para leitura.$ rlwrap sqlplus / AS SYSDBASQL> SHOW PDBSSQL> ALTER PLUGGABLE DATABASE TERRP OPEN READ ONLY;SQL> SHOW PDBSSQL> ALTER SESSION SET CONTAINER = TERRP;SQL> SELECT COUNT(*) FROM SCOTT.T;

Na máquina nerv01, faça uma alteração na tabela de testes.SQL> CONN SCOTT/TIGER@TERRPSQL> INSERT INTO T SELECT * FROM T;SQL> SELECT COUNT(*) FROM T;

Na máquina nerv02, verifique que a alteração ainda não foi feita.$ rlwrap sqlplus / AS SYSDBASQL> ALTER SESSION SET CONTAINER = TERRP;SQL> SELECT COUNT(*) FROM SCOTT.T;Por que não funciona?

Lab 5.1: Active Data Guard

Page 70: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

70

Na máquina nerv02, inicie o RECOVER, com o banco de dados para leitura.SQL> CONN / AS SYSDBASQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;SQL> SELECT OPEN_MODE FROM V$DATABASE;

Na máquina nerv02, verifique que a alteração agora foi feita.$ rlwrap sqlplus / AS SYSDBASQL> ALTER SESSION SET CONTAINER = TERRP;SQL> SELECT COUNT(*) FROM SCOTT.T;Por que não funciona?

Lab 5.2: Active Data Guard

Page 71: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

71

Vantagem✔ Redução dos tempos de Refresh (Pré-Produção, Homologação, Desenvolvimento).✔ Garantia da integridade dos ambientes de homologação e testes.

Desvantagens✔ Maior espaço em disco necessário, para Archives e Fast Recovery Area.✔ Necessária estrutura de banco de dados igual ao da Produção✔ Perda de alterações após conversão para Physical Standby.✔ Maior tempo de RECOVER necessário, em caso de utilização para Disaster Recovery.

Por que?

Page 72: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

72

Na máquina nerv02, cancele o RECOVER, e abra o banco de dados para leitura.SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;SQL> SHUTDOWN IMMEDIATE;SQL> STARTUP NOMOUNT;SQL> ALTER DATABASE MOUNT STANDBY DATABASE;SQL> ALTER DATABASE CONVERT TO SNAPSHOT STANDBY;SQL> ALTER DATABASE OPEN;SQL> SELECT OPEN_MODE FROM V$DATABASE;

Na máquina nerv01, gere vários ARCHIVEs, e veja se são aplicados na máquina nerv02.

Na máquina nerv02, faça uma alteração na tabela de testes.$ rlwrap sqlplus / AS SYSDBASQL> ALTER SESSION SET CONTAINER = TERRP;SQL> SELECT COUNT(*) FROM SCOTT.T;SQL> TRUNCATE TABLE SCOTT.T;SQL> SELECT COUNT(*) FROM SCOTT.T;

Na máquina nerv02, reverta o SNAPSHOT STANDBY para PHYSICAL STANDBY.SQL> CONN / AS SYSDBASQL> SHUTDOWN IMMEDIATE;SQL> STARTUP MOUNT;SQL> ALTER DATABASE CONVERT TO PHYSICAL STANDBY;SQL> SHUTDOWN IMMEDIATE;SQL> STARTUP NOMOUNT;SQL> ALTER DATABASE MOUNT STANDBY DATABASE;SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

Lab 6.1: Snapshot Standby

Page 73: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

73

Na máquina nerv02, verifique que a alteração foi desfeita.$ rlwrap sqlplus / AS SYSDBASQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;SQL> ALTER DATABASE OPEN;SQL> ALTER PLUGGABLE DATABASE TERRP OPEN READ ONLY;SQL> ALTER SESSION SET CONTAINER = TERRP;SQL> SELECT COUNT(*) FROM SCOTT.T;

Na máquina nerv02, retorne a aplicação de ARCHIVEs.$ rlwrap sqlplus / AS SYSDBASQL> SHUTDOWN IMMEDIATE;SQL> STARTUP NOMOUNT;SQL> ALTER DATABASE MOUNT STANDBY DATABASE;SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

Lab 6.2: Snapshot Standby

Page 74: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

74

Na máquina nerv01, cancele o envio de REDO LOG para a máquina nerv03.

Na máquina nerv02, habilite o envio de REDO LOG para a máquina nerv03.

Na máquina nerv03, altere o FAL_SERVER para a máquina nerv02.

Na máquina nerv01, gere vários ARCHIVEs, e veja se são aplicados na máquina nerv03.Por que não funciona?

Na máquina nerv01, faça uma alteração na tabela de testes e veja se é propagada para a máquina nerv03.

Lab 7.1: Cascade Standby

Page 75: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

75

Far Sync

Page 76: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

76

Far Sync

Page 77: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

77

Na máquina nerv04, crie um Listener, e inicie-o.

Na máquina nerv01, crie uma entrada no /etc/hosts para a máquina nerv04.Na máquina nerv02, crie uma entrada no /etc/hosts para a máquina nerv04.Na máquina nerv03, crie uma entrada no /etc/hosts para a máquina nerv04.Na máquina nerv04, crie uma entrada no /etc/hosts para a máquina nerv01.Na máquina nerv04, crie uma entrada no /etc/hosts para a máquina nerv02.Na máquina nerv04, crie uma entrada no /etc/hosts para a máquina nerv03.

Na máquina nerv01, crie uma entrada no tnsnames.ora (TERR04) para a instância da máquina nerv04.Na máquina nerv02, crie uma entrada no tnsnames.ora (TERR04) para a instância da máquina nerv04.Na máquina nerv03, crie uma entrada no tnsnames.ora (TERR04) para a instância da máquina nerv04.Na máquina nerv04, crie uma entrada no tnsnames.ora para a instância da máquina nerv01.Na máquina nerv04, crie uma entrada no tnsnames.ora para a instância da máquina nerv02.Na máquina nerv04, crie uma entrada no tnsnames.ora para a instância da máquina nerv03.Na máquina nerv04, crie uma entrada no tnsnames.ora para a instância da máquina nerv04.

Teste a resolução de nomes (ping) e o Oracle Net (tnsping) entre as máquinas.

Na máquina nerv01, copie o PASSWORD FILE para a máquina nerv04.

Na máquina nerv01, copie o SPFILE para a máquina nerv04.

Na máquina nerv04, crie todos os diretórios mencionados em parâmetros do SPFILE.

Na máquina nerv04, crie um diretório para armazenar ARCHIVED REDO LOGs.

Lab 8.1: Far Sync

Page 78: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

78

Na máquina nerv01, crie um FAR SYNC STANDBY CONTROLFILE, e copie para a máquina nerv04, para a localização dos CONTROLFILEs.SQL> ALTER DATABASE CREATE FAR SYNC INSTANCE CONTROLFILE AS '/tmp/STBFS.ctl';$ scp /tmp/STBFS.ctl nerv04:/u01/app/oracle/oradata/TERR/control01.ctl$ scp /tmp/STBFS.ctl nerv04:/u01/app/oracle/fast_recovery_area/TERR/control02.ctl

Na máquina nerv01, cancele a replicação para a máquina nerv02, e habilite o envio para a máquina nerv04.SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='';SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_4='SERVICE=TERR04 ASYNC NOAFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=TERR04';Por que não funciona?

Lab 8.2: Far Sync

Page 79: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

79

Na máquina nerv04, habilite a replicação para a máquina nerv02.$ export ORACLE_SID=TERR$ rlwrap sqlplus / AS SYSDBASQL> STARTUP NOMOUNT;SQL> ALTER SYSTEM SET SERVICE_NAMES=TERR04 SCOPE=SPFILE;SQL> ALTER SYSTEM SET DB_UNIQUE_NAME=TERR04 SCOPE=SPFILE;SQL> SHUTDOWN IMMEDIATE;SQL> STARTUP MOUNT;SQL> ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(TERR,TERR02,TERR03,TERR04)';SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=/u01/archives/ VALID_FOR=(ONLINE_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=TERR04';SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=TERR02 ASYNC VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=TERR02';SQL> ALTER SYSTEM SET FAL_SERVER=TERR;SQL> ALTER DATABASE ADD STANDBY LOGFILE SIZE 209715200;SQL> ALTER DATABASE ADD STANDBY LOGFILE SIZE 209715200;SQL> ALTER DATABASE ADD STANDBY LOGFILE SIZE 209715200;SQL> ALTER DATABASE ADD STANDBY LOGFILE SIZE 209715200;

Na máquina nerv02, altere a solicitação de ARCHIVEs para a máquina nerv04.SQL> ALTER SYSTEM SET FAL_SERVER=TERR04;

Na máquina nerv01, gere alguns ARCHIVED REDO LOGs, e acompanhe os Alert Logs.Por que não funciona?

Lab 8.3: Far Sync

Page 80: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

80

Data Guard Broker

Page 81: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

81

Data Guard Broker

Page 82: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

82

Componentes Data Guard Broker

Page 83: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

83

Bystander Standby Databases

Page 84: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

84

Habilite o FLASHBACK DATABASE nos bancos de dados das máquinas nerv01, nerv02, nerv03 e nerv04.SQL> SELECT FLASHBACK_ON FROM V$DATABASE;SQL> ALTER DATABASE FLASHBACK ON;

Adicione uma entrada estática para o Data Guard Broker no listener.ora de cada máquina, incluindo todas as instâncias que rodam nela, e reinicie o Listener.

SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = TERR_DGMGRL) (ORACLE_HOME = /u01/app/oracle/product/18.3.0.0/db_1) (SID_NAME = TERR) ) (SID_DESC = (GLOBAL_DBNAME = URAN03_DGMGRL) (ORACLE_HOME = /u01/app/oracle/product/18.3.0.0/db_1) (SID_NAME = URAN) ) )

$ lsnrctl reload$ lsnrctl status

Lab 9.1: Data Guard Broker

Page 85: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

85

Na máquina nerv01, habilite o Data Guard Broker.$ rlwrap dgmgrl SYS/Nerv2018@TERRDGMGRL> CREATE CONFIGURATION 'DRSolution' AS PRIMARY DATABASE IS TERR CONNECT IDENTIFIER IS TERR;Por que não funciona?

Na máquina nerv01, adicione as outras máquinas da configuração.DGMGRL> ADD DATABASE TERR02 AS CONNECT IDENTIFIER IS TERR02;DGMGRL> ADD DATABASE TERR03 AS CONNECT IDENTIFIER IS TERR03;DGMGRL> ADD FAR_SYNC TERR04 AS CONNECT IDENTIFIER IS TERR04;

Na máquina nerv01, verifique a configuração.DGMGRL> SHOW CONFIGURATION;

Na máquina nerv01, habilite a configuração, acompanhando todos os Alert Logs.DGMGRL> ENABLE CONFIGURATION;

Na máquina nerv01, verifique a configuração.DGMGRL> SHOW CONFIGURATION;

Lab 9.2: Data Guard Broker

Page 86: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

86

Na máquina nerv01, verifique detalhes de um banco de dados.DGMGRL> SHOW DATABASE TERR;DGMGRL> SHOW DATABASE VERBOSE TERR;DGMGRL> SHOW DATABASE TERR InconsistentProperties;DGMGRL> EDIT DATABASE TERR SET PROPERTY 'ArchiveLagTarget'=1200;DGMGRL> SHOW DATABASE TERR 'ArchiveLagTarget';O que apareceu no Alert Log?

Na máquina nerv01, altere o Protection Mode.DGMGRL> EDIT DATABASE TERR02 SET PROPERTY 'LogXptMode'='SYNC';DGMGRL> EDIT DATABASE TERR03 SET PROPERTY 'LogXptMode'='SYNC';O que apareceu no Alert Log?Esses parâmetros podem ser alterados via ALTER SYSTEM?DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS MAXAVAILABILITY;

Na máquina nerv01, verifique se o Protection Mode foi alterado.DGMGRL> SHOW CONFIGURATION;

Lab 9.3: Data Guard Broker

Page 87: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

87

Na máquina nerv01, simule uma manutenção do ambiente.DGMGRL> EDIT DATABASE TERR03 SET STATE='APPLY-OFF';DGMGRL> EDIT DATABASE TERR02 SET STATE='APPLY-OFF';DGMGRL> EDIT DATABASE TERR SET STATE=TRANSPORT-OFF;Por que não funciona?DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS MAXPERFORMANCE;DGMGRL> EDIT DATABASE TERR SET STATE=TRANSPORT-OFF;

Na máquina nerv01, simule o fim da manutenção do ambiente.DGMGRL> EDIT DATABASE TERR SET STATE=TRANSPORT-ON;DGMGRL> EDIT DATABASE TERR03 SET STATE='APPLY-ON';DGMGRL> EDIT DATABASE TERR02 SET STATE='APPLY-ON';

Na máquina nerv03, simule uma indisponibilidade não planejada, sempre acompanhando os Alert Logs.SQL> SHUTDOWN ABORT;SQL> STARTUP;

Na máquina nerv02, simule uma indisponibilidade não planejada, sempre acompanhando os Alert Logs.SQL> SHUTDOWN ABORT;SQL> STARTUP;

Lab 9.4: Data Guard Broker

Page 88: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

88

Na máquina nerv01, se não tiver nenhum erro, execute Switchover para a máquina nerv02.DGMGRL> SHOW CONFIGURATION;DGMGRL> SWITCHOVER TO TERR02;

Na máquina nerv01, se não tiver nenhum erro, execute Switchover para a máquina nerv01.DGMGRL> SHOW CONFIGURATION;DGMGRL> SWITCHOVER TO TERR;

Na máquina nerv01, se não tiver nenhum erro, execute Switchover para a máquina nerv03.DGMGRL> SHOW CONFIGURATION;DGMGRL> SWITCHOVER TO TERR03;O que aconteceu?

Na máquina nerv01, execute Switchover para a máquina nerv01.DGMGRL> SHOW CONFIGURATION;DGMGRL> SWITCHOVER TO TERR;O que aconteceu?

Para corrigir, remova e adicione o Physical Standby da máquina nerv02, e a reabilite no Broker.DGMGRL> REMOVE DATABASE TERR02;DGMGRL> ADD DATABASE TERR02 AS CONNECT IDENTIFIER IS TERR02;DGMGRL> ENABLE DATABASE TERR02;

Lab 9.5: Data Guard Broker

Page 89: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

89

A partir da máquina nerv01, converta o banco de dados da máquina nerv02 para SNAPSHOT STANDBY.$ rlwrap dgmgrl SYS/Nerv2018@TERR02DGMGRL> CONVERT DATABASE TERR02 TO SNAPSHOT STANDBY;

Na máquina nerv01, se não tiver nenhum erro, execute Switchover para a máquina nerv02.DGMGRL> SWITCHOVER TO TERR02;Por que não funciona?

Converta o banco de dados da máquina nerv02 de volta para PHYSICAL STANDBY.DGMGRL> CONVERT DATABASE TERR02 TO PHYSICAL STANDBY;

Lab 9.6: Data Guard Broker

Page 90: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

90

Na máquina nerv01, simule uma indisponibilidade não planejada.SQL> SHUTDOWN ABORT;

Na máquina nerv02, execute FAILOVER para a máquina nerv02.$ rlwrap dgmgrl SYS/Nerv2018@TERR02DGMGRL> FAILOVER TO TERR02;DGMGRL> SHOW CONFIGURATION;

Reative a instância na máquina nerv01.

EXECUTE o REISNTATE do banco da máquina nerv01.DGMGRL> REINSTATE DATABASE TERR;

EXECUTE o REISNTATE do banco da máquina nerv03.DGMGRL> REINSTATE DATABASE TERR03;

Faça o SWITCHOVER de volta para a máquina nerv01.

Lab 9.7: Data Guard Broker

Page 91: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

91

Na máquina nerv01, crie uma entrada no /etc/hosts para a máquina nerv05.Na máquina nerv02, crie uma entrada no /etc/hosts para a máquina nerv05.Na máquina nerv03, crie uma entrada no /etc/hosts para a máquina nerv05.Na máquina nerv04, crie uma entrada no /etc/hosts para a máquina nerv05.

Na máquina nerv05, crie uma entrada no /etc/hosts para a máquina nerv01.Na máquina nerv05, crie uma entrada no /etc/hosts para a máquina nerv02.Na máquina nerv05, crie uma entrada no /etc/hosts para a máquina nerv03.Na máquina nerv05, crie uma entrada no /etc/hosts para a máquina nerv04.

Na máquina nerv05, crie uma entrada no tnsnames.ora para a instância da máquina nerv01.Na máquina nerv05, crie uma entrada no tnsnames.ora para a instância da máquina nerv02.Na máquina nerv05, crie uma entrada no tnsnames.ora para a instância da máquina nerv03.Na máquina nerv05, crie uma entrada no tnsnames.ora para a instância da máquina nerv04.

Teste a resolução de nomes (ping) e o Oracle Net (tnsping) entre as máquinas.

Lab 10.1: Fast-Start Failover

Page 92: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

92

Confira se os bancos da máquina nerv01, nerv02 e nerv03 estão com FLASHBACK ativado.

Na máquina nerv01, configure o Fast-Start Failover.$ rlwrap dgmgrl SYS/Nerv2018@TERRDGMGRL> EDIT CONFIGURATION SET PROPERTY FastStartFailoverLagLimit=600;DGMGRL> EDIT CONFIGURATION SET PROPERTY FastStartFailoverThreshold = 30;DGMGRL> EDIT CONFIGURATION SET PROPERTY FastStartFailoverAutoReinstate = TRUE;DGMGRL> EDIT CONFIGURATION SET PROPERTY FastStartFailoverPmyShutdown = TRUE;DGMGRL> EDIT DATABASE TERR SET PROPERTY FastStartFailoverTarget=TERR02;DGMGRL> SHOW CONFIGURATION;DGMGRL> ENABLE FAST_START FAILOVER;DGMGRL> SHOW CONFIGURATION;DGMGRL> SHOW FAST_START FAILOVER;

Na máquina nerv05, conecte-se na máquina nerv02 e inicie o OBSERVER.$ rlwrap dgmgrl SYS/Nerv2018@TERR02DGMGRL> START OBSERVER;

Lab 10.2: Fast-Start Failover

Page 93: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

93

Na máquina nerv01, simule uma indisponibilidade não planejada.$ ps aux | grep pmon$ kill -9 27186

Na máquina nerv05, acompanhe o Observer.

Inicie novamente a instância da máquina nerv01, e acompanhe o Observer.

Execute o SWITCHOVER de volta para a máquina nerv01.

Lab 10.3: Fast-Start Failover

Page 94: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

94

Na máquina nerv01, verifique as condições de Fast-Start Failover e habilite mais uma condição.DGMGRL> SHOW FAST_START FAILOVER;DGMGRL> ENABLE FAST_START FAILOVER CONDITION 00001DGMGRL> SHOW FAST_START FAILOVER;

Na máquina nerv01, simule a condição de falha, e acompanhe o Observer.$ rlwrap sqlplus SCOTT/TIGER@TERRPSQL> CREATE TABLE T1 (C1 NUMBER PRIMARY KEY);SQL> INSERT INTO T1 VALUES (1);SQL> INSERT INTO T1 VALUES (1);

Após o FAILOVER, inicie novamente a instância da máquina nerv01, e acompanhe o Observer.SQL> STARTUP;

Após o REINSTATE, execute o SWITCHOVER de volta para a máquina nerv01.

Lab 10.4: Fast-Start Failover

Page 95: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

95

Nas máquinas nerv01, nerv02 e nerv03, crie uma entrada TNS para o Service CATALOGO, IP 192.168.15.2, porta 1539.

Na máquina nerv01, conecte-se ao CATALOG centralizado.$ rlwrap rman CATALOG=CATALOGO/Nerv2018@CATALOGO TARGET /RMAN> REGISTER DATABASE;RMAN> LIST DB_UNIQUE_NAME OF DATABASE;

Na máquina nerv02, conecte-se ao CATALOG centralizado.$ rlwrap rman CATALOG=CATALOGO/Nerv2018@CATALOGO TARGET /RMAN> LIST DB_UNIQUE_NAME OF DATABASE;

Na máquina nerv03, conecte-se ao CATALOG centralizado.$ rlwrap rman CATALOG=CATALOGO/Nerv2018@CATALOGO TARGET /RMAN> LIST DB_UNIQUE_NAME OF DATABASE;RMAN> REGISTER DATABASE;RMAN> LIST DB_UNIQUE_NAME OF DATABASE;

Na máquina nerv01, conecte-se ao CATALOG centralizado.$ rlwrap rman CATALOG=CATALOGO/CATALOGO@CATALOGO TARGET /RMAN> LIST DB_UNIQUE_NAME OF DATABASE;RMAN> LIST ARCHIVELOG ALL FOR DB_UNIQUE_NAME TERR02;RMAN> REPORT SCHEMA FOR DB_UNIQUE_NAME TERR02;RMAN> SHOW ALL FOR DB_UNIQUE_NAME TERR02;RMAN> SHOW ALL FOR DB_UNIQUE_NAME TERR03;

Lab 11.1: RMAN CATALOG

Page 96: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

96

Na máquina nerv01, conecte-se ao CATALOG centralizado.RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY;RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO BACKED UP 2 TIMES TO DEVICE TYPE DISK;

RMAN> LIST ARCHIVELOG ALL;RMAN> ALTER SYSTEM SWITCH LOGFILE;RMAN> ALTER SYSTEM SWITCH LOGFILE;RMAN> ALTER SYSTEM SWITCH LOGFILE;RMAN> BACKUP ARCHIVELOG ALL DELETE ALL INPUT;RMAN> LIST ARCHIVELOG ALL;RMAN> BACKUP ARCHIVELOG ALL DELETE ALL INPUT;Os ARCHIVEs foram apagados na Produção? E no Standby?

Lab 11.2: ARCHIVEs

Page 97: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

97

Na máquina nerv02, habilite o ACTIVE DATA GUARD.

Na máquina nerv01, crie uma nova TABLESPACE, e uma tabela com dados na nova TABLESPACE.$ rlwrap sqlplus SYSTEM/Nerv2018@TERRPSQL> CREATE TABLESPACE TESTE DATAFILE '/u01/TESTE.dbf' SIZE 100M;SQL> CREATE TABLE TESTE TABLESPACE TESTE AS SELECT * FROM ALL_OBJECTS;

Nas máquinas nerv01 e nerv02, faça um backup completo do banco de dados.RMAN> BACKUP DATABASE PLUS ARCHIVELOG DELETE INPUT;

Na máquina nerv01, verifique qual o HEADER BLOCK dos dados desta Tabela.SQL> SELECT HEADER_BLOCK FROM DBA_SEGMENTS WHERE OWNER = 'SYSTEM' AND SEGMENT_NAME = 'TESTE';

Na máquina nerv01, corrompa um bloco de dados do DATAFILE.$ dd of=/u01/TESTE.dbf bs=8192 conv=notrunc seek=131 <<EOF> Vamos corromper este datafile…> EOF

Na máquina nerv01, execute uma validação da TABLESPACE, e observe os ALERT LOGs.RMAN> VALIDATE TABLESPACE TERRP:TESTE CHECK LOGICAL;

Na máquina nerv01, leia os dados da tabela de teste, e observe os ALERT LOGs.$ rlwrap sqlplus SYSTEM/Nerv2018@TERRPSQL> INSERT INTO TESTE SELECT * FROM TESTE;

Lab 11.3: Auto Block Repair

Page 98: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

98

Todos● COMPRESSION=ENABLE● LOG_ARCHIVE_MAX_PROCESSES● MAX_CONNECTIONS● MAX_FAILURE (>)● NET_TIMEOUT (>)● REOPEN (<)

Physical Standby● RECOVERY_PARALLELISM● ApplyParallel (Data Guard Broker)

Logical Standby● SQL> EXECUTE DBMS_LOGSTDBY.APPLY_SET('MAX_SERVERS', 20);● SQL> EXECUTE DBMS_LOGSTDBY.APPLY_SET('PREPARE_SERVERS', 10);● SQL> EXECUTE DBMS_LOGSTDBY.APPLY_SET('MAX_SGA', 1024);

Tuning

Page 99: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

99

• Alert Log• Parâmetros• SQL*Net

Troubleshooting

Page 100: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

100

● Modo ARCHIVELOG.● FORCE LOGGING.● Resolução de nomes bilateral.● Resolução de SQL*Net bilateral.● Autenticação via PASSWORD FILE.● Criação, cópia e Restore de STANDBY CONTROLFILE (ou ACTIVE DUPLICATION).● Backup e Restore (ou ACTIVE DUPLICATION).● No Physical Standby, MOUNT em modo STANDBY DATABASE.● Adequação de parâmetros no PRIMARY.● Adequação de parâmetros no STANDBY.● Criação de STANDBY REDO LOGs.● No Physical Standby, execução de RECOVER MANAGED STANDBY.

Checklist para Physical Standby

Page 101: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

101

• V$DATABASE• V$DATABASE_INCARNATION• V$DATAFILE• V$LOG• V$LOGFILE• V$LOG_HISTORY•• V$ARCHIVE_DEST• V$ARCHIVE_DEST_STATUS• V$ARCHIVE_GAP• V$ARCHIVED_LOG•• V$DATAGUARD_CONFIG• V$DATAGUARD_STATS• V$DATAGUARD_STATUS• V$FS_FAILOVER_STATS• V$MANAGED_STANDBY• V$REDO_DEST_RESP_HISTOGRAM• V$STANDBY_EVENT_HISTOGRAM• V$STANDBY_LOG

Views

Page 102: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

102

• 0 Disables archived redo log tracing (default)• 1 Tracks archiving of log files• 2 Tracks archive status by archive log file destination• 4 Tracks archive operational phase• 8 Tracks archive log destination activity• 16 Tracks detailed archive log destination activity• 32 Tracks archive log destination parameter modifications• 64 Tracks ARCn process state activity• 128 Tracks FAL server process activity• 256 Tracks RFS Logical Client• 512 Tracks LGWR redo shipping network activity• 1024 Tracks RFS physical client• 2048 Tracks RFS/ARCn ping heartbeat• 4096 Tracks real-time apply activity• 8192 Tracks Redo Apply activity• 16384 Tracks archive I/O buffers• 32768 Tracks LogMiner dictionary archiving

LOG_ARCHIVE_TRACE

Page 103: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

103

Backup Incremental• Standby: SELECT CURRENT_SCN FROM V$DATABASE;• Produção: STANDBY CONTROLFILE• Produção: BACKUP INCREMENTAL FROM SCN 123456789 DATABASE;• Standby: RECOVER DATABASE;

Recover From Service (12c)• Standby: RMAN> RECOVER DATABASE FROM SERVICE PRD;• Standby: RMAN> RESTORE STANDBY CONTROLFILE FROM SERVICE PRD;

Recuperação de GAP

Page 104: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

104

Na máquina nerv01, execute o VALIDATE.$ rlwrap dgmgrl SYS/Nerv2018@TERRDGMGRL> VALIDATE DATABASE VERBOSE TERR;DGMGRL> VALIDATE DATABASE VERBOSE TERR02;DGMGRL> VALIDATE DATABASE VERBOSE TERR03;

DGMGRL> VALIDATE DATABASE TERR02 SPFILE;DGMGRL> VALIDATE DATABASE TERR03 SPFILE;DGMGRL> VALIDATE DATABASE TERR04 SPFILE;

DGMGRL> VALIDATE NETWORK CONFIGURATION FOR ALL;

DGMGRL> VALIDATE STATIC CONNECT IDENTIFIER FOR ALL;

Lab 12.1: VALIDATE

Page 105: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

105

Na máquina nerv02, desligue a instância TERR.$ rlwrap sqlplus / AS SYSDBASQL> SHUTDOWN ABORT;

Na máquina nerv01, gere alguns ARCHIVED REDO LOGs, e os apague.$ rlwrap sqlplus / AS SYSDBASQL> ALTER SYSTEM SWITCH LOGFILE;SQL> ALTER SYSTEM SWITCH LOGFILE;SQL> ALTER SYSTEM SWITCH LOGFILE;SQL> ALTER SYSTEM SWITCH LOGFILE;SQL> ALTER SYSTEM SWITCH LOGFILE;

$ rlwrap rman target /RMAN> DELETE ARCHIVELOG ALL;RMAN> DELETE FORCE ARCHIVELOG ALL;

Na máquina nerv02, inicie a instância e acompanhe o Alert Log.

Na máquina nerv02, resolva o GAP.$ rlwrap rman target /RMAN> STARTUP NOMOUNT;RMAN> RESTORE STANDBY CONTROLFILE FROM SERVICE TERR;RMAN> ALTER DATABASE MOUNT;RMAN> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;RMAN> RECOVER DATABASE FROM SERVICE TERR;RMAN> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

Lab 12.2: Recuperação de GAP

Page 106: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

106

Na máquina nerv01, crie 3 PDBs.SQL> CREATE PLUGGABLE DATABASE TERRP_ESSA_VAI ADMIN USER RICARDO IDENTIFIED BY Nerv2018 STANDBYS=ALL FILE_NAME_CONVERT=('/u01/app/oracle/oradata/TERR/pdbseed/','/u01/app/oracle/oradata/TERR/TERRP_ESSA_VAI/');SQL> ALTER PLUGGABLE DATABASE TERRP_ESSA_VAI OPEN READ WRITE;SQL> ALTER PLUGGABLE DATABASE TERRP_ESSA_VAI SAVE STATE;

SQL> CREATE PLUGGABLE DATABASE TERRP_ESSA_TBVAI ADMIN USER RICARDO IDENTIFIED BY Nerv2018 STANDBYS=('TERR02') FILE_NAME_CONVERT=('/u01/app/oracle/oradata/TERR/pdbseed/','/u01/app/oracle/oradata/TERR/TERRP_ESSA_TBVAI/');SQL> ALTER PLUGGABLE DATABASE TERRP_ESSA_TBVAI OPEN READ WRITE;SQL> ALTER PLUGGABLE DATABASE TERRP_ESSA_TBVAI SAVE STATE;

SQL> CREATE PLUGGABLE DATABASE TERRP_ESSA_NAOVAI ADMIN USER RICARDO IDENTIFIED BY Nerv2018 STANDBYS=NONE FILE_NAME_CONVERT=('/u01/app/oracle/oradata/TERR/pdbseed/','/u01/app/oracle/oradata/TERR/TERRP_ESSA_NAOVAI/');SQL> ALTER PLUGGABLE DATABASE TERRP_ESSA_NAOVAI OPEN READ WRITE;SQL> ALTER PLUGGABLE DATABASE TERRP_ESSA_NAOVAI SAVE STATE;

Nas máquinas nerv01, nerv02 e nerv03, verifique os PDBs.SQL> SHOW PDBS:

Execute SWITCHOVER para a nerv02. O que acontece com os PDBs?

Execute SWITCHBACK de volta para a nerv01, e remova os PDBs.SQL> ALTER PLUGGABLE DATABASE TERRP_ESSA_VAI CLOSE;SQL> DROP PLUGGABLE DATABASE TERRP_ESSA_VAI INCLUDING DATAFILES;

Lab 12.3: Pluggable Databases

Page 107: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

107

Lights out administration

Page 108: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

108

Lights out administration

● Produção:srvctl add service -d TERR -s OLTP -l PRIMARY -w 1 -z 10srvctl add service -d TERR -s OLAP -l PHYSICAL_STANDBY -w 1 -z 10

● Standby:srvctl add service -d TERR02 -s OLTP -l PRIMARY -w 1 -z 10srvctl add service -d TERR02 -s OLAP -l PHYSICAL_STANDBY -w 1 -z 10

● Client tnsnames.ora:OLTP = (DESCRIPTION= (LOAD_BALANCE=OFF) (FAILOVER=ON) (ADDRESS=(PROTOCOL=TCP)(HOST=nerv01)(PORT=1521)) (ADDRESS=(PROTOCOL=TCP)(HOST=nerv02)(PORT=1521)) (CONNECT_DATA=(SERVICE_NAME=OLTP)) )

● Failover pela aplicação:SQL> DBMS_DG.INITIATE_FS_FAILOVER

Page 109: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

109

GDS – Global Data Services

Page 110: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

110

Na máquina nerv01, crie uma entrada no /etc/hosts para as máquinas nerv06 e nerv07.Na máquina nerv02, crie uma entrada no /etc/hosts para as máquinas nerv06 e nerv07.Na máquina nerv03, crie uma entrada no /etc/hosts para as máquinas nerv06 e nerv07.Na máquina nerv04, crie uma entrada no /etc/hosts para as máquinas nerv06 e nerv07.Na máquina nerv05, crie uma entrada no /etc/hosts para as máquinas nerv06 e nerv07.

Nas máquinas nerv06 e nerv07, crie uma entrada no /etc/hosts para a máquina nerv01.Nas máquinas nerv06 e nerv07, crie uma entrada no /etc/hosts para a máquina nerv02.Nas máquinas nerv06 e nerv07, crie uma entrada no /etc/hosts para a máquina nerv03.Nas máquinas nerv06 e nerv07, crie uma entrada no /etc/hosts para a máquina nerv04.Nas máquinas nerv06 e nerv07, crie uma entrada no /etc/hosts para a máquina nerv05.

Nas máquinas nerv06, crie uma entrada no tnsnames.ora para a instância da máquina nerv01.Nas máquinas nerv06, crie uma entrada no tnsnames.ora para a instância da máquina nerv02.Nas máquinas nerv06, crie uma entrada no tnsnames.ora para a instância da máquina nerv03.Nas máquinas nerv06, crie uma entrada no tnsnames.ora para a instância da máquina nerv04.

Teste a resolução de nomes (ping) e o Oracle Net (tnsping) entre as máquinas.

Lab 13.1: Global Data Services

Page 111: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

111

Na máquina nerv06, crie um PDB no banco ORCL.$ export ORACLE_SID=ORCL$ rlwrap sqlplus / as sysdbaSQL> CREATE PLUGGABLE DATABASE GDS ADMIN USER RICARDO IDENTIFIED BY Nerv2018 FILE_NAME_CONVERT=('/u01/app/oracle/oradata/18c/ORCL/pdbseed/','/u01/app/oracle/oradata/18c/ORCL/GDS/');

SQL> ALTER USER GSMCATUSER IDENTIFIED BY Nerv2018 ACCOUNT UNLOCK;SQL> ALTER USER GSMUSER IDENTIFIED BY Nerv2018 ACCOUNT UNLOCK;

SQL> ALTER PLUGGABLE DATABASE GDS OPEN READ WRITE;SQL> ALTER PLUGGABLE DATABASE GDS SAVE STATE;

SQL> ALTER SESSION SET CONTAINER = GDS;SQL> CREATE USER GSM_ADMIN IDENTIFIED BY Nerv2018;SQL> GRANT GSMADMIN_ROLE TO GSM_ADMIN;

Na máquina nerv06, instale o GSM.$ unzip -q LINUX.X64_180000_gsm.zip$ cd gsm$ ./runInstaller

Lab 13.2: Global Data Services

Page 112: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

112

Lab 13.3: Global Data Services

Page 113: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

113

Lab 13.4: Global Data Services

Page 114: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

114

Lab 13.5: Global Data Services

# /u01/app/oracle/product/18.3.0.0/gsm/root.shPerforming root user operation.

The following environment variables are set as: ORACLE_OWNER= oracle ORACLE_HOME= /u01/app/oracle/product/18.3.0.0/gsm

Enter the full pathname of the local bin directory: [/usr/local/bin]: <ENTER>The contents of "dbhome" have not changed. No need to overwrite.The contents of "oraenv" have not changed. No need to overwrite.The contents of "coraenv" have not changed. No need to overwrite.

Entries will be added to the /etc/oratab file as needed byDatabase Configuration Assistant when a database is createdFinished running generic part of root script.Now product-specific root actions will be performed.#

Page 115: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

115

Lab 13.6: Global Data Services

Page 116: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

116

Na máquina nerv06, crie uma entrada TNS apra o PDB GDS.GDS=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=nerv06)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=GDS)(SERVER=DEDICATED)))

Na máquina nerv01, habilite os usuários utilizados pelo GDS.SQL> ALTER USER GSMCATUSER IDENTIFIED BY Nerv2018 ACCOUNT UNLOCK;SQL> ALTER USER GSMUSER IDENTIFIED BY Nerv2018 ACCOUNT UNLOCK;

Lab 13.7: Global Data Services

Page 117: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

117

Na máquina nerv06, configure o GDS.$ export ORACLE_HOME=/u01/app/oracle/product/18.3.0.0/gsm$ export TNS_ADMIN=$ORACLE_HOME/network/admin$ export PATH=$ORACLE_HOME/bin:$PATH

$ cp /u01/app/oracle/product/18.3.0.0/db_1/network/admin/tnsnames.ora /u01/app/oracle/product/18.3.0.0/gsm/network/admin/

$ rlwrap gdsctlGDSCTL> CONNECT GSM_ADMIN/Nerv2018@GDSGDSCTL> create catalog -database GDS -user gsm_admin/Nerv2018;

GDSCTL> config gsmGDSCTL> add gsm -gsm GSM1 -listener 1522 -catalog GDS -pwd Nerv2018GDSCTL> config gsmGDSCTL> start gsmGDSCTL> status gsm

GDSCTL> config regionGDSCTL> add region -region NERVA, NERVBGDSCTL> config region

GDSCTL> config gdspoolGDSCTL> add gdspool -gdspool SOEGDSCTL> config gdspool

GDSCTL> config databaseGDSCTL> add brokerconfig -connect TERR -region NERVA -gdspool soe -pwd Nerv2018GDSCTL> config database

Lab 13.8: Global Data Services

Page 118: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

118

Na máquina nerv06, configure o GDS.GDSCTL> add service -service SOE_RW -gdspool soe -preferred_all -role PRIMARY -notification TRUE -failovermethod BASIC -failovertype SELECT -notification TRUE -pdbname TERRPGDSCTL> start service -service SOE_RW -gdspool soe

GDSCTL> add service -service SOE_RO -gdspool soe -preferred_all -role PHYSICAL_STANDBY -notification TRUE -failovermethod BASIC -failovertype SELECT -notification TRUE -pdbname TERRPGDSCTL> start service -service SOE_RO -gdspool soe

Na máquina nerv07, crie uma entrada TNS para os serviços criados, e teste a conexão.SOE_RW = (DESCRIPTION_LIST= (DESCRIPTION = (ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(HOST=nerv08)(PORT=1522))) (CONNECT_DATA=(SERVICE_NAME = soe_rw.soe.oradbcloud))) )

$ rlwrap sqlplus SCOTT/TIGER@SOE_RW

Execute SWITCHOVER, e teste a conexão dos serviços criados.

Lab 13.9: Global Data Services

Page 119: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

119

Sharding

Page 120: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

120

Sharding

Page 121: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

121

Melhores Práticas

● Alta Disponibilidade não é Total Disponibilidade.● Alta Disponibilidade não é nem ao menos Máxima Disponibilidade.● A Máxima Disponibilidade só pode ser alcançada com um conjunto de tecnologias.● Compartilhe sobre as soluções e proteções da Alta Disponibilidade com o cliente.● Oracle Data Guard é mais disponível do que Standby Manual.● Oracle Data Guard não protege apenas contra desastres regionais.● Cada tipo de Data Guard te protege contra certos tipos de falhas.● O Oracle Data Guard é uma ferramenta de escalabilidade horizontal.● O Active Data Guard também é uma ferramenta de disponibilidade.● Teste (e pratique) o Switchover / Switchback com frequência.● Monitore a replicação.● Utilize FLASHBACK.● O Snapshot Standby torna seu ambiente mais estável.● Utilize o Data Guard Broker: switchover mais rápido é maior disponibilidade.● Utilize o Data Guard Broker: ele é "grátis", você já pagou por ele.● O Logical Standby é um Active Data Guard “grátis”.● O Oracle Data Guard é caro: utilize o máximo de recursos dele.

Page 122: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

122

Perguntas?Fórum: http://nervinformatica.com.br/forum/

Ricardo Portilho Proni [email protected] Nerv Informática Ltda. Esta obra está licenciada sob a licença Creative Commons Atribuição-SemDerivados 3.0 Brasil. Para ver uma cópia desta licença, visite http://creativecommons.org/licenses/by-nd/3.0/br/.

Page 123: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

123

Na máquina nerv01, crie um banco de dados com o nome “TERR”, com um PDB com o nome TERRP.

Na máquina nerv01, coloque o banco de dados em modo ARCHIVELOG.

Na máquina nerv01, Habilite o FORCE LOGGING.SQL> ALTER DATABASE FORCE LOGGING;

Na máquina nerv01, habilite o backup automático de CONTROLFILE.RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;

Na máquina nerv01, execute um backup:RMAN> BACKUP DATABASE;

Copie para a máquina nerv02 os BACKUPPIECEs criados pelo backup executado na máquina nerv01, para qualquer diretório. Copie o SPFILE da máquina nerv01 para a máquina nerv02, em $ORACLE_HOME/dbs.

Na máquina nerv02, crie todos os diretórios utilizados por parâmetros no SPFILE.

Lab Extra 1.1: Standby Manual

Page 124: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

124

Na máquina nerv02, inicie a instância em NOMOUNT.RMAN> STARTUP NOMOUNT;

Na máquina nerv02, restaure o CONTROLFILE.RMAN> RESTORE CONTROLFILE FROM ‘/home/oracle/o1_mf_s_775375054_7msfqgo1_.bkp’;

Na máquina nerv02, altere a instância para o estágio MOUNT.RMAN> ALTER DATABASE MOUNT;

Na máquina nerv02, catalogue o BACKUPPIECE do BACKUP DATABASE.RMAN> CATALOG BACKUPPIECE '/home/oracle/TAG20120216T055648.bkp';

Na máquina nerv02, restaure o banco de dados.RMAN> RESTORE DATABASE;

Na máquina nerv02, abra a instância em READ ONLY.RMAN> ALTER DATABASE OPEN READ ONLY;Por que não funciona?

Na máquina nerv02, execute RECOVER no banco de dados.RMAN> RECOVER DATABASE;Por que não funciona?

Lab Extra 1.2: Standby Manual

Page 125: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

125

Na máquina nerv01, verifique os ARCHIVED REDO LOGs gerados antes e depois do BACKUP DATABASE.RMAN> ALTER SYSTEM SWITCH LOGFILE;RMAN> ALTER SYSTEM SWITCH LOGFILE;RMAN> ALTER SYSTEM SWITCH LOGFILE;RMAN> LIST ARCHIVELOG ALL;

Na máquina nerv01, copie os ARCHIVED REDO LOGs para a máquina nerv02, para qualquer diretório.

Na máquina nerv02, catalogue os ARCHIVED REDO LOGs copiados.RMAN> CATALOG ARCHIVELOG '/home/oracle/o1_mf_1_70_7mshox4j_.arc';

Na máquina nerv02, execute RECOVER no banco de dados.RMAN> RECOVER DATABASE;Por que continua com erro?

Na máquina nerv02, abra a instância em READ ONLY.RMAN> ALTER DATABASE OPEN READ ONLY;

Lab Extra 1.3: Standby Manual

Page 126: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

126

Na máquina nerv01, gere mais ARCHIVED REDO LOGsRMAN> ALTER SYSTEM SWITCH LOGFILE;RMAN> ALTER SYSTEM SWITCH LOGFILE;RMAN> ALTER SYSTEM SWITCH LOGFILE;

Na máquina nerv01, copie os ARCHIVED REDO LOGs para a máquina nerv02, para o mesmo diretório que está na máquina nerv01.

Na máquina nerv02, execute RECOVER no banco de dados.RMAN> SHUTDOWN IMMEDIATE;RMAN> STARTUP MOUNT;RMAN> RECOVER DATABASE;Por que continua com erro?

Na máquina nerv02, abra a instância em READ ONLY.RMAN> ALTER DATABASE OPEN READ ONLY;

Lab Extra 1.4: Standby Manual

Page 127: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

127

Na máquina nerv01, crie uma entrada no /etc/hosts para a máquina nerv02.Na máquina nerv02, crie uma entrada no /etc/hosts para a máquina nerv01.

Na máquina nerv01, crie um arquivo (se não tiver um) listener.ora e inicie-o.

Na máquina nerv01, crie uma entrada no tnsnames.ora para as instâncias das máquinas nerv01 e nerv02.TERR=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=nerv01)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=TERR)(SERVER=DEDICATED)))TERR02=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=nerv02)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=TERR02)(SERVER=DEDICATED)))

Na máquina nerv01, copie o tnsnames.ora para a máquina nerv02.Na máquina nerv01, copie o listener.ora para a máquina nerv02.Na máquina nerv02, corrija o listener.ora, e inicie o LISTENER.Na máquina nerv02, veja qual o SERVICE que o LISTENER provê.

Na máquina nerv01, copie o PASSWORD FILE para a máquina nerv02.

Teste a resolução de nomes (ping) e o Oracle Net (tnsping) entre as duas máquinas.Por que não funciona?

Na máquina nerv02, passe a instância ao estado SHUTDOWN.

Lab Extra 2.1: Cold Filesystem Backup

Page 128: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

128

Nas máquinas nerv01 e nerv02, crie um diretório para armazenar ARCHIVED REDO LOGs.

Na máquina nerv01, altere os parâmetros abaixo.SQL> ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(TERR,TERR02)';

SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_1= 'LOCATION=/home/oracle/archives/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=TERR';

SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=TERR02 ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=TERR02';

Na máquina nerv01, copie o SPFILE para a máquina nerv02.

Na máquina nerv01, crie um STANDBY CONTROLFILE.SQL> ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/tmp/stbCF.ctl';

Na máquina nerv01, copie o STANDBY CONTROLFILE para a máquina nerv02, para os locais indicados no SPFILE.

Lab Extra 2.2: Cold Filesystem Backup

Page 129: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

129

Na máquina nerv01, passe a instância ao estado SHUTDOWN, e copie todos os DATAFILEs para a máquina nerv02, para o mesmo diretório da máquina nerv01.

Na máquina nerv02, inicie a instância, deixando-a no estado NOMOUNT, e altere o seguinte parâmetro.SQL> ALTER SYSTEM SET DB_UNIQUE_NAME=TERR02 SCOPE=SPFILE;

Na máquina nerv02, reinicie a instância, deixando-a em estado NOMOUNT.Na máquina nerv02, veja qual o SERVICE que o LISTENER provê.

Na máquina nerv02, altere os seguintes parâmetros.SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_1= 'LOCATION=/home/oracle/archives/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=TERR02';SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_2= '';SQL> ALTER SYSTEM SET FAL_SERVER=TERR;SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;

Na máquina nerv01, inicie a instância, deixando-a em estado OPEN.Na máquina nerv01, gere alguns ARCHIVED REDO LOGs.

Nas máquinas nerv01 e nerv02, acompanhe o Alert Log.

Lab Extra 2.3: Cold Filesystem Backup

Page 130: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

130

Na máquina nerv02, passe a instância ao estágio MOUNT.SQL> ALTER DATABASE MOUNT STANDBY DATABASE;

Na máquina nerv02, inicie o RECOVER.SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

Nas máquinas nerv01 e nerv02, acompanhe o Alert Log.

Na máquina nerv01, gere alguns ARCHIVED REDO LOGs.

Lab Extra 2.4: Cold Filesystem Backup

Page 131: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

131

Na máquina nerv02, passe a instância ao estágio SHUTDOWN.

Na máquina nerv01, crie um STANDBY CONTROLFILE.SQL> ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/tmp/stbCF.ctl';

Na máquina nerv01, copie o STANDBY CONTROLFILE para a máquina nerv02, para os locais indicados no SPFILE.

Na máquina nerv01, passe o banco de dados ao modo BEGIN BACKUP.SQL> ALTER DATABASE BEGIN BACKUP;

Na máquina nerv01, copie por scp todos os DATAFILEs.

Na máquina nerv01, finalize o modo BEGIN BACKUP.SQL> ALTER DATABASE END BACKUP;

Lab Extra 3.1: User Managed Backup

Page 132: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

132

Na máquina nerv02, inicie a instância, deixando-a em estado NOMOUNT;

Na máquina nerv02, passe a instância ao estágio MOUNT.SQL> ALTER DATABASE MOUNT STANDBY DATABASE;

Na máquina nerv02, inicie o RECOVER.SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

Nas máquinas nerv01 e nerv02, acompanhe o Alert Log.

Na máquina nerv01, gere alguns ARCHIVED REDO LOGs.

Lab Extra 3.2: User Managed Backup

Page 133: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

133

Na máquina nerv02, passe a instância ao estágio SHUTDOWN.

Na máquina nerv01, crie um STANDBY CONTROLFILE.SQL> ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/tmp/stbCF.ctl';

Na máquina nerv01, copie o STANDBY CONTROLFILE para a máquina nerv02, para os locais indicados no SPFILE.

Na máquina nerv01, execute um backup do banco de dados pelo RMAN.RMAN> BACKUP DATABASE;

Copie para a máquina nerv02 os BACKUPPIECEs criados pelo backup executado na máquina nerv01, para qualquer diretório.

Lab Extra 4.1: RMAN Hot Backup

Page 134: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

134

Na máquina nerv02, inicie a instância em NOMOUNT.RMAN> STARTUP NOMOUNT;

Na máquina nerv02, altere a instância para o estágio MOUNT.SQL> ALTER DATABASE MOUNT STANDBY DATABASE;

Na máquina nerv02, catalogue o BACKUP PIECE do BACKUP DATABASE.RMAN> CATALOG BACKUPPIECE '/home/oracle/TAG20120216T055648.bkp';

Na máquina nerv02, restaure o banco de dados.RMAN> RESTORE DATABASE;

Na máquina nerv02, inicie o RECOVER.SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

Nas máquinas nerv01 e nerv02, acompanhe o Alert Log.

Na máquina nerv01, gere alguns ARCHIVED REDO LOGs.

Lab Extra 4.2: RMAN Hot Backup

Page 135: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

135

Na máquina nerv02, passe a instância ao estágio SHUTDOWN.

Na máquina nerv01, execute um backup do banco de dados pelo RMAN.RMAN> BACKUP DATABASE;

Copie para a máquina nerv02 os BACKUPPIECEs criados pelo backup executado na máquina nerv01, para os mesmos diretórios.$ rsync -azv /u01/app/oracle/fast_recovery_area/TERR/ nerv04:/u01/app/oracle/fast_recovery_area/TERR/

Na máquina nerv02, reinicie a instância, deixando-a em estado NOMOUNT.SQL> STARTUP NOMOUNT;

Na máquina nerv01, conecte-se com RMAN das duas instâncias e execute a duplicação.$ rman TARGET / AUXILIARY=SYS/Nerv2018@TERR02RMAN> DUPLICATE TARGET DATABASE FOR STANDBY DORECOVER NOFILENAMECHECK;

Lab Extra 5.1: RMAN Duplication

Page 136: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

136

Na máquina nerv02, altere os seguintes parâmetros.SQL> ALTER SYSTEM SET DB_UNIQUE_NAME=TERR02 SCOPE=SPFILE;

SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_1= 'LOCATION=/home/oracle/archives/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=TERR02' SCOPE=SPFILE;

SQL> ALTER SYSTEM SET FAL_SERVER=TERR SCOPE=SPFILE;

SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO SCOPE=SPFILE;

Na máquina nerv02, reinicie a instância, deixando-a em estado NOMOUNT;

Na máquina nerv02, passe a instância ao estágio MOUNT.SQL> ALTER DATABASE MOUNT STANDBY DATABASE;

Na máquina nerv02, inicie o RECOVER.SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

Nas máquinas nerv01 e nerv02, acompanhe o Alert Log.

Na máquina nerv01, gere alguns ARCHIVED REDO LOGs.

Lab Extra 5.2: RMAN Duplication

Page 137: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

137

Altere as variáveis de ambiente para o 11gR2.

Crie um listener nas máquinas nerv01 e nerv02.

Na máquina nerv01, adicione uma entrada estática no listener:SID_LIST_LISTENER =

(SID_LIST =(SID_DESC =

(GLOBAL_DBNAME = ORCL)(ORACLE_HOME = /u01/app/oracle/product/11.2.0.4/db_1)(SID_NAME = ORCL)

))

Na máquina nerv02, adicione uma entrada estática no listener:SID_LIST_LISTENER =

(SID_LIST =(SID_DESC =

(GLOBAL_DBNAME = STANDBY)(ORACLE_HOME = /u01/app/oracle/product/11.2.0.4/db_1)(SID_NAME = ORCL)

))

Crie um Standby Físico do banco ORCL da máquina nerv01 para a máquina nerv02.

Lab Extra 6.1: Low Downtime Upgrade

Page 138: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

138

Ative o FLASHBACK nos dois bancos de dados.

Deixe os dois bancos de dados preparados para SWITCHOVER e SWITCHBACK.

Execute o script para converter o banco da máquina nerv02 em um Standby Lógico:$./physru.sh SYS PROD STANDBY PROD STANDBY 18.3.0.0.0

Execute o script de pré-upgrade na máquina nerv02, e execute as correções recomendadas.SQL> @/u01/app/oracle/product/18.3.0.0/db_1/rdbms/admin/preupgrd.sqlSQL> ALTER SESSION DISABLE GUARD;SQL> @/u01/app/oracle/product/18.3.0.0/db_1/rdbms/admin/olspreupgrade.sql

Lab Extra 6.2: Low Downtime Upgrade

Page 139: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

139

Na máquina nerv02, pare o LISTENER.

Prepare a máquina nerv02 para o UPGRADE.$ cp $ORACLE_HOME/dbs/spfilePROD.ora /u01/app/oracle/product/18.3.0.0/db_1/dbs/spfilePROD.ora$ cp $ORACLE_HOME/dbs/orapwPROD /u01/app/oracle/product/18.3.0.0/db_1/dbs/orapwPROD$ cp $ORACLE_HOME/network/admin/listener.ora /u01/app/oracle/product/18.3.0.0/db_1/network/admin/listener.ora$ cp $ORACLE_HOME/network/admin/tnsnames.ora/u01/app/oracle/product/18.3.0.0/db_1/network/admin/tnsnames.ora

Altere as variáveis de ambiente para o 18c.[oracle@nerv01 ~]$ source /home/oracle/.bash_profile

Corrija o listener.ora do novo ORACLE_HOME e inicie-o.

Lab Extra 6.3: Low Downtime Upgrade

Page 140: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

140

Na máquina nerv02, execute o UPGRADE.SQL> STARTUP UPGRADE$ cd $ORACLE_HOME/rdbms/admin$ $ORACLE_HOME/perl/bin/perl catctl.pl -n 4 catupgrd.sqlSQL> @/u01/app/oracle/cfgtoollogs/PROD/preupgrade/postupgrade_fixups.sqlSQL> EXECUTE DBMS_STATS.GATHER_FIXED_OBJECTS_STATS;SQL> @/u01/app/oracle/product/18.3.0.0/db_1/rdbms/admin/utlu121s.sqlSQL> @/u01/app/oracle/product/18.3.0.0/db_1/rdbms/admin/utlrp.sqlSQL> @/u01/app/oracle/product/18.3.0.0/db_1/rdbms/admin/utluiobj.sql

Na máquina nerv02, corrija o arquivo listener.ora e inicie o LISTENER.

Execute o script para executar o SWITCHOVER para a máquina nerv02.$./physru.sh SYS PROD STANDBY PROD STANDBY 18.3.0.0.0

Lab Extra 6.4: Low Downtime Upgrade

Page 141: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

141

Na máquina nerv01, pare o LISTENER.

Prepare a máquina nerv01 para o UPGRADE.$ cp $ORACLE_HOME/dbs/spfilePROD.ora /u01/app/oracle/product/18.3.0.0/db_1/dbs/spfilePROD.ora$ cp $ORACLE_HOME/dbs/orapwPROD /u01/app/oracle/product/18.3.0.0/db_1/dbs/orapwPROD$ cp $ORACLE_HOME/network/admin/listener.ora /u01/app/oracle/product/18.3.0.0/db_1/network/admin/listener.ora$ cp $ORACLE_HOME/network/admin/tnsnames.ora/u01/app/oracle/product/18.3.0.0/db_1/network/admin/tnsnames.ora

Altere as variáveis de ambiente para o 18c.[oracle@nerv01 ~]$ source /home/oracle/.bash_profile

Corrija o listener.ora do novo ORACLE_HOME e inicie-o.

Na máquina nerv01, abra o banco de dados em MOUNT.

Execute o script para executar o SWITCHOVER para a máquina nerv01.$./physru.sh SYS PROD STANDBY PROD STANDBY 18.3.0.0.0

Lab Extra 6.5: Low Downtime Upgrade

Page 142: Oracle Data Guard 18c - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/ODG-18c.pdf · 2 Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com

142

Fim

Ricardo Portilho Proni [email protected] Nerv Informática Ltda. Esta obra está licenciada sob a licença Creative Commons Atribuição-SemDerivados 3.0 Brasil. Para ver uma cópia desta licença, visite http://creativecommons.org/licenses/by-nd/3.0/br/.