Olá amigos! Após algumas séries de colunas explicando os conceitos e modos que o RMAN pode trabalhar, iremos aprender a utilizar essa ferramenta para auxiliar os serviços administrativos do DBA, seja para realizar backup em modo ARCHIVELOG ou NOARCHIVELOG, restauração, recuperação total e parcial e a utilização do seu catálogo para fins de organização do ambiente.
Antes de iniciar, iremos seguir alguns passos necessários para ter um ambiente organizado, com vários bancos de dados gerenciados pelo RMAN e posteriormente realizar as operações de backup e recover. Todos os passos descritos, seguirão os critérios de ambiente genérico, proposto na última coluna RMAN: Preparação do ambiente, que nos fornece uma visão geral de como irá funcionar a estrutura de backup em um ambiente empresarial.
1º Passo) Preparação do banco de dados RMAN
Nesse momento, devemos criar um banco de dados somente para armazenar o catalogo do RMAN, seguindo o padrão da coluna anterior, o banco de dados será criado no servidor SERVERDB, que está rodando um Linux Red Hat AS 4 com Oracle Database 10G Release 2, abaixo segue todas as tarefas para criar esse ambiente.
1º Tarefa
Realizar a arquitetura física do servidor e banco de dados, para armazenamento de datafiles, traces, redologs e etc, uma sugestão é seguir o padrão OFA (Optimal Flexibile Architecture), no nosso exemplo, iremos apenas utilizar alguns padrões oferecidos pelo OFA.
2º Tarefa
Nesse instante, devemos criar o script de criação do banco de dados, seguindo os caminhos físicos do servidor, conforme a tarefa acima, segue o comando:
create database RMAN
logfile group 1 ('/u01/RMAN/log/redo1.log') size 100M,
group 2 ('/u01/RMAN/log/redo2.log') size 100M,
group 3 ('/u01/RMAN/log/redo3.log') size 100M
noarchivelog
character set WE8ISO8859P1
national character set utf8
datafile '/u01/RMAN/dbf/system.dbf'
size 300M
autoextend on
next 100M maxsize unlimited
extent management local
sysaux datafile '/u01/RMAN/dbf/sysaux.dbf'
size 200M
autoextend on
next 10M
maxsize 501m
undo tablespace undo
datafile '/u01/RMAN/dbf/undo1.dbf'
size 200M
default temporary tablespace temp
tempfile '/u01/RMAN/dbf/temp1.dbf'
size 500M;
ORIENTAÇÕES
- Crie uma pasta chamada DBA no servidor, um exemplo seria no caminho : /u01/RMAN/DBA.
- Salve o arquivo acima, nessa pasta, chamando de create_db_rman.sql
3º Tarefa
Depois de finalizar a tarefa anterior, devemos criar um arquivo de parâmetro para a instância RMAN, nesse arquivo terá todos os valores básicos de configuração da instância. Como se trata de uma instância pequena e sem grandes características, iremos criar um arquivo de parâmetro simples com gerenciamento de memória automática, que somente a versão 10G (parâmetro sql_target) nos possibilita.
#####################################################
# Paramenters Instance RMAN #
# Author : Rodrigo Almeida #
# Date: 25/10/2006 #
# Version : 1.0 #
#####################################################
####################################################
# Audit Parameters #
####################################################
AUDIT_FILE_DEST = '/app/oracle/admin/RMAN/adump'
####################################################
# Database Parameters #
####################################################
BACKGROUND_DUMP_DEST = '/app/oracle/admin/RMAN/bdump'
DB_16k_cache_size = 1047600
DB_BLOCK_SIZE = 8192
DB_CACHE_SIZE = 2624000
DB_DOMAIN = ''
DB_FILE_MULTIBLOCK_READ_COUNT = 16721600
DB_NAME = RMAN
DB_WRITER_PROCESSES = 2
GLOBAL_NAMES = FALSE
COMPATIBLE = 10.2.0.0.0
CONTROL_FILES = ('/u01/RMAN/ctl/control1.ctl','/u01/RMAN/ctl/control2.ctl','/u01/RMAN/ctl/control3.ctl')
CORE_DUMP_DEST = '/app/oracle/admin/RMAN/cdump'
OPTIMIZER_MODE = ALL_ROWS
OPEN_CURSORS = 50
PROCESSES = 150
SESSIONS = 100
TRANSACTIONS = 112
USER_DUMP_DEST = '/app/oracle/admin/RMAN/udump'
####################################################
# SGA Parameters #
####################################################
BITMAP_MERGE_AREA_SIZE = 0
CREATE_BITMAP_AREA_SIZE = 0
HASH_AREA_SIZE = 0
JAVA_POOL_SIZE = 0
LARGE_POOL_SIZE = 0
SHARED_POOL_RESERVED_SIZE = 0
SHARED_POOL_SIZE = 0
SORT_AREA_RETAINED_SIZE = 0
SORT_AREA_SIZE = 0
SGA_TARGET = 157286400
WORKAREA_SIZE_POLICY = MANUAL
####################################################
# Security Parameters #
####################################################
O7_DICTIONARY_ACCESSIBILITY = TRUE
OS_ROLES = FALSE
REMOTE_OS_ROLES = FALSE
SQL92_SECURITY = TRUE
####################################################
# LOG Parameters #
####################################################
LOG_ARCHIVE_DEST = '/u01/RMAN/arch'
LOG_ARCHIVE_FORMAT = 'RMAN_%s%r%t.arc'
LOG_ARCHIVE_MAX_PROCESSES = 2
LOG_CHECKPOINT_INTERVAL = 999999
####################################################
# Parallel Parameters #
####################################################
PARALLEL_MAX_SERVERS = 4
PARALLEL_MIN_SERVERS = 4
PARALLEL_THREADS_PER_CPU = 2
####################################################
# Undo Parameters #
####################################################
UNDO_MANAGEMENT = AUTO
UNDO_RETENTION = 900
UNDO_TABLESPACE = UNDO
####################################################
# Misc Parameters #
####################################################
UTL_FILE_DIR = '/u01/RMAN/utl'
JOB_QUEUE_PROCESSES = 10
QUERY_REWRITE_ENABLED = TRUE
RESOURCE_LIMIT = TRUE
STATISTICS_LEVEL = TYPICAL
ATENÇÃO
- O arquivo deverá se chamar initRMAN.ora e ficará gravado no diretório $ORACLE_HOME/dbs.
- Não iremos discutir todos os parâmetros, cada parâmetro poderá ser ajustado para cada ambiente.
- Os valores propostos, também deverá seguir a orientação do DBA.
- Alguns Caminhos físicos, seguem uma ESTRUTURA padrão de instalação do ORACLE SERVER.
2º Passo) Criação do banco de dados RMAN
Neste passo, vamos criar o banco de dados manualmente no servidor, para isso ocorrer, efetue o LOGIN no servidor com o usuário ORACLE, após o LOGIN, siga os comandos abaixo:
[oracle@serverdb dbs] export ORACLE_SID=RMAN
[oracle@serverdb dbs]$ echo $ORACLE_SID
RMAN
[oracle@serverdb dbs]$ echo $ORACLE_HOME
/app/oracle/product/10.2.0
[oracle@serverdb dbs]$ sqlplus "/ as sysdba"
SQL*Plus: Release 10.2.0.1.0 - Production on Tue Feb 27 16:18:29 2007
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup nomount pfile=$ORACLE_HOME/dbs/initRMAN.ora
ORACLE instance started.
Total System Global Area 159383552 bytes
Fixed Size 1218268 bytes
Variable Size 62916900 bytes
Database Buffers 92274688 bytes
Redo Buffers 2973696 bytes
SQL> @/u01/RMAN/DBA/create_db_rman.sql
Created Database.
SQL> @$ORACLE_HOME/rdbms/admin/catalog
...
(Após finalizar a criação do dicionário, executar o script abaixo)
...
SQL> @$ORACLE_HOME/rdbms/admin/catproc
SQL> select instance_name, status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
RMAN OPEN
A partir desse momento, nós já temos uma instãncia Oracle criada para armazenar o catálogo do RMAN, agora devemos realizar apenas alguns ajustes de rede para conseguir fazer comunicação com outros servidores.
3º Passo) Configuração de rede
Nós devemos configurar os parâmetros de redes para a instância do RMAN, para conseguir realizar uma comunicação com outros servidores e instâncias, os arquivos mencionados abaixo estão no diretório /app/oracle/product/10.2.0/network/admin seguindo uma instalação padrão do Oracle.
Arquivo Listener.ora
SID_LIST_LISTENER =
(SID_LIST=
(SID_DESC=
(SID_NAME=RMAN)
(ORACLE_HOME=/app/oracle/product/10.2.0)
)
)
LISTENER =
(ADDRESS_LIST=
(ADDRESS=
(PROTOCOL=tcp)
(HOST=172.16.166.200) -- ou nome do HOST, exemplo: SERVERDB
(PORT=1521)
)
(ADDRESS=
(PROTOCOL=ipc)
(KEY=extproc)
)
)
Arquivo tnsnames.ora
##################################################################
# Servidor de Backup #
##################################################################
RMAN =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = TCP)
(HOST = 172.16.165.213)
(PORT = 1522)
)
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = RMAN)
)
)
ATENÇÃO
Esses parâmetros do TNSNAMES.ORA deve ser colocar nesse mesmo arquivo dos outros servidores de banco de dados que deseja ser gerenciado pelo RMAN, exemplo, no servidor SERVERDB1, adicionamos os parâmetros acima no arquivo de TNSNAMES.ORA e para testar, basta executar o comando abaixo:
serverdb1(oracle):/home/oracle>tnsping RMAN
TNS Ping Utility for Linux: Version 10.2.0.1.0 - Production on 27-FEB-2007 16:35:47
Copyright (c) 1997, 2005, Oracle. All rights reserved.
Used parameter files:
/app/oracle/product/10.2.0/network/admin/sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (HOST = 172.16.165.213) (PORT = 1522))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = RMAN)))
OK (0 msec)
serverdb1(oracle):/home/oracle>
4º Passo) Criando os objetos e Catalogo de backup
A parte mais interessante chegou, vamos criar todos os objetos e configurações necessários para nosso ambiente de RMAN, para um ambiente organizado e centralizado.
1º Tarefa – Criação da Tablespace do Catalogo
SQL > l
1 create tablespace RMAN
2 datafile
3 '/u01/RMAN/dbf/rman_01.dbf' size 100M
4 permanent
5 online
6 extent management local autoallocate
7* segment space management auto
2º Tarefa – Criação do usuário RMAN
SQL> l
1 create user RMAN
2 identified by imasters
3 default tablespace RMAN
4* temporary tablespace TEMP
3º Tarefa – Permissões ao usuário RMAN
SQL> l
1 grant connect, resource, recovery_catalog_owner to rman;
4º Tarefa – Criação do Catálogo
Para criar o catalogo, devemos sair do SQL*PLUS e ir para as linhas de comando e acessar a ferramenta RMAN propriamente dito.
[oracle@serverdb dbs]$ rman catalog 'rman/imasters@rman';
Recovery Manager: Release 10.2.0.1.0 - Production on Tue Feb 27 17:23:29 2007
Copyright (c) 1982, 2005, Oracle. All rights reserved.
connected to recovery catalog database
recovery catalog is not installed
RMAN> create catalog tablespace "RMAN";
recovery catalog created
RMAN> exit
Recovery Manager complete.
[oracle@serverdb dbs]$
Acabamos de criar todo o ambiente para gerenciar nosso backup, criamos a base de dados, usuário, configuração de rede e catálogo, com isso já temos 50% do ambiente pronto, os outros 50% será a conclusão de backups e os diversos tipos de recuperação, assim, como testar outras funcionalidades da ferramenta.
Espero que acompanhem as próximas colunas que iremos entrar nas melhores partes do RMAN.
Abraços,