RMAN: Ambiente de backup 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 = 1047600DB_BLOCK_SIZE = 8192 DB_CACHE_SIZE = 2624000DB_DOMAIN = '' DB_FILE_MULTIBLOCK_READ_COUNT = 16721600DB_NAME = RMAN DB_WRITER_PROCESSES = 2GLOBAL_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_ROWSOPEN_CURSORS = 50 PROCESSES = 150SESSIONS = 100 TRANSACTIONS = 112 USER_DUMP_DEST = '/app/oracle/admin/rman/udump' # SGA Parameters # BITMAP_MERGE_AREA_SIZE = 0CREATE_BITMAP_AREA_SIZE = 0 HASH_AREA_SIZE = 0JAVA_POOL_SIZE = 0 LARGE_POOL_SIZE = 0SHARED_POOL_RESERVED_SIZE = 0 SHARED_POOL_SIZE = 0SORT_AREA_RETAINED_SIZE = 0 SORT_AREA_SIZE = 0SGA_TARGET = 157286400 WORKAREA_SIZE_POLICY = MANUAL # Security Parameters # O7_DICTIONARY_ACCESSIBILITY = TRUEOS_ROLES = FALSE REMOTE_OS_ROLES = FALSESQL92_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 # PA RALLEL_MAX_SERVERS = 4 PARALLEL_MIN_SERVERS = 4PARALLEL_THREADS_PER_CPU = 2 # Undo Parameters # UN DO_MANAGEMENT = AUTO UNDO_RETENTION = 900UNDO_TABLESPACE = UNDO # Misc Parameters # UTL_FILE_DIR = '/u01/rman/utl' JOB_QUEUE_PROCESSES = 10QUERY_REWRITE_ENABLED = TRUE RESOURCE_LIMIT = TRUESTATISTICS_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_SIDRMAN [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.sqlcreated 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> l1 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 databaserecovery catalog is not installed RMAN> create catalog tablespace "RMAN";recovery catalog createdrman> 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.