• Nenhum resultado encontrado

Oracle Data Guard. Ricardo Portilho Proni

N/A
N/A
Protected

Academic year: 2021

Share "Oracle Data Guard. Ricardo Portilho Proni"

Copied!
126
0
0

Texto

(1)

Oracle Data Guard

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

(3)

3

• Confiança

• Recuperabilidade

• Detecção de erros em tempo hábil

• Continuidade operacional

(4)

4

• 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)

(5)

5

• Camada 1 (Faturamento, Vendas)

• Camada 2 (Compras, Estoque)

• Camada 3 (BI, Desenvimento)

(6)

6

• 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)

(7)

7

(8)

8

• 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

(9)

9

• 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

(10)

10

• 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

(11)

11

High Availability Overview:

http://www.oracle.com/pls/db112/to_toc?pathname=server.112/e17157/toc.htm

High Availability Best Practices:

http://www.oracle.com/pls/db112/to_toc?pathname=server.112/e10803/toc.htm

(12)

12

(13)

13

• 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

(14)

14

• 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

• Data Guard: 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

(15)

15

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

(16)

16

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

(17)

17

(18)

18

Primary database

Physical standby database

Logical standby database

Snapshot Standby Database

(19)

19

Redo Transport Services

Apply Services

Role Transitions

(20)

20

Switchover

Switchback

Failover

Reinstate

Convert

Role Transitions

(21)

21

Enterprise Manager / Grid Control / Cloud Control

DGMGRL

SQL*Plus

Initialization Parameters

(22)

22

Maximum Performance

Maximum Availability

Maximum Protection

(23)

23

Oracle RAC

Flashback Database

RMAN

(24)

24

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.

(25)

25

(26)

26

Na máquina

nerv01

, crie um banco de dados com o nome “SeuNome01”.

$ dbca -silent -createDatabase -templateName New_Database.dbt -gdbName TERRA01 -sysPassword Nerv2014 -systemPassword Nerv2014 -characterset WE8ISO8859P1 -nationalCharacterSet AL16UTF16 -emConfiguration NONE -databaseType OLTP

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.

(27)

27

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> SQL ‘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?

(28)

28

Na máquina

nerv01

, verifique os ARCHIVED REDO LOGs gerados antes e depois do

BACKUP DATABASE.

RMAN> LIST ARCHIVELOG ALL;

Na máquina

nerv01

, copie os ARCHIVED REDO LOGs para a máquina

nerv02

, para qualquer

diretório.

E se não houver ARCHIVED REDO LOGs?

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> SQL 'ALTER DATABASE OPEN READ ONLY';

(29)

29

Na máquina

nerv01

, gere mais ARCHIVED REDO LOGs

RMAN> SQL 'ALTER SYSTEM SWITCH LOGFILE'; RMAN> SQL 'ALTER SYSTEM SWITCH LOGFILE'; RMAN> SQL 'ALTER SYSTEM SWITCH LOGFILE'; RMAN> SQL 'ALTER SYSTEM SWITCH LOGFILE'; RMAN> SQL '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

.

RMAN> LIST ARCHIVELOG ALL;

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> SQL 'ALTER DATABASE OPEN READ ONLY';

(30)

30

(31)

31

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.

(32)

32

COMPATIBLE (Todos)

CONTROL_FILE_RECORD_KEEP_TIME (Todos)

CONTROL_FILES (Todos)

DB_FILE_NAME_CONVERT (Physical Standby, Snapshot Standby)

DB_UNIQUE_NAME (Todos)

FAL_CLIENT (Physical Standby, Snapshot Standby) Obsolete

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_LOCAL_FIRST (Primary, Snapshot Standby) Obsolete

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_ARCHIVE_DEST (Physical Standby, Logical Standby, Snapshot Standby) Obsolete

STANDBY_FILE_MANAGEMENT (Primary, Physical Standby, Snapshot Standby)

(33)

33

AFFIRM / NOAFFIRM

ALTERNATE

COMPRESSION

DB_UNIQUE_NAME

DELAY

LOCATION and SERVICE

MANDATORY

MAX_CONNECTIONS

MAX_FAILURE

NET_TIMEOUT

NOREGISTER

REOPEN

SYNC / ASYNC

TEMPLATE

VALID_FOR

LOG_ARCHIVE_DEST_n

(34)

34

(35)

35

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

.

TERRA01=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=nerv01) (PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=TERRA01)(SERVER=DEDICATED))) TERRA02=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=nerv02) (PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=TERRA02)(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.

(36)

36

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=(TERRA01,TERRA02)'; SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_1= 'LOCATION=/home/oracle/archives/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=TERRA01';

SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_2=

'SERVICE=TERRA02 ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=TERRA02';

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.

(37)

37

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=TERRA02 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=TERRA02';

SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_2= '’; SQL> ALTER SYSTEM SET FAL_SERVER=TERRA01;

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.

(38)

38

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.

(39)

39

Modo ARCHIVELOG.

FORCE LOGGING.

Resolução de nomes bilateral.

Resolução de SQL*Net bilateral.

Autenticação via PASSWORD FILE.

Adequação de parâmetros no PRIMARY.

Adequação de parâmetros no STANDBY.

Criação e cópia de STANDBY CONTROLFILE.

Backup e Restore.

No Physical Standby, MOUNT em modo STANDBY DATABASE.

Criação de STANDBY REDO LOGs.

No Physical Standby, execução de RECOVER MANAGED STANDBY.

(40)

40

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;

(41)

41

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.

(42)

42

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.

(43)

43

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.

(44)

44

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.

$ scp -Cr /u01/app/oracle/fast_recovery_area/* nerv02:/u01/app/oracle/fast_recovery_area/

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/Nerv2014@TERRA02

RMAN> DUPLICATE TARGET DATABASE FOR STANDBY DORECOVER NOFILENAMECHECK;

(45)

45

Na máquina

nerv02

, altere os seguintes parâmetros.

SQL> ALTER SYSTEM SET DB_UNIQUE_NAME=TERRA02 SCOPE=SPFILE;

SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_1= 'LOCATION=/home/oracle/archives/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=TERRA02' SCOPE=SPFILE; SQL> ALTER SYSTEM SET FAL_SERVER=TERRA01 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.

(46)

46

Na máquina

nerv02

, passe a instância ao estágio SHUTDOWN.

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/Nerv2014@TERRA02

RMAN> DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE DORECOVER NOFILENAMECHECK;

(47)

47

Na máquina

nerv02

, altere os seguintes parâmetros.

SQL> ALTER SYSTEM SET DB_UNIQUE_NAME=TERRA02 SCOPE=SPFILE;

SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_1= 'LOCATION=/home/oracle/archives/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=TERRA02' SCOPE=SPFILE; SQL> ALTER SYSTEM SET FAL_SERVER=TERRA01 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

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

(48)

48

(49)

49

Maximum Performance (NOAFFIRM, ASYNC)

Maximum Availability (AFFIRM, SYNC)

Maximum Protection (AFFIRM, SYNC)

(50)

50

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 ('/u01/app/oracle/oradata/TERRA01/redoSTB01.log') SIZE 52428800;

SQL> ALTER DATABASE ADD STANDBY LOGFILE ('/u01/app/oracle/oradata/TERRA01/redoSTB02.log') SIZE 52428800;

SQL> ALTER DATABASE ADD STANDBY LOGFILE ('/u01/app/oracle/oradata/TERRA01/redoSTB03.log') SIZE 52428800;

SQL> ALTER DATABASE ADD STANDBY LOGFILE ('/u01/app/oracle/oradata/TERRA01/redoSTB04.log') SIZE 52428800;

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

(51)

51

Na máquina

nerv01

, verifique qual o PROTECTION MODE atual.

SQL> SELECT PROTECTION_MODE FROM V$DATABASE;

Na máquina

nerv01

, crie uma tabela de testes e duplique-a 8 vezes, contando o tempo.

SQL> SET TIMING ON

SQL> CREATE TABLE T AS SELECT * FROM ALL_OBJECTS; SQL> INSERT INTO T SELECT * FROM T;

SQL> INSERT INTO T SELECT * FROM T; SQL> INSERT INTO T SELECT * FROM T; SQL> INSERT INTO T SELECT * FROM T; SQL> INSERT INTO T SELECT * FROM T; SQL> INSERT INTO T SELECT * FROM T; SQL> INSERT INTO T SELECT * FROM T; SQL> INSERT INTO T SELECT * FROM T; SQL> COMMIT;

(52)

52

Na máquina

nerv01

, altere o PROTECTION MODE.

SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_2=

'SERVICE=TERRA02 SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=TERRA02';

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

, remova a tabela teste e refaça o teste, comparando o tempo.

SQL> SET TIMING ON

SQL> DROP TABLE T;

SQL> CREATE TABLE T AS SELECT * FROM ALL_OBJECTS; SQL> INSERT INTO T SELECT * FROM T;

SQL> INSERT INTO T SELECT * FROM T; SQL> INSERT INTO T SELECT * FROM T; SQL> INSERT INTO T SELECT * FROM T; SQL> INSERT INTO T SELECT * FROM T; SQL> INSERT INTO T SELECT * FROM T; SQL> INSERT INTO T SELECT * FROM T; SQL> INSERT INTO T SELECT * FROM T; SQL> COMMIT;

(53)

53

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

, remova a tabela teste e refaça o teste, comparando o tempo.

SQL> SET TIMING ON

SQL> DROP TABLE T;

SQL> CREATE TABLE T AS SELECT * FROM ALL_OBJECTS; SQL> INSERT INTO T SELECT * FROM T;

SQL> INSERT INTO T SELECT * FROM T; SQL> INSERT INTO T SELECT * FROM T; SQL> INSERT INTO T SELECT * FROM T; SQL> INSERT INTO T SELECT * FROM T; SQL> INSERT INTO T SELECT * FROM T; SQL> INSERT INTO T SELECT * FROM T; SQL> INSERT INTO T SELECT * FROM T; SQL> COMMIT;

(54)

54

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> DROP TABLE T;

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=TERRA02 ASYNC NOAFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=TERRA02';

SQL> ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE;

Por que não funciona?

Altere o modo de proteção para MAXIMIZE PERFORMANCE.

Depois, reinicie a máquina nerv02 e o RECOVER.

(55)

55

(56)

56

Na máquina

nerv01

, altere os seguintes parâmetros.

SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO; SQL> ALTER SYSTEM SET FAL_SERVER=TERRA02;

Na máquina

nerv02

, altere os seguintes parâmetros.

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

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> SHUTDOWN ABORT; 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;

(57)

57

Na máquina

nerv01

, inicie o RECOVER como um STANDBY.

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

Na máquina

nerv01

, adicione STANDBY REDO LOGs.

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

SQL> ALTER DATABASE ADD STANDBY LOGFILE ('/u01/app/oracle/oradata/TERRA01/redoSTB01.log') SIZE 52428800;

SQL> ALTER DATABASE ADD STANDBY LOGFILE ('/u01/app/oracle/oradata/TERRA01/redoSTB02.log') SIZE 52428800;

SQL> ALTER DATABASE ADD STANDBY LOGFILE ('/u01/app/oracle/oradata/TERRA01/redoSTB03.log') SIZE 52428800;

SQL> ALTER DATABASE ADD STANDBY LOGFILE ('/u01/app/oracle/oradata/TERRA01/redoSTB04.log') SIZE 52428800;

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

Na máquina

nerv02

, gere alguns ARCHIVED REDO LOGs e acompanhe o Alert Log.

(58)

58

(59)

59

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> SHUTDOWN ABORT; 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.

(60)

60

(61)

61

Na máquina

nerv01

, habilite o FLASHBACK (necessário para o REINSTATE).

SQL> SHUTDOWN IMMEDIATE; SQL> STARTUP MOUNT;

SQL> ALTER DATABASE FLASHBACK ON; SQL> ALTER DATABASE OPEN;

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;

(62)

62

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;

(63)

63

(64)

64

Na máquina

nerv01

, volte a um SCN mais antigo que o FAILOVER.

SQL> STARTUP;

SQL> SHUTDOWN IMMEDIATE; SQL> STARTUP MOUNT;

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;

Por que não funciona?

Depois de concluir o Reinstate, execute o Switchback.

Lab 11.1: Reinstate

(65)

65

(66)

66

(67)

67

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.

(68)

68

BFILE

Collections (VARRAYS, Nested Tables)

Multimedia data types (Spatial, Image, Oracle Text)

ROWID, UROWID

User-defined types

XMLType (Object Relational)

Binary XML

(69)

69

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

(70)

70

SQL> EXECUTE DBMS_LOGSTDBY.SKIP (STMT => 'DML', SCHEMA_NAME => 'HR',

OBJECT_NAME => 'EMPLOYEES');

SQL> EXECUTE DBMS_LOGSTDBY.SKIP (STMT => 'SCHEMA_DDL', SCHEMA_NAME => 'HR',

OBJECT_NAME => 'EMPLOYEES');

SQL> EXECUTE DBMS_LOGSTDBY.UNSKIP(STMT => 'DML', SCHEMA_NAME => 'HR',

OBJECT_NAME => 'EMPLOYEES');

SQL> EXECUTE DBMS_LOGSTDBY.UNSKIP(STMT => 'SCHEMA_DDL', SCHEMA_NAME =>

'HR', OBJECT_NAME => 'EMPLOYEES');

(71)

71

SQL> ALTER DATABASE STOP LOGICAL STANDBY APPLY;

SQL> ALTER SESSION DISABLE GUARD;

SQL> CREATE INDEX EMP_SOUNDEX ON SCOTT.EMP(SOUNDEX(ENAME));

SQL> ALTER SESSION ENABLE GUARD;

SQL> ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;

(72)

72

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

(73)

73

(74)

74

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 (TERRA03) para a instância da

máquina

nerv03

.

Na máquina

nerv01

, copie o tnsnames.ora para a máquina

nerv03

.

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

nerv03

.

Na máquina

nerv03

, corrija o listener.ora, e inicie o LISTENER.

Na máquina

nerv01

, copie o PASSWORD FILE para a máquina

nerv03

.

Na máquina

nerv03

, crie um diretório para armazenar ARCHIVED REDO LOGs.

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

Por que não funciona?

(75)

75

Na máquina

nerv01

, copie o SPFILE para a máquina

nerv03

.

Na máquina

nerv03

, crie todos os diretórios mencinados em parâmetros do SPFILE.

Na máquina

nerv03

, reinicie a instância, deixando-a em estado NOMOUNT.

SQL> STARTUP NOMOUNT;

SQL> ALTER SYSTEM SET SERVICE_NAMES=TERRA03 SCOPE=SPFILE; SQL> ALTER SYSTEM SET DB_UNIQUE_NAME=TERRA03 SCOPE=SPFILE; SQL> SHUTDOWN IMMEDIATE;

SQL> STARTUP NOMOUNT;

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

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

SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_3='LOCATION=/home/oracle/archives_stb/ VALID_FOR=(STANDBY_LOGFILES,STANDBY_ROLE) DB_UNIQUE_NAME=TERRA03';

SQL> ALTER SYSTEM SET FAL_SERVER=TERRA01;

(76)

76

Na máquina

nerv01

, conecte-se com RMAN das duas instâncias e execute a duplicação.

$ rman TARGET / AUXILIARY=SYS/Nerv2014@TERRA03

RMAN> DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE DORECOVER NOFILENAMECHECK;

Na máquina

nerv01

, habilite o terceiro local de archives.

SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_3='SERVICE=TERRA03 ASYNC NOAFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=TERRA03';

Por que não funciona?

Na máquina

nerv03

, habilite o RECOVER e espere a instância estar sincronizada.

SQL> SHUTDOWN IMMEDIATE;

SQL> STARTUP NOMOUNT;

SQL> ALTER DATABASE MOUNT STANDBY DATABASE;

SQL> ALTER DATABASE ADD STANDBY LOGFILE ('/u01/app/oracle/oradata/TERRA01/redoSTB01.log') SIZE 52428800;

SQL> ALTER DATABASE ADD STANDBY LOGFILE ('/u01/app/oracle/oradata/TERRA01/redoSTB02.log') SIZE 52428800;

SQL> ALTER DATABASE ADD STANDBY LOGFILE ('/u01/app/oracle/oradata/TERRA01/redoSTB03.log') SIZE 52428800;

SQL> ALTER DATABASE ADD STANDBY LOGFILE ('/u01/app/oracle/oradata/TERRA01/redoSTB04.log') SIZE 52428800;

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

(77)

77

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.

(78)

78

Na máquina

nerv01

, crie uma tabela de teste.

$ sqlplus / AS SYSDBA SQL> DROP TABLE T;

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?

(79)

79

(80)

80

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 banco de dados está acessível para leitura.

SQL> CONN SCOTT/TIGER

SQL> SELECT COUNT(*) FROM T;

Na máquina

nerv01

, faça uma alteração na tabela de testes.

SQL> CONN SCOTT/TIGER

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.

SQL> CONN SCOTT/TIGER

SQL> SELECT COUNT(*) FROM T;

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;

(81)

81

Na máquina

nerv02

, verifique que a alteração agora foi feita.

SQL> CONN SCOTT/TIGER

SQL> SELECT COUNT(*) FROM T;

(82)

82

(83)

83

Vantagen

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.

(84)

84

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;

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.

SQL> CONN SCOTT/TIGER

SQL> SELECT COUNT(*) FROM T; SQL> TRUNCATE TABLE T;

SQL> SELECT COUNT(*) FROM T;

Na máquina

nerv02

, reverta o SNAPSHOT STANDBY para PHYSICAL STANDBY.

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;

(85)

85

Na máquina

nerv02

, verifique que a alteração agora foi feita.

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL; SQL> ALTER DATABASE OPEN;

SQL> CONN SCOTT/TIGER

SQL> SELECT COUNT(*) FROM T;

Na máquina

nerv02

, retorne a aplicação de ARCHIVEs.

SQL> SHUTDOWN IMMEDIATE;

SQL> STARTUP NOMOUNT;

SQL> ALTER DATABASE MOUNT STANDBY DATABASE;

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

(86)

86

(87)

87

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

.

Por que não funciona?

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

.

Na máquina

nerv01

, faça uma alteração na tabela de testes e veja se é propagada para a

máquina

nerv03

.

Volte à configuração anterior, sem o Cascaded Standby.

Na máquina

nerv01

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

nerv03

.

(88)

88

(89)

89

(90)

90

(91)

91

(92)

92

(93)

93

Habilite o FLASHBACK DATABASE em todos os bancos de dados.

Adicione uma entrada estática para o Data Guard Broker no listener.ora de cada máquina.

LISTENER =

(DESCRIPTION_LIST = (DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = nerv01.localdomain)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = TERRA01_DGMGRL) (ORACLE_HOME = /u01/app/oracle/product/11.2.0.4/db_1) (SID_NAME = TERRA01) ) ) ADR_BASE_LISTENER = /u01/app/oracle

(94)

94

Na máquina

nerv01

, habilite o Data Guard Broker.

[oracle@nerv01 ~]$ dgmgrl SYS/Nerv2014@TERRA01

DGMGRL> CREATE CONFIGURATION 'DRSolution' AS PRIMARY DATABASE IS TERRA01 CONNECT IDENTIFIER IS TERRA01;

Por que não funciona?

Na máquina

nerv01

, adicione as outras máquinas da configuração.

DGMGRL> ADD DATABASE TERRA02 AS CONNECT IDENTIFIER IS TERRA02; DGMGRL> ADD DATABASE TERRA03 AS CONNECT IDENTIFIER IS TERRA03;

Na máquina

nerv01

, verifique a configuração.

DGMGRL> SHOW CONFIGURATION;

Na máquina

nerv01

, habilite a configuração.

DGMGRL> ENABLE CONFIGURATION;

Na máquina

nerv01

, verifique a configuração.

DGMGRL> SHOW CONFIGURATION;

(95)

95

Na máquina

nerv01

, verifique detalhes de um banco de dados.

DGMGRL> SHOW DATABASE VERBOSE TERRA01;

DGMGRL> EDIT DATABASE TERRA01 SET PROPERTY 'ArchiveLagTarget'=1200; DGMGRL> SHOW DATABASE TERRA01 'ArchiveLagTarget';

Na máquina

nerv01

, altere o Protection Mode.

DGMGRL> EDIT DATABASE TERRA02 SET PROPERTY 'LogXptMode'='SYNC'; DGMGRL> EDIT DATABASE TERRA03 SET PROPERTY 'LogXptMode'='SYNC';

Você pode alterar estes parâmetros com ALTER SYSTEM SET?

DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS MAXAVAILABILITY;

Na máquina

nerv01

, verifique se o Protection Mode foi alterado.

DGMGRL> SHOW CONFIGURATION;

(96)

96

Na máquina

nerv01

, simule uma manutenção do ambiente.

DGMGRL> EDIT DATABASE TERRA03 SET STATE='APPLY-OFF'; DGMGRL> EDIT DATABASE TERRA02 SET STATE='APPLY-OFF';

DGMGRL> EDIT DATABASE TERRA01 SET STATE=TRANSPORT-OFF;

Por que não funciona?

Na máquina

nerv01

, simule o fim da manutenção do ambiente.

DGMGRL> EDIT DATABASE TERRA01 SET STATE=TRANSPORT-ON; DGMGRL> EDIT DATABASE TERRA03 SET STATE='APPLY-ON';

DGMGRL> EDIT DATABASE TERRA02 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;

(97)

97

Na máquina

nerv01

, se não tiver nenhum erro, execute Switchover para a máquina

nerv02

.

DGMGRL> SHOW CONFIGURATION;

DGMGRL> SWITCHOVER TO TERRA02;

Na máquina

nerv01

, se não tiver nenhum erro, execute Switchover para a máquina

nerv01

.

DGMGRL> SHOW CONFIGURATION;

DGMGRL> SWITCHOVER TO TERRA01;

Na máquina

nerv01

, se não tiver nenhum erro, execute Switchover para a máquina

nerv03

.

DGMGRL> SHOW CONFIGURATION;

DGMGRL> SWITCHOVER TO TERRA03;

Por que não funciona?

Na máquina

nerv01

, se não tiver nenhum erro, execute Switchover para a máquina

nerv01

.

DGMGRL> SHOW CONFIGURATION;

DGMGRL> SWITCHOVER TO TERRA01;

O que aconteceu?

Para corrigir, recrie o Physical Standby na máquina, nerv02, e a reabilite no Broker.

DGMGRL> REMOVE DATABASE TERRA02;

DGMGRL> ADD DATABASE TERRA02 AS CONNECT IDENTIFIER IS TERRA02; DGMGRL> ENABLE DATABASE TERRA02;

(98)

98

A partir da máquina

nerv01

, converta o banco de dados da máquina

nerv02

para SNAPSHOT

STANDBY.

[oracle@nerv01 ~]$ dgmgrl SYS/Nerv2014@TERRA02

DGMGRL> CONVERT DATABASE TERRA02 TO SNAPSHOT STANDBY;

Na máquina

nerv01

, se não tiver nenhum erro, execute Switchover para a máquina

nerv02

.

DGMGRL> SWITCHOVER TO TERRA02;

Por que não funciona?

Converta o banco de dados da máquina

nerv02

de volta para PHYSICAL STANDBY.

DGMGRL> CONVERT DATABASE TERRA02 TO PHYSICAL STANDBY;

(99)

99

Na máquina

nerv01

, simule uma indisponibilidade não planejada.

SQL> SHUTDOWN ABORT;

Na máquina

nerv02

, execute FAILOVER para a máquina

nerv02

.

[oracle@nerv02 ~]$ dgmgrl SYS/Nerv2014@TERRA02

DGMGRL> FAILOVER TO TERRA02; DGMGRL> SHOW CONFIGURATION;

Reative a instância na máquina

nerv01

.

EXECUTE o REISNTATE do banco da máquina

nerv01

.

DGMGRL> REINSTATE DATABASE TERRA01;

EXECUTE o REISNTATE do banco da máquina

nerv03

.

DGMGRL> REINSTATE DATABASE TERRA03;

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

nerv01

.

(100)

100

(101)

101

(102)

102

Lights out administration

Produção:

srvctl add service -d TERRA01 -s OLTP -l PRIMARY -w 1 -z 10

srvctl add service -d TERRA01 -s OLAP -l PHYSICAL_STANDBY -w 1 -z 10

Standby:

srvctl add service -d TERRA02 -s OLTP -l PRIMARY -w 1 -z 10

srvctl add service -d TERRA02 -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:

(103)

103

Confira se os bancos da máquina

nerv01

e

nerv02

estão com FLASHBACK ativado.

Na máquina

nerv01

, configure o Fast-Start Failover.

DGMGRL> 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 TERRA01 SET PROPERTY FastStartFailoverTarget=TERRA02; DGMGRL> ENABLE FAST_START FAILOVER;

DGMGRL> SHOW CONFIGURATION;

DGMGRL> SHOW FAST_START FAILOVER;

Copie o tnsnames.ora da máquina

nerv01

para o Client na máquina

nerv04

.

Na máquina

nerv04

, conecte-se na máquina

nerv02

e inicie o OBSERVER.

oracle@nerv04 ~]$ dgmgrl SYS/Nerv2014@TERRA02

DGMGRL> START OBSERVER;

(104)

104

Na máquina

nerv01

, simule uma indisponibilidade não planejada.

SQL> SHUTDOWN ABORT;

Inicie novamente a instância da máquina

nerv01

.

Execute o SWITCHOVER de volta para a máquina

nerv01

.

Verifique a View V$FS_FAILOVER_STATS.

(105)

105

Na máquina

nerv01

, verifique as condições de Fast-Start Failover:

DGMGRL> SHOW FAST_START FAILOVER;

Habilite mais uma condição.

DGMGRL> ENABLE FAST_START FAILOVER CONDITION "Stuck Archiver"

Simule a condição de falha de gravação de ARCHIVEs.

SQL> ALTER SYSTEM SET log_archive_dest_1='LOCATION=/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=TERRA01';

SQL> ALTER SYSTEM SWITCH LOGFILE;

Após o FAILOVER, inicie novamente a instância da máquina

nerv01

.

SQL> STARTUP NOMOUNT;

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

Execute o REINSTATE através do Data Guard Broker.

Execute o SWITCHOVER de volta para a máquina

nerv01

.

Desabilite o Fast-Start Failover.

Pare o OBSERVER.

(106)

106

Referências

Documentos relacionados

Possibilitando assim o desenvolvimento de ações educativas, quebrando um preconceito quanto à sexualidade dos idosos e os informar quando à incidência das DSTs

Esta proposta visa à certificação da soja proveniente de sistemas de produção em SPD e que adotem técnicas ou práticas que contribuam para a redução das emissões de

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

Explicação: todos os grupos de Redo Logs foram utilizados e ainda são necessários para um eventual Recover, pois o DBWR ainda não gravou os blocos alterados nos Datafiles.

„ DBW0: Grava dados alterados do DATA BUFFER CACHE nos DATA FILES. „ LGWR: Grava os dados registrados no REDO LOG BUFFER nos REDO

- Se for um Cluster de Failover (não é o Oracle Data Guard), onde o Banco de Dados é um só, que pode ser acessado por apenas uma máquina de cada vez (ele não é copiado), como por

log buffer space log file parallel write log file single write log file switch. log

A Companhia classifica seus investimentos entre investimentos avaliados por equivalência patrimonial e outros investimentos. Os investimentos são mensurados e registrados