• Nenhum resultado encontrado

Oracle Data Guard 18c Em Oracle Enterprise Edition RU Em Oracle Enterprise Linux 7.6 Inclui CDB Architecture

N/A
N/A
Protected

Academic year: 2021

Share "Oracle Data Guard 18c Em Oracle Enterprise Edition RU Em Oracle Enterprise Linux 7.6 Inclui CDB Architecture"

Copied!
142
0
0

Texto

(1)

Oracle Data Guard 18c

Em Oracle Enterprise Edition RU 18.4.0.0

Em Oracle Enterprise Linux 7.6

Inclui CDB Architecture

Ricardo Portilho Proni

ricardo@nervinformatica.com.br

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/.

(2)

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?

(3)

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

(4)

4

glogin.sql

$ cat $ORACLE_HOME/sqlplus/admin/glogin.sql SET PAGESIZE 1000 SET LINESIZE 220 SET TIMING ON SET TIME ON

SET SQLPROMPT '&_user@&_connect_identifier> ' DEFINE _EDITOR=vi

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

1

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

(5)

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)

(6)

6

Implantação de Alta Disponibilidade

(7)

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

(8)

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

(9)

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

(10)

10

High Availability Overview

http://docs.oracle.com/database/122/HAOVW/toc.htm

High Availability Best Practices

https://docs.oracle.com/database/121/HABPT/toc.htm

Data Guard Concepts and Administration

http://docs.oracle.com/en/database/oracle/oracle-database/18/sbydb/index.html

Data Guard Broker

http://docs.oracle.com/en/database/oracle/oracle-database/18/dgbkr/index.html

Global Data Services Concepts and Administration Guide

http://docs.oracle.com/en/database/oracle/oracle-database/18/gsmug/index.html

Oracle Sharding

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

(11)

11

(12)

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

(13)

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

(14)

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

(15)

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

(16)

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

(17)

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

(18)

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.

(19)

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.

(20)

20

(21)

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)

(22)

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.

(23)

23

Physical x Logical

(24)

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.

(25)

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

(26)

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

(27)

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.

(28)

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 sysdba SQL> 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/

(29)

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?

(30)

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=TERR SQL> STARTUP NOMOUNT

Por 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

(31)

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@TERR02

RMAN> 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;

(32)

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.

(33)

33

(34)

34

Modos de Proteção

(35)

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.

(36)

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

(37)

37

Lab 2.3: Modos de Proteção

(38)

38

Lab 2.4: Modos de Proteção

(39)

39

Lab 2.5: Modos de Proteção

(40)

40

Lab 2.6: Modos de Proteção

(41)

41

Lab 2.7: Modos de Proteção

(42)

42

Lab 2.8: Modos de Proteção

(43)

43

Lab 2.9: Modos de Proteção

(44)

44

Lab 2.10: Modos de Proteção

(45)

45

Lab 2.11: Modos de Proteção

(46)

46

Lab 2.12: Modos de Proteção

(47)

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

(48)

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

(49)

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

(50)

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.

(51)

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;

(52)

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.

(53)

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.

(54)

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.

(55)

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;

(56)

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;

(57)

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

(58)

58

Logical Standby

(59)

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.

(60)

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

(61)

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

(62)

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

(63)

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 SYSDBA

SQL> SELECT OPEN_MODE FROM V$DATABASE;

(64)

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?

(65)

65

Na máquina

nerv03

, habilite o RECOVER

SQL> 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.

(66)

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.

(67)

67

Na máquina

nerv01

, crie uma tabela de teste.

$ rlwrap sqlplus / AS SYSDBA

SQL> 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 SYSDBA

SQL> 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@TERRP

Por que não funciona?

SQL> CREATE TABLE T AS SELECT * FROM ALL_OBJECTS;

Na máquina

nerv03

, confira a tabela criada.

$ rlwrap sqlplus / AS SYSDBA

SQL> 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);

(68)

68

Na máquina

nerv03

, crie um índice.

$ rlwrap sqlplus / as sysdba

SQL> 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 SYSDBA

SQL> ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;

(69)

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 SYSDBA

SQL> SHOW PDBS

SQL> ALTER PLUGGABLE DATABASE TERRP OPEN READ ONLY; SQL> SHOW PDBS

SQL> 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@TERRP

SQL> 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 SYSDBA

SQL> ALTER SESSION SET CONTAINER = TERRP; SQL> SELECT COUNT(*) FROM SCOTT.T;

Por que não funciona?

(70)

70

Na máquina

nerv02

, inicie o RECOVER, com o banco de dados para leitura.

SQL> CONN / AS SYSDBA

SQL> 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 SYSDBA

SQL> ALTER SESSION SET CONTAINER = TERRP; SQL> SELECT COUNT(*) FROM SCOTT.T;

Por que não funciona?

(71)

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.

(72)

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 SYSDBA

SQL> 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 SYSDBA

SQL> 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;

(73)

73

Na máquina

nerv02

, verifique que a alteração foi desfeita.

$ rlwrap sqlplus / AS SYSDBA

SQL> 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 SYSDBA

SQL> SHUTDOWN IMMEDIATE; SQL> STARTUP NOMOUNT;

SQL> ALTER DATABASE MOUNT STANDBY DATABASE;

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

(74)

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

.

(75)

75

(76)

76

Far Sync

(77)

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.

(78)

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

(79)

79

Na máquina

nerv04

, habilite a replicação para a máquina

nerv02

.

$ export ORACLE_SID=TERR

$ rlwrap sqlplus / AS SYSDBA SQL> 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

(80)

80

Data Guard Broker

(81)

81

Data Guard Broker

(82)

82

Componentes Data Guard Broker

(83)

83

Bystander Standby Databases

(84)

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

(85)

85

Na máquina

nerv01

, habilite o Data Guard Broker.

$ rlwrap dgmgrl SYS/Nerv2018@TERR

DGMGRL> 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;

(86)

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;

(87)

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;

(88)

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;

(89)

89

A partir da máquina

nerv01

, converta o banco de dados da máquina

nerv02

para SNAPSHOT STANDBY.

$ rlwrap dgmgrl SYS/Nerv2018@TERR02

DGMGRL> 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;

(90)

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@TERR02

DGMGRL> 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

.

Referências

Documentos relacionados

Este white paper resume a Política de suporte de ciclo de vida da Oracle para produtos com tecnologia Oracle (incluindo sua política sobre o suporte a um Oracle

13 Oracle Premier Support Oracle Product Certifications MySQL Enterprise High Availability MySQL Enterprise Security MySQL Enterprise Scalability MySQL Enterprise

Oracle Database 11g: Adm Workshop I Oracle Database 11g: Adm Workshop II Oracle Database 11g: Performance Tuning Oracle Database 10g: SQL Tuning..

Com base nas competências da certificação OCA Oracle Database 12c, a certificação OCP em Oracle Database 12c inclui o conhecimento avançado e capacidades exigidos aos administradores

 Oracle Data Guard Broker Support for Database Rolling Upgrades..  Oracle Scheduler Support for Data Guard Database

Ação de Preparação para Exame 1Z0-061 (Oracle Database 12c: SQL Fundamentals) (3h) Oracle Database 12c: Install and Upgrade Workshop (12h). Oracle Database

Oracle Database Online Documentation 12c Release 1: Database SQL Tuning Guide Managing Optimizer Statistics: Basic

– Alto desempenho de IO de disco (nativo) para cargas de trabalho características de DB – Otimizado, tanto para cargas de trabalho de banco de dados, como de aplicação. • Bancos