Blog do Bruno Murassaki

dezembro 14, 2009

Oracle Data Guard Database 10g Linux

Filed under: Data Guard — brunomurassaki @ 1:27 pm

==============================================================

Olá Pessoal pra fechar o ano de 2009 com chave de ouro, estarei compartilhando minha experiência com Data Guard. Agradecimento ao meu amigo David Ricardo que me ajudou com os materiais e aprendizados do Data Guard. Bom vamos lá, como sabemos existem dois tipos de Standby. O Primeiro seria o Standby Manual que o sincronismo é realizado através de scripts linux não necessitando da Versão Enterprise Edition. Ja o Segundo tipo de Standby é o Data Guard, necessita da Versão Enterprise Edition no qual o sincronismo é realizado através dos Arquivos de Inicialização, do Listener e TNSNAMES. Nesse Post estarei comentando sobre o Data Guard no qual implementei em um ambiente de Produção faz um mês, espero que gostem.

So uma observação este meu How To é na versão database 10g, mas eu fiz testes com a versão 11g e está muito boa pois conseguimos sincronização em modo Read-Only, sim realmente é verdade eu testei rs.

==============================================================

==============================================================

AMBIENTE:

==============================================================

- Banco de Dados: Oracle 10g 10.2.0.4 – Enterprise Edition 

- Sistema Operacional: Red Hat Enterprise 5

- Banco de Dados Produção e Banco de Dados Standby estão localizados em diferentes maquinas em diferentes sites.

- Banco de dados Produção é chamado DB10G e o Standby ST10G.

==============================================================

Database                     DB_UNIQUE_NAME                    Oracle Net Service Name

==============================================================

Primary                               db10g                                         db10g

———————————————————————————————————————————

Physical standby                  st10g                                           st10g

==============================================================

==============================================================

I. PRÉ-REQUISITOS:

==============================================================

1. Garantir que o Sistema Operacional e a Plataforma da Arquitetura do Servidor Produção e Standby são os mesmos.

2. Instalar apenas o Software Oracle no Servidor Standby e Path se necessário.

Garantir o mesma Release do Software Oracle instalado no Servidor Produção e Standby, e caminho do Oracle Home necessitam ser idênticos.

3. Teste a criação do Banco de Dados Standby em um ambiente Teste para depois implementar em um ambiente Produção.

==============================================================

CONFIGURAR HOSTS NO SERVIDOR PRODUÇÃO E STANDBY /ETC/HOSTS

==============================================================

SERVIDOR PRODUÇÃO /ETC/HOSTS

127.0.0.1         localhost.localdomain   localhost

192.168.199.239   db10g.db1.com.br        db10g

192.168.199.241   st10g.db1.com.br        st10g

::1     localhost6.localdomain6 localhost6

SERVIDOR STANDBY /ETC/HOSTS

127.0.0.1       localhost.localdomain   localhost

192.168.199.241 st10g.db1.com.br        st10g

192.168.199.239 db10g.db1.com.br        db10g

::1     localhost6.localdomain6 localhost6

———————————————————————————————————-

CASO NÃO CONFIGURE PODE OCORRER O ERRO ABAIXO:

Warning: ORA-16607: one or more databases have failed

DGMGRL> SHOW DATABASE ‘st10g’ ‘LogXptStatus’;

Error: ORA-12545: Connect failed because target host or object does not exist

———————————————————————————————————-

==============================================================

CONFIGURAR VARIAVEIS DE AMBIENTE NO PRODUÇÃO E STANDBY

==============================================================

#Oracle Settings

TMP=/tmp

TMPDIR=$TMP

TEMP=$TMP

ORACLE_BASE=/oracle/app

export ORACLE_BASE

ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db10g

export ORACLE_HOME

ORACLE_SID=db10g

export ORACLE_SID

ORACLE_TERM=xterm

export ORACLE_TERM

TNS_ADMIN=$ORACLE_HOME/network/admin

export TNS_ADMIN

PATH=$PATH:$ORACLE_HOME/bin:$PATH

LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

export CLASSPATH

export PATH

#LD_ASSUME_KERNEL=2.4.1; export LD_ASSUME_KERNEL

==============================================================

II. CONFIGURAR CONFIGURAR SERVIDOR PRODUÇÃO

==============================================================

Habilitar Forced Logging em seu Banco de Dados Produção:

SQL> ALTER DATABASE FORCE LOGGING;

Database altered.

Veificar se as Tablespaces estão em Modo Logging

SQL> SELECT TABLESPACE_NAME, LOGGING FROM DBA_TABLESPACES;

TABLESPACE_NAME                LOGGING

—————————— ———

SYSTEM                         LOGGING

UNDOTBS1                       LOGGING

SYSAUX                         LOGGING

TEMP                           NOLOGGING

USERS                          LOGGING

EXAMPLE                        LOGGING

KDB1                           LOGGING

DB1LOB                         LOGGING

Criar um arquivo de senha se ele não existir:

Para verificar se um arquivo de senha ja existe, rode o seguinte comando:

SQL> select * from v$pwfile_users;

USERNAME                       SYSDB SYSOP

—————————— —– —–

SYS                            TRUE  TRUE

Se ele não existir, use o seguinte comando para criar um:

cd $ORACLE_HOME/dbs

orapwd file=$ORACLE_HOME/dbs/pwdDB10G.ora PASSWORD=oracle ENTRIES=5

==============================================================

CONFIGURAR REDO LOG STANDBY

==============================================================

O Tamanho dos Arquivos de Redolog do Standby deveria ser compativel com o mesmo tamanho dos redo logs online do Banco de Dados Produção. Para encontrar o tamanho de seus redo log files:

SQL> select bytes from v$log;

BYTES

———-

52428800

52428800

52428800

Use o seguinte comnado para determinar seu grupo de log file corrente:

SQL> select group#, member from v$logfile;

GROUP#                                           MEMBER

——————————————————————————–

3                          /oracle/app/oradata/db10g/redo03.log

2                          /oracle/app/oradata/db10g/redo02.log

1                          /oracle/app/oradata/db10g/redo01.log

==============================================================

CRIAR STANDBY REDO LOG ONLINE:

==============================================================

Meu Banco de dados tem 3 grupos originalmente e Crie 3 Grupos de Redolog online 50M usando o seguinte comando:

SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 SIZE 50M;

Database altered.

SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 SIZE 50M;

Database altered.

SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 SIZE 50M;

Database altered.

==============================================================

VERIFICAR STANDBY REDO LOG ONLINE CRIADO

==============================================================

Para verificar os resultados da criação dos Grupos de Redolog Standby, rode a seguinte Query:

SQL> Select GROUP#, DBID, STATUS, ARCHIVED, BYTES from v$Standby_log;

GROUP# DBID                                     STATUS     ARC      BYTES

———- —————————————- ———- — ———-

4 UNASSIGNED                               UNASSIGNED YES   52428800

5 UNASSIGNED                               UNASSIGNED YES   52428800

6 UNASSIGNED                               UNASSIGNED YES   52428800

==============================================================

ATIVAR ARCHIVELOG SERVIDOR PRODUÇÃO:

==============================================================

Se o seu Banco de Dados não estiver em Modo Archivelog, habilitar em modo archivelog:

#Alterar os parêmetros (caso não esteja setado) log_archive_dest_1 para

#Verificar o formato do achivelog (Obs: apartir do Oracle10g é obrigatorio ter os 3 parametros (%s_%t_%r)

SQL> shutdown immediate;

SQL> startup mount;

SQL> alter system set log_archive_dest_1=’LOCATION=/archivelog/db10g’ scope=spfile;

SQL> alter system set log_archive_format = ‘%t_%s_%r.arc’ scope=spfile;

SQL> alter database archivelog;

==============================================================

ATIVAR LOG DE FLASHBACK NO BANCO DE DADOS PRODUÇÃO. FLASHBACK SERÁ NECESSÁRIO PARA FAST-START FAILOVERS

==============================================================

SQL> alter database flashback on;

SQL> shutdown immediate

SQL> startup

SQL> archive log list;

==============================================================

CRIAR PFILE A PARTIR DO SPFILE:

==============================================================

Criar (PFILE) do Arquivo de Parametro de Servidor(SPFILE),

para adicionar um novo parametro de regras no Banco de Dados Produção.

Criar pfile através do spfile para o Banco de Dados Produção:

SQL> create pfile=’$ORACLE_HOME/dbs/pfileDB10G.ora’ from spfile;

File created.

==============================================================

EDITAR PFILEDB10G.ORA PARA ADICIONAR NOVAS REGRAS DO DATAGUARD NO SERVIDOR PRODUÇÃO:

==============================================================

==================== INIT PRODUÇÃO ==========================

db10g.__db_cache_size=54525952

db10g.__java_pool_size=4194304

db10g.__large_pool_size=4194304

db10g.__shared_pool_size=100663296

db10g.__streams_pool_size=0

audit_file_dest=’/oracle/app/admin/db10g/adump’

background_dump_dest=’/oracle/app/admin/db10g/bdump’

compatible=’10.2.0.3.0′

core_dump_dest=’/oracle/app/admin/db10g/cdump’

db_block_size=8192

db_domain=”

db_file_multiblock_read_count=16

############### Parametros Adicionais Dataguard ########################

DB_NAME=db10g

DB_UNIQUE_NAME=db10g

LOG_ARCHIVE_CONFIG=’DG_CONFIG=(db10g,st10g)’

CONTROL_FILES=’/oracle/app/oradata/db10g/control01.ctl’,'/oracle/app/oradata/db10g/control02.ctl’,'/oracle/app/oradata/db10g/control03.ctl’

LOG_ARCHIVE_DEST_1=

‘LOCATION=/archivelog/db10g/

VALID_FOR=(ALL_LOGFILES,ALL_ROLES)

DB_UNIQUE_NAME=db10g’

LOG_ARCHIVE_DEST_2=

‘SERVICE=st10g LGWR ASYNC

VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)

DB_UNIQUE_NAME=st10g’

LOG_ARCHIVE_DEST_STATE_1=ENABLE

LOG_ARCHIVE_DEST_STATE_2=ENABLE

REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE

LOG_ARCHIVE_FORMAT=%t_%s_%r.arc

LOG_ARCHIVE_MAX_PROCESSES=30

FAL_SERVER=st10g

FAL_CLIENT=db10g

#####################################################################

db_recovery_file_dest=’/oracle/app/flash_recovery_area’

db_recovery_file_dest_size=2147483648

dispatchers=’(PROTOCOL=TCP) (SERVICE=db10gXDB)’

job_queue_processes=10

open_cursors=300

pga_aggregate_target=16777216

processes=150

resumable_timeout=900

sga_target=167772160

undo_management=’AUTO’

undo_tablespace=’UNDOTBS1′

==============================================================

EDITAR PFILEDB10G.ORA PARA ADICIONAR NOVAS REGRAS DO DATAGUARD NO SERVIDOR STANDBY:

==============================================================

==================== INIT STANDBY ============================

db10g.__db_cache_size=54525952

db10g.__java_pool_size=4194304

db10g.__large_pool_size=4194304

db10g.__shared_pool_size=100663296

db10g.__streams_pool_size=0

audit_file_dest=’/oracle/app/admin/db10g/adump’

background_dump_dest=’/oracle/app/admin/db10g/bdump’

compatible=’10.2.0.3.0′

core_dump_dest=’/oracle/app/admin/db10g/cdump’

db_block_size=8192

db_domain=”

db_file_multiblock_read_count=16

############### Parametros Adicionais Dataguard ########################

DB_NAME=db10g

DB_UNIQUE_NAME=st10g

LOG_ARCHIVE_CONFIG=’DG_CONFIG=(db10g,st10g)’

CONTROL_FILES=’/oracle/app/oradata/db10g/control01.ctl’,'/oracle/app/oradata/db10g/control02.ctl’,'/oracle/app/oradata/db10g/control03.ctl’

LOG_ARCHIVE_FORMAT=log%t_%s_%r.arc

LOG_ARCHIVE_DEST_1=

‘LOCATION=/archivelog/db10g/

VALID_FOR=(ALL_LOGFILES,ALL_ROLES)

DB_UNIQUE_NAME=st10g’

LOG_ARCHIVE_DEST_2=

‘SERVICE=db10g LGWR ASYNC

VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)

DB_UNIQUE_NAME=db10g’

LOG_ARCHIVE_DEST_STATE_1=ENABLE

LOG_ARCHIVE_DEST_STATE_2=ENABLE

REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE

STANDBY_FILE_MANAGEMENT=AUTO

FAL_SERVER=db10g

FAL_CLIENT=st10g

#####################################################################

db_recovery_file_dest=’/oracle/app/flash_recovery_area’

db_recovery_file_dest_size=2147483648

dispatchers=’(PROTOCOL=TCP) (SERVICE=db10gXDB)’

job_queue_processes=10

open_cursors=300

pga_aggregate_target=16777216

processes=150

resumable_timeout=900

sga_target=167772160

undo_management=’AUTO’

undo_tablespace=’UNDOTBS1′

==============================================================

CRIAR SPFILE ATRAVÉS DO PFILE ALTERADO

==============================================================

Data Guard deve usar SPFILE. Criar o SPFILE e reiniciar o Banco de Dados.

SQL> shutdown immediate;

SQL> startup nomount pfile=’$ORACLE_HOME/dbs/pfileDB10G.ora’;

ORACLE instance started.

Total System Global Area  167772160 bytes

Fixed Size                  1266392 bytes

Variable Size             109055272 bytes

Database Buffers           54525952 bytes

Redo Buffers                2924544 bytes

SQL> create spfile from pfile=’$ORACLE_HOME/dbs/pfileDB10G.ora’;

File created.

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

==============================================================

CRIAR O CONTROLFILE STANDBY

==============================================================

No Banco de Dados Produção, crie um controlfile para o Banco de Dados Standby Utilizar:

SQL> STARTUP MOUNT;

ORACLE instance started.

Total System Global Area  167772160 bytes

Fixed Size                  1266392 bytes

Variable Size             109055272 bytes

Database Buffers           54525952 bytes

Redo Buffers                2924544 bytes

Database mounted.

SQL> ALTER DATABASE CREATE STANDBY CONTROLFILE AS ‘/installoracle/standby.ctl’;

Database altered.

==============================================================

PARAR O BANCO DE DADOS PRODUÇÃO PARA CÓPIA DOS ARQUIVOS

==============================================================

SQL> SHUTDOWN IMMEDIATE

ORA-01109: database not open

Database dismounted.

ORACLE instance shut down.

==============================================================

PRONTO BANCO DE DADOS PRODUCAO PRONTO PARA A COPIA, BASTA TRANSFERIR OS ARQUIVOS PARA O SERVIDOR STANDBY

==============================================================

==============================================================

III. CONFIGURAR SERVIDOR STANDBY

==============================================================

CRIAR DIRETÓRIOS NECESSÁRIOS

==============================================================

No Servidor Standby, criar todos os diretorios requeridos para dump e directories for dump e detinação dos archived log:

Criar diretorios adump, bdump, cdump, udump, e archived log para o Banco de Dados Standby.

mkdir -p /oracle/app/admin/db10g

mkdir -p /archivelog/db10g/

mkdir -p /oracle/app/oradata/db10g

mkdir -p /oracle/app/admin/db10g/adump

mkdir -p /oracle/app/admin/db10g/bdump

mkdir -p /oracle/app/admin/db10g/cdump

mkdir -p /oracle/app/admin/db10g/dpdump

mkdir -p /oracle/app/admin/db10g/pfile

mkdir -p /oracle/app/admin/db10g/udump

mkdir -p /oracle/app/flash_recovery_area/

chown -R oracle.oinstall /oracle/

chown -R oracle.oinstall /archivelog/

==============================================================

TRANSFERÊNCIA DO BANCO DE DADOS – REPLICA DO PRODUÇÃO

============================================================================================================================

COPIANDO…DATAFILES,TEMPFILES E REDO LOG FILES

==============================================================

[oracle@db10g db10g]$ scp * oracle@192.168.199.241:/oracle/app/oradata/db10g/

oracle@192.168.199.241′s password:

control01.ctl                                                                100% 6992KB   6.8MB/s   00:01

control02.ctl                                                                100% 6992KB   6.8MB/s   00:01

control03.ctl                                                                100% 6992KB   6.8MB/s   00:00

db1lob01.dbf                                                                 100%   30MB  10.0MB/s   00:03

example01.dbf                                                                100%  100MB   9.1MB/s   00:11

kdb101.dbf                                                                   100%  440MB  10.5MB/s   00:42

redo01.log                                                                   100%   50MB   8.3MB/s   00:06

redo02.log                                                                   100%   50MB  10.0MB/s   00:05

redo03.log                                                                   100%   50MB  10.0MB/s   00:05

sysaux01.dbf                                                                 100%  250MB  16.7MB/s   00:15

system01.dbf                                                                 100%  510MB  18.9MB/s   00:27

temp01.dbf                                                                   100%   21MB  21.0MB/s   00:01

undotbs01.dbf                                                                100%   95MB  19.0MB/s   00:05

users01.dbf                                                                  100% 5128KB   5.0MB/s   00:00

[oracle@db10g db10g]$

[oracle@db10g db10g]$ du -h

1.6G    .

IMPORTANTE: COMPARAR O TAMANHO DOS DIRETORIOS DOS SERVIDORES.

==============================================================

COPIANDO…CONTROLFILE STANDBY E CONFIGURANDO NOVO CONTROLFILE

==============================================================

[oracle@db10g installoracle]$ scp standby.ctl oracle@192.168.199.241:/oracle/app/oradata/db10g/

oracle@192.168.199.241′s password:

standby.ctl                                                                 100% 6992KB   6.8MB/s   00:01

rm -rf control01.ctl

rm -rf control02.ctl

rm -rf control03.ctl

cp standby.ctl control01.ctl

cp standby.ctl control02.ctl

mv standby.ctl control03.ctl

==============================================================

COPIANDO…PFILE DO BANCO DE DADOS PRODUÇÃO E ARQUIVO DE SENHA

==============================================================

[oracle@db10g dbs]$ scp pfileDB10G.ora oracle@192.168.199.241:/oracle/app/product/10.2.0/db10g/dbs/

oracle@192.168.199.241′s password:

pfileDB10G.ora                                                              100% 1549     1.5KB/s   00:00

[oracle@db10g dbs]$ scp orapwdb10g oracle@192.168.199.241:/oracle/app/product/10.2.0/db10g/dbs/

oracle@192.168.199.241′s password:

orapwdb10g                               100% 1536     1.5KB/s   00:00

==============================================================

COPIANDO…ARCHIVES

==============================================================

[oracle@db10g db10g]$ scp *.arc oracle@192.168.199.241:/archivelog/db10g/

oracle@192.168.199.241′s password:

1_10_694590577.arc                                                          100% 1740KB   1.7MB/s   00:01

1_11_694590577.arc                                                          100%   59KB  59.0KB/s   00:00

1_12_694590577.arc                                                          100%   14KB  14.0KB/s   00:00

1_13_694590577.arc                                                          100%  155KB 154.5KB/s   00:00

1_14_694590577.arc                                                          100%  640KB 639.5KB/s   00:00

1_15_694590577.arc                                                          100% 1716KB   1.7MB/s   00:00

1_16_694590577.arc                                                          100%  788KB 788.0KB/s   00:00

1_17_694590577.arc                                                          100% 4608     4.5KB/s   00:00

1_18_694590577.arc                                                          100%  290KB 290.0KB/s   00:00

1_19_694590577.arc                                                          100%  273KB 272.5KB/s   00:00

1_20_694590577.arc                                                          100%   49MB   9.8MB/s   00:05

1_21_694590577.arc                                                          100%   49MB   9.8MB/s   00:05

1_22_694590577.arc                                                          100%   49MB   9.8MB/s   00:05

1_23_694590577.arc                                                          100%   49MB   9.8MB/s   00:05

1_24_694590577.arc                                                          100%   49MB  12.2MB/s   00:04

1_25_694590577.arc                                                          100% 7115KB   7.0MB/s   00:01

1_26_694590577.arc                                                          100%   15KB  14.5KB/s   00:00

1_2_694590577.arc                                                           100%   14MB  14.3MB/s   00:01

1_27_694590577.arc                                                          100% 6235KB   6.1MB/s   00:01

1_28_694590577.arc                                                          100%  339KB 339.0KB/s   00:00

1_29_694590577.arc                                                          100% 1253KB   1.2MB/s   00:00

1_30_694590577.arc                                                          100% 6494KB   6.3MB/s   00:01

1_3_694590577.arc                                                           100% 4608     4.5KB/s   00:00

1_4_694590577.arc                                                           100%   42MB  10.5MB/s   00:04

1_5_694590577.arc                                                           100%  259KB 259.0KB/s   00:00

1_6_694590577.arc                                                           100% 5742KB   5.6MB/s   00:01

1_7_694590577.arc                                                           100%  142KB 141.5KB/s   00:00

1_8_694590577.arc                                                           100%   55KB  54.5KB/s   00:00

1_9_694590577.arc                                                           100% 1821KB   1.8MB/s   00:00

log1_31_694590577.arc                                                       100%   13MB  13.0MB/s   00:01

log1_32_694590577.arc                                                       100%  310KB 310.0KB/s   00:00

log1_33_694590577.arc                                                       100%  232KB 231.5KB/s   00:00

log1_34_694590577.arc                                                       100%  222KB 221.5KB/s   00:00

log1_35_694590577.arc                                                       100%  158KB 158.0KB/s   00:00

log1_36_694590577.arc                                                       100% 2703KB   2.6MB/s   00:01

[oracle@db10g db10g]$ du -h

352M

==============================================================

CONFIGURAÇÃO DE REDE (NETWORK) – LISTENER E TNSNAMES

==============================================================

==============================================================

CONFIGURAÇÃO DO LISTENER

==============================================================

No Banco de Dados Produção: use Oracle Net Manager para configurar um listener para DB10G and ST10G.

==============================================================

DB10G LISTENER:

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(GLOBAL_DBNAME = db10g)

(ORACLE_HOME = /oracle/app/product/10.2.0/db10g)

(SID_NAME = db10g)

)

)

LISTENER =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = db10g)(PORT = 1521))

)

==============================================================

No Servidor Standby: use Net Manager para configurar listener para DB10G and ST10G.

==============================================================

ST10G LISTENER:

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(GLOBAL_DBNAME = st10g)

(ORACLE_HOME = /oracle/app/product/10.2.0/st10g)

(SID_NAME = st10g)

)

)

LISTENER =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = st10g)(PORT = 1521))

)

==============================================================

CONFIGURAÇÃO DO TNSNAMES

==============================================================

No Banco de Dados Produção: use Oracle Net Manager para criar Nome de Serviço de Rede para DB10G e ST10G.

==============================================================

DB10G TNSNAMES:

DB10G =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.199.239)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = db10g)

)

)

ST10G =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.199.241)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = st10g)

)

)

==============================================================

No Servidor Standby: use Oracle Net Manager para criar Nome de Serviço de Rede para DB10G e ST10G.

==============================================================

ST10G TNSNAMES:

DB10G =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.199.239)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = db10g)

)

)

ST10G =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.199.241)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = st10g)

)

)

==============================================================

TNSPING PARA VERIFICAR CONEXÃO COM O LISTENER

==============================================================

No Servidor Produção:

[oracle@db10g admin]$ tnsping st10g

TNS Ping Utility for Linux: Version 10.2.0.4.0 – Production on 18-AUG-2009 13:30:51

Copyright (c) 1997,  2007, Oracle.  All rights reserved.

Used parameter files:

Used TNSNAMES adapter to resolve the alias

Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.199.241)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = st10g)))

OK (0 msec)

[oracle@db10g admin]$ tnsping db10g

TNS Ping Utility for Linux: Version 10.2.0.4.0 – Production on 18-AUG-2009 13:30:53

Copyright (c) 1997,  2007, Oracle.  All rights reserved.

Used parameter files:

Used TNSNAMES adapter to resolve the alias

Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.199.239)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = db10g)))

OK (10 msec)

Producao

SQL> conn sys/oracle@st10g as sysdba

Connected.

SQL> conn sys/oracle@db10g as sysdba

Connected.

==============================================================

TNSPING PARA VERIFICAR CONEXÃO COM O LISTENER

==============================================================

No Servidor Standby:

[oracle@st10g admin]$ tnsping st10g

TNS Ping Utility for Linux: Version 10.2.0.4.0 – Production on 24-AUG-2009 00:19:47

Copyright (c) 1997,  2007, Oracle.  All rights reserved.

Used parameter files:

Used TNSNAMES adapter to resolve the alias

Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.199.241)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = st10g)))

OK (10 msec)

[oracle@st10g admin]$ tnsping db10g

TNS Ping Utility for Linux: Version 10.2.0.4.0 – Production on 24-AUG-2009 00:19:56

Copyright (c) 1997,  2007, Oracle.  All rights reserved.

Used parameter files:

Used TNSNAMES adapter to resolve the alias

Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.199.239)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = db10g)))

OK (10 msec)

Standby

SQL> conn sys/oracle@st10g as sysdba

Connected.

SQL>  conn sys/oracle@db10g as sysdba

Connected.

==============================================================

EDITAR PFILEDB10G.ORA PARA ADICIONAR NOVAS REGRAS DO DATAGUARD NO SERVIDOR STANDBY:

==============================================================

==================== INIT STANDBY ============================

db10g.__db_cache_size=54525952

db10g.__java_pool_size=4194304

db10g.__large_pool_size=4194304

db10g.__shared_pool_size=100663296

db10g.__streams_pool_size=0

audit_file_dest=’/oracle/app/admin/db10g/adump’

background_dump_dest=’/oracle/app/admin/db10g/bdump’

compatible=’10.2.0.3.0′

core_dump_dest=’/oracle/app/admin/db10g/cdump’

db_block_size=8192

db_domain=”

db_file_multiblock_read_count=16

############### Parametros Adicionais Dataguard ########################

DB_NAME=db10g

DB_UNIQUE_NAME=st10g

LOG_ARCHIVE_CONFIG=’DG_CONFIG=(db10g,st10g)’

CONTROL_FILES=’/oracle/app/oradata/db10g/control01.ctl’,'/oracle/app/oradata/db10g/control02.ctl’,'/oracle/app/oradata/db10g/control03.ctl’

LOG_ARCHIVE_FORMAT=log%t_%s_%r.arc

LOG_ARCHIVE_DEST_1=

‘LOCATION=/archivelog/db10g/

VALID_FOR=(ALL_LOGFILES,ALL_ROLES)

DB_UNIQUE_NAME=st10g’

LOG_ARCHIVE_DEST_2=

‘SERVICE=db10g LGWR ASYNC

VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)

DB_UNIQUE_NAME=db10g’

LOG_ARCHIVE_DEST_STATE_1=ENABLE

LOG_ARCHIVE_DEST_STATE_2=ENABLE

REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE

STANDBY_FILE_MANAGEMENT=AUTO

FAL_SERVER=db10g

FAL_CLIENT=st10g

#####################################################################

db_recovery_file_dest=’/oracle/app/flash_recovery_area’

db_recovery_file_dest_size=2147483648

dispatchers=’(PROTOCOL=TCP) (SERVICE=db10gXDB)’

job_queue_processes=10

open_cursors=300

pga_aggregate_target=16777216

processes=150

resumable_timeout=900

sga_target=167772160

undo_management=’AUTO’

undo_tablespace=’UNDOTBS1′

==============================================================

CRIAR SPFILE ATRAVÉS DO PFILE ALTERADO

==============================================================

SQL> startup nomount pfile=’$ORACLE_HOME/dbs/pfileDB10G.ora’;

ORACLE instance started.

Total System Global Area  167772160 bytes

Fixed Size                  1266392 bytes

Variable Size             109055272 bytes

Database Buffers           54525952 bytes

Redo Buffers                2924544 bytes

SQL> create spfile from pfile=’$ORACLE_HOME/dbs/pfileDB10G.ora’;

File created.

SQL> shutdown immediate

ORA-01507: database not mounted

ORACLE instance shut down.

==============================================================

ATIVAR BANCO DE DADOS STANDBY DATAGUARD

==============================================================

No Banco de Dados Standby, iniciei o Bando de Dados em Modo Mount:

SQL> STARTUP MOUNT;

ORACLE instance started.

Total System Global Area  167772160 bytes

Fixed Size                  1266392 bytes

Variable Size             109055272 bytes

Database Buffers           54525952 bytes

Redo Buffers                2924544 bytes

Database mounted.

==============================================================

ATIVAR LOG DE FLASHBACK NO BANCO DE DADOS STANDBY. FLASHBACK SERÁ NECESSÁRIO PARA FAST-START FAILOVERS

==============================================================

SQL> ALTER DATABASE FLASHBACK ON;

Database altered.

==============================================================

CRIAR STANDBY REDO LOG ONLINE NO BANCO DE DADOS STANDBY ==============================================================

Meu Banco de dados tem 3 grupos originalmente e Crie 3 Grupos de Redolog online 50M usando o seguinte comando:

SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 SIZE 50M;

Database altered.

SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 SIZE 50M;

Database altered.

SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 SIZE 50M;

Database altered.

SQL> Select GROUP#, DBID, STATUS, ARCHIVED, BYTES from v$Standby_log;

GROUP# DBID                                     STATUS     ARC      BYTES

———- —————————————- ———- — ———-

4 UNASSIGNED                               UNASSIGNED YES   52428800

5 UNASSIGNED                               UNASSIGNED YES   52428800

6 UNASSIGNED                               UNASSIGNED YES   52428800

==============================================================

INICIAR SINCRONISMO DO DATAGUARD

==============================================================

======================= NO STANDBY ===========================

INICIAR SINCRONISMO

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

Database altered.

SQL> SELECT RECOVERY_MODE FROM V$ARCHIVE_DEST_STATUS;

RECOVERY_MODE

———————–

MANAGED

MANAGED

MANAGED

MANAGED

MANAGED

11 rows selected.

======================= NO STANDBY ===========================

VERIFICA OS ARCHVIES DO BANCO DE DADOS STANDBY:

SQL> select sequence#, first_time, next_time from v$archived_log;

SEQUENCE# FIRST_TIM NEXT_TIME

———- ——— ———

86 19-AUG-09 19-AUG-09

85 19-AUG-09 19-AUG-09

87 19-AUG-09 19-AUG-09

====================== NO PRODUÇÃO ======================

GERAR ARCHIVE NO BANCO DE DADOS PRODUÇÃO, FORCE LOGFILE SWITCH:

SQL>alter system switch logfile;

======================NO STANDBY ======================

VERIFICA OS ARCHIVES APLICADOS NO BANCO DE DADOS STANDBY:

SQL> select sequence#, applied from v$archived_log order by sequence#;

SEQUENCE# APP

———- —

85 YES

86 YES

87 YES

========================= NO STANDBY =========================

CASO QUEIRA PARAR O SINCRONISMO.

PARAR O SINCRONISMO (APLICAÇÃO DE LOGS):

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

Database altered.

SQL> SELECT RECOVERY_MODE FROM V$ARCHIVE_DEST_STATUS;

RECOVERY_MODE

———————–

IDLE

IDLE

IDLE

IDLE

IDLE

11 rows selected.

===================== NO STANDBY =====================

ATIVAR STANDBY EM MODO DE RECOVERY EM REAL TIME(enable the real-time apply).

SQL> alter database recover managed standby database using current logfile disconnect;

SQL> SELECT RECOVERY_MODE FROM V$ARCHIVE_DEST_STATUS;

RECOVERY_MODE

———————–

MANAGED REAL TIME APPLY

MANAGED REAL TIME APPLY

MANAGED REAL TIME APPLY

MANAGED REAL TIME APPLY

11 rows selected.

==================== NO STANDBY ===========================

SE CASO ESTIVER TUDO OK, NO STANDBY APARECERÁ ASSIM

SQL> select sequence#, applied from v$archived_log order by sequence#;

SEQUENCE# APP

———- —

85 YES

86 YES

87 YES

==============================================================

DATA GUARD BROKER

==============================================================

No Banco de Dados Produção ative o Parametro Data Guard Broker.

SQL> show parameter dg_broker_start

NAME                                 TYPE        VALUE

———————————— ———– ——————————

dg_broker_start                      boolean     FALSE

SQL> alter system set dg_broker_start=true;

System altered.

######################################################################

No Banco de Dados Standby ative o Parametro Data Guard Broker.

SQL> show parameter dg_broker_start

NAME                                 TYPE        VALUE

———————————— ———– ——————————

dg_broker_start                      boolean     FALSE

SQL> alter system set dg_broker_start=true;

System altered.

==============================================================

CONFIGURAR GLOBAL_DB_NAME

==============================================================

Configure GLOBAL_DB_NAME no Banco de Dados Produção e Standby.

######################## LISTENER PRODUÇÃO #######################

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(GLOBAL_DBNAME = db10g)

(ORACLE_HOME = /oracle/app/product/10.2.0/db10g)

(SID_NAME = db10g)

)

(SID_DESC =

(GLOBAL_DBNAME = db10g_DGMGRL)

(ORACLE_HOME = /oracle/app/product/10.2.0/db10g)

(SID_NAME = db10g)

)

)

LISTENER =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.199.239)(PORT = 1521))

)

####################### LISTENER STANDBY ##########################

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(GLOBAL_DBNAME = db10g)

(ORACLE_HOME = /oracle/app/product/10.2.0/db10g)

(SID_NAME = db10g)

)

(SID_DESC =

(GLOBAL_DBNAME = st10g_DGMGRL)

(ORACLE_HOME = /oracle/app/product/10.2.0/db10g)

(SID_NAME = db10g)

)

)

LISTENER =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.199.241)(PORT = 1521))

)

==============================================================

RECARREGAR OS PARAMETROS SETADO NO LISTENER PRODUÇÃO

==============================================================

[oracle@db10g /]$ lsnrctl reload

LSNRCTL for Linux: Version 10.2.0.4.0 – Production on 19-AUG-2009 15:50:33

Copyright (c) 1991, 2007, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=db10g)(PORT=1521)))

The command completed successfully

[oracle@db10g /]$ lsnrctl services

LSNRCTL for Linux: Version 10.2.0.4.0 – Production on 19-AUG-2009 15:50:48

Copyright (c) 1991, 2007, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=db10g)(PORT=1521)))

Services Summary…

Service “db10g” has 2 instance(s).

Instance “db10g”, status UNKNOWN, has 1 handler(s) for this service…

Handler(s):

“DEDICATED” established:0 refused:0

LOCAL SERVER

Instance “db10g”, status READY, has 1 handler(s) for this service…

Handler(s):

“DEDICATED” established:0 refused:0 state:ready

LOCAL SERVER

Service “db10gXDB” has 1 instance(s).

Instance “db10g”, status READY, has 1 handler(s) for this service…

Handler(s):

“D000″ established:0 refused:0 current:0 max:1022 state:ready

DISPATCHER <machine: db10g, pid: 23003>

(ADDRESS=(PROTOCOL=tcp)(HOST=db10g.db1.com.br)(PORT=9669))

Service “db10g_DGMGRL” has 1 instance(s).

Instance “db10g”, status UNKNOWN, has 1 handler(s) for this service…

Handler(s):

“DEDICATED” established:0 refused:0

LOCAL SERVER

Service “db10g_XPT” has 1 instance(s).

Instance “db10g”, status READY, has 1 handler(s) for this service…

Handler(s):

“DEDICATED” established:0 refused:0 state:ready

LOCAL SERVER

The command completed successfully

==============================================================

==============================================================

RECARREGAR OS PARAMETROS SETADO NO LISTENER STANDBY

==============================================================

[oracle@st10g /]$ lsnrctl reload

LSNRCTL for Linux: Version 10.2.0.4.0 – Production on 25-AUG-2009 01:49:44

Copyright (c) 1991, 2007, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=st10g)(PORT=1521)))

The command completed successfully

[oracle@st10g /]$ lsnrctl services;

LSNRCTL for Linux: Version 10.2.0.4.0 – Production on 25-AUG-2009 01:49:56

Copyright (c) 1991, 2007, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=st10g)(PORT=1521)))

Services Summary…

Service “db10g” has 1 instance(s).

Instance “db10g”, status UNKNOWN, has 1 handler(s) for this service…

Handler(s):

“DEDICATED” established:0 refused:0

LOCAL SERVER

Service “st10g” has 1 instance(s).

Instance “db10g”, status READY, has 1 handler(s) for this service…

Handler(s):

“DEDICATED” established:0 refused:0 state:ready

LOCAL SERVER

Service “st10g_DGMGRL” has 1 instance(s).

Instance “db10g”, status UNKNOWN, has 1 handler(s) for this service…

Handler(s):

“DEDICATED” established:0 refused:0

LOCAL SERVER

Service “st10g_XPT” has 1 instance(s).

Instance “db10g”, status READY, has 1 handler(s) for this service…

Handler(s):

“DEDICATED” established:0 refused:0 state:ready

LOCAL SERVER

The command completed successfully

==============================================================

INICIANDO DGMGRL PARA CONFIGURAR DG BROKER

==============================================================

[oracle@db10g ~]$ dgmgrl

DGMGRL for Linux: Version 10.2.0.4.0 – Production

Copyright (c) 2000, 2005, Oracle. All rights reserved.

Welcome to DGMGRL, type “help” for information.

DGMGRL> connect sys/oracle

Connected.

==============================================================

CRIANDO CONFIGURAÇÃO DO DG BROKER

==============================================================

CREATE CONFIGURATION configuration-name AS

PRIMARY DATABASE IS database-name

CONNECT IDENTIFIER IS connect-identifier;

DGMGRL> CREATE CONFIGURATION ‘DGConfig’ as

PRIMARY DATABASE IS ‘db10g’

CONNECT IDENTIFIER IS DB10G;

Configuration “DGConfig” created with primary database “db10g”

DGMGRL> show configuration

Configuration

Name:                DGConfig

Enabled:             NO

Protection Mode:     MaxPerformance

Fast-Start Failover: DISABLED

Databases:

db10g – Primary database

Current status for “DGConfig”:

DISABLED

DGMGRL> enable configuration

Enabled.

DGMGRL> show configuration

Configuration

Name:                DGConfig

Enabled:             YES

Protection Mode:     MaxPerformance

Fast-Start Failover: DISABLED

Databases:

db10g – Primary database

Current status for “DGConfig”:

SUCCESS

==============================================================

ADICIONANDO STANDBY NA CONFIGURAÇÃO DO DG BROKER

==============================================================

DGMGRL> ADD DATABASE ‘st10g’ AS CONNECT IDENTIFIER IS ST10G MAINTAINED AS PHYSICAL;

Database “st10g” added

DGMGRL> show configuration

Configuration

Name:                DGConfig

Enabled:             YES

Protection Mode:     MaxPerformance

Fast-Start Failover: DISABLED

Databases:

db10g – Primary database

st10g – Physical standby database (disabled)

Current status for “DGConfig”:

SUCCESS

DGMGRL> enable database ‘st10g’;

Enabled.

DGMGRL> show configuration

Configuration

Name:                DGConfig

Enabled:             YES

Protection Mode:     MaxPerformance

Fast-Start Failover: DISABLED

Databases:

db10g – Primary database

st10g – Physical standby database

Current status for “DGConfig”:

SUCCESS

==============================================================

CONFIGURAR DO DG BROKER

==============================================================

DGMGRL> EDIT DATABASE ‘db10g’ SET PROPERTY ‘LogXptMode’='SYNC’;

Property “LogXptMode” updated

DGMGRL> EDIT DATABASE ‘st10g’ SET PROPERTY ‘LogXptMode’='SYNC’;

Property “LogXptMode” updated

==============================================================

ATUALIZAR O MODO DE PROTEÇÃO PARA MAXAVAILABILITY

==============================================================

DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS MAXAVAILABILITY;

Succeeded.

==============================================================

VERIFICAR A CONFIGURAÇÃO DO DG BROKER

==============================================================

DGMGRL> show configuration

Configuration

Name:                DGConfig

Enabled:             YES

Protection Mode:     MaxAvailability

Fast-Start Failover: DISABLED

Databases:

db10g – Primary database

st10g – Physical standby database

Current status for “DGConfig”:

SUCCESS

==============================================================

==========================================================

PRONTO DATA GUARD CONFIGURADO COM SUCESSO !!!

==============================================================

Tema: Rubric. Blog no WordPress.com.

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.