9.3 Mantendo o ZENworks Data Store no Oracle

Estas seções contêm instruções sobre backup e recuperação do ZENworks Data Store usando o Oracle:

9.3.1 Soluções de backup e recuperação

O Oracle tem dois métodos de backup e recuperação:

  • RMAN (Recovery Manager)

  • Backup e recuperação gerenciados pelo usuário

O utilitário RMAN é instalado automaticamente com o banco de dados. Ele pode fazer o backup de um banco de dados do Oracle8 e de todas as versões posteriores de um banco de dados Oracle*. O RMAN usa sessões de servidor no banco de dados para executar operações de backup e recuperação. O RMAN tem sua própria sintaxe e pode ser acessado por uma interface de linha de comando ou pela interface de usuário do Oracle Enterprise Manager. Ele também tem APIs para interagir com gerenciadores de mídia de terceiros.

A vantagem do RMAN é que ele obtém e armazena metadados sobre suas operações no arquivo de controle do banco de dados. Um catálogo de recuperação independente pode ser configurado (um esquema que contém metadados importados do arquivo de controle) em um banco de dados de catálogos de recuperação separado. O RMAN mantém os registros necessários para backups, registros arquivados e outros itens usando os metadados, de forma que os procedimentos de restauração e recuperação são bastante simplificados.

Outro método de executar a recuperação é usar comandos do sistema operacional para backups e o SQL*Plus para recuperações. Esse método chama-se backup e recuperação gerenciados pelo usuário.

O RMAN automatiza procedimentos de backup e recuperação mas o método gerenciado pelo usuário requer controle de todos os arquivos e backups do banco de dados. Portanto, devido à sua robustez e aos seus recursos simplificados de administração de banco de dados, o RMAN é uma ferramenta altamente recomendável para operações de backup. As seções subseqüentes deste documento explicam as etapas para usar o RMAN a fim de executar operações completas de backup e recuperação do banco de dados.

9.3.2 Configurando variáveis de ambiente

  1. Defina as seguintes variáveis de ambiente com os valores apropriados antes de usar o RMAN:

    • ORACLE_HOME: diretório em que o software Oracle está instalado.

      Para o Oracle 9i R2: Defina a variável como ORACLE_HOME=/opt/oracle/product/9ir2

      Para o Oracle 10g R2: Defina a variável como ORACLE_HOME=/opt/oracle/product/10.2/db_1

    • CLASSPATH: caminhos para as bibliotecas instaladas pelo Oracle.

      Para o Oracle 9i R2: Defina a variável como CLASSPATH=$CLASSPATH:/opt/oracle/product/9ir2/JRE:/oracle/opt/oracle/product/9ir2/jlib:/oracle/opt/oracle/product/9ir2/rdbms/jlib:/oracle/opt/oracle/product/9ir2/network/jlib

      Para o Oracle 10g R2: Defina a variável como CLASSPATH=$CLASSPATH:/opt/oracle/product/10.2/db_1/JRE:/opt/oracle/product/10.2/db_1/jlib:/opt/oracle/product/10.2/db_1/rdbms/jlib:/opt/oracle/product/10.2/db_1/network/jlib

    • PATH: diretório bin da instalação do Oracle.

      Para o Oracle 9i R2: Defina a variável como PATH=$PATH:/opt/oracle/product/9ir2/bin

      Para o Oracle 10g R2: Defina a variável como PATH=$PATH:/opt/oracle/product/10.2/db_1/bin

As variáveis de ambiente podem ser definidas de maneira similar para o banco de dados Oracle 11g.

9.3.3 Conectando-se ao banco de dados

É possível optar por um dos métodos abaixo para se conectar ao banco de dados Oracle usado para o Armazenamento de Dados:

  • Inicie o RMAN na linha de comando do sistema operacional sem se conectar a um banco de dados executando o comando RMAN sem opções de conexão:

    $ rman

    RMAN> CONNECT TARGET /

  • Inicie o executável do RMAN na linha de comando do sistema operacional ao se conectar ao banco de dados:

    $ rman TARGET /

    IMPORTANTE:Se você tiver instalado o banco de dados Oracle 10g ou Oracle 11g em um dispositivo SLES 10, execute o executável RMAN a partir do diretório $ORACLE_HOME/bin/rman.

Se o banco de dados já estiver montado ou aberto, o RMAN exibirá uma saída semelhante a esta:

Recovery Manager: Release 9.2.0.0.0  
connected to target database: RMAN (DBID=1237603294)

O valor DBID exibido é o identificador do banco de dados de destino.

Se o banco de dados de destino não foi iniciado, o RMAN apresentará a seguinte mensagem:

connected to target database (not started)  
RMAN>   # the RMAN prompt is displayed

9.3.4 Iniciando o banco de dados

  1. Inicie o banco de dados com o seguinte comando:

    RMAN> startup mount

    Este comando inicia uma instância do Oracle, caso ele ainda não tenha sido iniciado, e monta o banco de dados sem abri-lo.

    Se a montagem for bem-sucedida, esta saída será exibida:

    Oracle instance started
    database mounted
    

    Se não for bem-sucedida, serão exibidas mensagens de erro relevantes, indicando as causas da falha e as soluções adequadas.

9.3.5 Fazendo backup do banco de dados

Você pode fazer backup do banco de dados no local de disco padrão. O local padrão é específico do sistema operacional. No Linux, o caminho padrão em que os arquivos de backup são armazenados é $ORACLE_HOME/dbs.

Para fazer um backup completo dos arquivos de dados, arquivos de controle e do arquivo de parâmetros do servidor atual no tipo de dispositivo padrão (que é o disco), use o seguinte comando de backup no prompt do RMAN:

RMAN> BACKUP DATABASE;

No comando acima, o parâmetro FORMAT não é especificado; portanto, RMAN fornece automaticamente a cada parte do backup um nome exclusivo e o armazena no local padrão específico do OS ($ORACLE_HOME/dbs no Linux).

Para especificar um nome de arquivo para o backup, use o comando backup com o parâmetro FORMAT:

RMAN> BACKUP DATABASE FORMAT’/tmp/%U’;

%U gera um nome de arquivo exclusivo.

O comando backup do RMAN cria um conjunto de backup, que é um objeto lógico com um ou mais backups.

A saída do comando backup contém as informações essenciais sobre o backup, como mostra o seguinte exemplo:

Starting backup at JULY 12 2009 19:09:48
using target database controlfile instead of recovery catalogal
located channel: ORA_DISK_1
channel ORA_DISK_1: sid=10 devtype=DISK
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
including current SPFILE in backupset
including current controlfile in backupset
input datafile fno=00001 name=/oracle/oradata/zenworks/system01.dbf
input datafile fno=00002 name=/oracle/oradata/zenworks/undotbs01.dbf
input datafile fno=00003 name=/oracle/oradata/zenworks/cwmlite01.dbf
input datafile fno=00004 name=/oracle/oradata/zenworks/drsys01.dbf
input datafile fno=00005 name=/oracle/oradata/zenworks/example01.dbf
input datafile fno=00006 name=/oracle/oradata/zenworks /indx01.dbf
input datafile fno=00007 name=/oracle/oradata/zenworks/tools01.dbf
input datafile fno=00008 name=/oracle/oradata/zenworks/users01.dbf
channel ORA_DISK_1: starting piece 1 at  JULY 12 2009  19:09:56
channel ORA_DISK_1: finished piece 1 at  JULY 12 2009 19:10:31
piece handle=/oracle/dbs/lvd6dtk1_1_1 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:39
Finished backup at JULY 12 2009 19:10:33

9.3.6 Recuperando o banco de dados

É possível recuperar um arquivo de dados restaurado aplicando registros de redo arquivados e registros de redo online, registros de mudanças efetuadas no banco de dados após o backup. Estas seções contêm instruções sobre dois métodos para a recuperação do banco de dados:

Recuperação completa

A recuperação completa envolve o uso de dados de redo ou backups incrementais combinados ao backup de um banco de dados, tablespace ou arquivo de dados, para atualizar até o momento mais atual. Essa é uma recuperação completa porque o Oracle aplica todas as mudanças de redo contidas nos registros arquivados e online ao backup. Normalmente, uma recuperação de mídia completa é executada depois que uma falha de mídia danifica arquivos de dados ou o arquivo de controle.

  1. Use a seguinte seqüência de comandos para executar uma recuperação completa do banco de dados.

    RMAN> connect target /

    RMAN> run {

    2> startup mount ;

    3> restore database ;

    4> recover database ;

    5> alter database open ;

    6> }

    Isso resulta na restauração e subseqüente recuperação de todos os arquivos de dados. O RMAN aplica registros arquivados quando necessário até a recuperação ser concluída.

  2. Após a restauração, é necessário verificar se o Armazenamento de Dados está sincronizado com o Armazenamento de Objetos. Para obter instruções, consulte a Seção 9.4, Sincronizando o Armazenamento de Objetos e o Armazenamento de Dados.

Recuperação incompleta

O RMAN pode executar procedimentos de recuperação do banco de dados inteiro até um momento especificado, SCN ou número de seqüência de registro. Esse tipo de recuperação chama-se recuperação incompleta porque não usa por completo todos os registros de redo disponíveis. A recuperação incompleta do banco de dados inteiro também se chama recuperação de ponto no tempo do banco de dados (DBPITR).

Faça uma recuperação incompleta do banco de dados nas seguintes situações:

  • Uma falha de mídia destrói alguns ou todos os registros de redo online.

  • Um erro do usuário causa perda de dados. Por exemplo, um usuário elimina uma tabela acidentalmente.

  • Você não pode executar uma recuperação completa porque há um registro de redo arquivado ausente.

Para executar uma recuperação incompleta, restaure todos os arquivos de dados com backups criados antes do momento em que uma recuperação se faz necessária e abra o banco de dados com a opção RESETLOGS após a recuperação. A operação de RESETLOGS cria uma nova instância do banco de dados; ou seja, um banco de dados com um novo fluxo de números de seqüência de registro que começam com a seqüência 1.

O banco de dados deve ser fechado em uma recuperação incompleta.

Para executar uma recuperação incompleta:

  1. Defina a variável de ambiente de formato de hora:

    $ NLS_DATE_FORMAT="Mon DD YYYY HH24:MI:SS"

  2. Use a seguinte seqüência de comandos:

    $ rman target /

    RMAN> startup mount;

    RMAN> run {

    2> set until time "to_date('Jul 12 2009 10:24:00', 'MM DD YYYY HH24:MI:SS')";

    3> restore database ;

    4> recover database ;

    5> }

    O RMAN usa o último backup criado antes do horário mencionado no comando set until para restaurar os arquivos em seus locais padrão. Em seguida, ele usa os registros de redo arquivados (se necessários) para recuperar o banco de dados.

    Dois outros parâmetros que podem ser usados com o comando set until são SCN e os números de seqüência de registro. Os SCNs são obtidos nos registros de alerta. Localize o SCN de um evento e recupere até um SCN anterior. Por exemplo:

    SET UNTIL SCN 1000
    
  3. Se a recuperação for bem-sucedida, abra o banco de dados e redefina os registros online:

    ALTER DATABASE OPEN RESETLOGS;

  4. Após a restauração, é necessário verificar se o Armazenamento de Dados está sincronizado com o Armazenamento de Objetos. Para obter instruções, consulte a Seção 9.4, Sincronizando o Armazenamento de Objetos e o Armazenamento de Dados.

É recomendável fazer o backup do banco de dados imediatamente, de preferência com o banco de dados montado (para evitar possível perda de dados em um banco de dados aberto). Como o banco de dados é uma nova instância, os backups efetuados antes de RESETLOGS não são utilizados com facilidade.

9.3.7 Encerrando o banco de dados

  1. Use o seguinte comando para encerrar o banco de dados:

    RMAN> SHUTDOWN NORMAL;

    Esse comando desmonta o banco de dados e interrompe a execução da instância do Oracle.

9.3.8 Backup e recuperação gerenciados pelo usuário

  1. Em todos os servidores ZENworks 7.3 Linux Management configurados com o banco de dados de origem, interrompa todos os serviços do ZENworks usando o seguinte comando:

    zlm-config --stop

  2. No banco de dados de origem que está executando sua instância de banco de dados, faça um backup lógico do esquema de objetos de banco de dados do ZENworks executando os utilitários de exportação como um usuário de banco de dados Oracle (conforme a seguir):

    exp zenadmin/novell@ORCL FILE=NOVELL-ZENWORKS-ORAZLM.DMP LOG=NOVELL-ZENWORKS-ORAZLM.LOG OWNER=ZENADMIN

    em que ORCL é o identificador padrão do sistema Oracle, e novell é a senha padrão do usuário zenadmin.

    Com isso, são criados o arquivo de backup NOVELL-ZENWORKS-ORAZLM.DMP e o arquivo de registro ZENWORKS-ORAZLM.LOG no servidor de banco de dados Oracle.

  3. Execute o utilitário de importação (conforme a seguir) como um usuário de banco de dados Oracle no banco de dados de destino para importar os dados e objetos:

    imp zenadmin/novell@ORCL FILE=NOVELL-ZENWORKS-ORAZLM.DMP LOG=NOVELL-ZENWORKS-ORAZLM.LOG IGNORE=Y FROMUSER=ZENADMIN TOUSER=ZENADMIN

    em que ORCL é o identificador padrão do sistema Oracle, e novell é a senha padrão do usuário zenadmin.

    IMPORTANTE:Antes de executar o utilitário de importação, faça um backup confiável do diretório /opt/oracle/novell/zenworks/database no banco de dados de destino.

    Ignore todos os avisos de compilação que possam ser exibidos durante o processo de criação do objeto.

  4. No banco de dados de destino, efetue login como o usuário sysdba, pare e inicie a instância do Oracle usando os seguintes comandos no prompt SQL:

    encerramento imediato

    startup

  5. No servidor de banco de dados de destino, pare e inicie o serviço de escuta usando os seguintes comandos no prompt SQL:

    lsnrctl stop

    lsnrctl start

  6. No servidor ZENworks 7.3 Linux Management, inicie todos os serviços do ZENworks usando o seguinte comando:

    zlm-config --start

  7. Sincronize o Armazenamento de Dados com o Armazenamento de Objetos. Para obter mais informações sobre como sincronizar o Armazenamento de Dados com o Armazenamento de Objetos, consulte a Seção 9.4, Sincronizando o Armazenamento de Objetos e o Armazenamento de Dados.