Manual de referência rápida do RMAN Incomplete Recovery

Resumo: Cenário: o Servidor A é um ambiente de produção normal e um conjunto do mesmo ambiente precisa ser implantado no Servidor B para teste. O artigo apresenta todo o processo de uso do RMAN para restaurar o banco de dados de forma incompleta para um determinado SCN e OPEN em uma máquina diferente.É recomendado salvá-lo para backup.

 

Cenário do aplicativo : o servidor A é um ambiente de produção normal e um conjunto do mesmo ambiente precisa ser implantado no servidor B para teste.
Ambiente de banco de dados : RHEL6.4 + Oracle 11.2.0.4.7

1. O servidor A faz backup do banco de dados

1.1 Backup online (o banco de dados é executado no modo de arquivo)

nohup /bin/bash backup_all.sh &

Após o backup, transfira todas as mídias de backup para o servidor B (se as duas máquinas estiverem conectadas à rede, considere combinar o serviço NFS para fazer backup no servidor B desde o início).

1.2 Conteúdo do script de backup

#!/bin/bash
#ScriptName:backup_all.sh
#Usage: backup all files in oracle user environment.
#ex: nohup /bin/bash backup_all.sh > backup.log & 
#Author: Alfred Zhao
#Creation: 2015-09-11
#Version: 1.0.0

#Define variable <You may need to change the value of basedir.>
basedir=/u01/orabak
date=`date +%Y%m%d`

#Create pfile
sqlplus / as sysdba <<EOF
create pfile='$basedir/pfile$date.ora' from spfile;
EOF

#RMAN BACKUP
rman target / log=$basedir/backup_all_$date.log <<EOF
run{
allocate channel c1 device type disk;
allocate channel c2 device type disk;
backup database filesperset 4 format '$basedir/full_%d_%T_%s_%p';
sql 'alter system archive log current';
sql 'alter system archive log current';
sql 'alter system archive log current';
sql 'alter system archive log current';
backup archivelog all format '$basedir/arch_%d_%T_%s_%p' delete input;
backup current controlfile format '$basedir/ctl_%d_%T_%s_%p';
release channel c1;
release channel c2;
}
EOF

2. O servidor B restaura o banco de dados

2.1 Servidor B instala software de banco de dados

Consulte o documento Motian Wheel para instalar o software de banco de dados e as configurações anteriores relacionadas.
Em seguida, crie um arquivo de senha:

orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=oracle force=y entries=5

2.2 Inicie a instância para o estado nomount (especifique o arquivo pfile)

Copie o $basedir/pfile$date.oraarquivo $ORACLE_HOME/dbs/init$ORACLE_SID.orae modifique-o de acordo com a situação real do servidor B. Em seguida, inicie a instância no estado nomount (especifique o arquivo pfile).

startup nomount pfile='$ORACLE_HOME/dbs/init$ORACLE_SID.ora'

2.3 O RMAN restaura o arquivo de controle para determinar a validade do conjunto de backup

2.3.1 O RMAN restaura o arquivo de controle, inicia o banco de dados para o estado de montagem e determina a validade do conjunto de backup

backupControlFile=/u01/orabak/backup/ctl_JINGYU_20150911_46_1
rman target / > crosscheck.log <<EOF
restore controlfile from '$backupControlFile';
alter database mount;
crosscheck backupset;
EOF

2.3.2 Se o conjunto de backup for inválido, exclua o conjunto de backup inválido e registre manualmente o conjunto de backup

Geralmente, os diretórios de backup dos dois hosts são diferentes. O caminho do conjunto de backup gravado no arquivo de controle não pode encontrar o conjunto de backup correspondente e o status é 'EXPIRED'. Neste momento, você deve excluir esses conjuntos de backup expirados, catalogar o novo conjunto de backup e confirmar novamente A validade do conjunto de backup.

rman target / > catalog.log <<EOF
catalog backuppiece '/u01/orabak/backup/full_JINGYU_20150911_39_1';
catalog backuppiece '/u01/orabak/backup/full_JINGYU_20150911_40_1';
catalog backuppiece '/u01/orabak/backup/full_JINGYU_20150911_41_1';
catalog backuppiece '/u01/orabak/backup/full_JINGYU_20150911_42_1';
catalog backuppiece '/u01/orabak/backup/arch_JINGYU_20150911_43_1';
catalog backuppiece '/u01/orabak/backup/arch_JINGYU_20150911_44_1';
catalog backuppiece '/u01/orabak/backup/arch_JINGYU_20150911_45_1';
crosscheck backupset;
delete noprompt expired backupset;
EOF

2.4 Banco de dados de recuperação RMAN

2.4.1 Restaurar arquivo de dados

Se o diretório de armazenamento do arquivo de dados foi alterado, ele precisa ser renomeado e restaurado.

rman target / log=restore.log <<EOF
run {
allocate channel c1 device type disk;
allocate channel c2 device type disk;
set newname for datafile 1 to '/u01/oradata02/o1_mf_system_01.dbf';
set newname for datafile 2 to '/u01/oradata02/o1_mf_sysaux_01.dbf';
set newname for datafile 3 to '/u01/oradata02/o1_mf_undotbs1_01.dbf';
set newname for datafile 4 to '/u01/oradata02/o1_mf_users_01.dbf';
set newname for datafile 5 to '/u01/oradata02/o1_mf_dbs_d_ji_01.dbf';
set newname for datafile 6 to '/u01/oradata02/o1_mf_dbs_d_lu_01.dbf';
set newname for datafile 7 to '/u01/oradata02/o1_mf_dbs_d_xx_01.dbf';
set newname for datafile 8 to '/u01/oradata02/o1_mf_dbs_i_xx_01.dbf';
restore database;   
switch datafile all;
release channel c1;
release channel c2;
}
EOF

2.4.2 recuperar arquivo de dados

2.4.2.1 recuperar banco de dados;

rman target / log=recover.log <<EOF 
recover database;
EOF

2.4.2.2 recuperar banco de dados até scn xxxxxxx;

scn=1463689
rman target / log=recover$scn.log <<EOF
recover database until scn $scn;
EOF

Este scn é obtido de acordo com as informações de log na etapa anterior.

2.4.3 Modificar o caminho do arquivo de log

new_dest=/usr3/oradata/sysdata/redo_file
sqlplus / as sysdba > logfile.log<<EOF
set linesize 180 pagesize 100
select 'alter database rename file '''||member||''' to ''$new_dest/redoXXX.log'';' from v\$logfile;
EOF

Nota: Você pode usar o modo de edição de coluna UE para processar rapidamente o novo nome do arquivo de redo (ou seja, redoXXX.log é alterado para o valor real correspondente).

2.4.4 Modificar o caminho do arquivo temporário

new_dest=/usr3/oradata/sysdata
sqlplus / as sysdba > tempfile.log<<EOF
set linesize 180 pagesize 100
select 'alter database rename file '''||name||''' to ''$new_dest/tempXXX.dbf'';' from v\$tempfile;
EOF

 

Nota: O novo nome do arquivo temporário também é processado (ou seja, tempXXX.dbf é alterado para o valor real correspondente).

2.4.5 Abra o banco de dados (resetlogs)

sqlplus / as sysdba > dbopen.log<<EOF
alter database open resetlogs;
EOF

 

Arquivos refazer e arquivos temporários são criados automaticamente durante o processo de inicialização.

2.5 Operações após a recuperação

2.5.1 Ver informações básicas do banco de dados

Visualize o status de instâncias de banco de dados e bibliotecas, arquivos de dados, arquivos temporários, arquivos de log, arquivos de controle, informações de caminho de arquivo de parâmetro.

sqlplus / as sysdba > dbstatus.log <<EOF
select instance_name, status from v\$instance;
select dbid, open_mode from v\$database;
select file_name from dba_data_files;
select file_name from dba_temp_files;
select member from v\$logfile;
show parameter control
show parameter pfile
EOF

 

2.5.2 Crie um arquivo spfile, reinicie o banco de dados

Criar arquivo spfile

sqlplus / as sysdba > createSpfile.log <<EOF
create spfile from pfile;
EOF

 

Feche o banco de dados

sqlplus / as sysdba > shutdownDB.log <<EOF
shutdown immediate
EOF

 

Inicie o banco de dados

sqlplus / as sysdba > startDB.log <<EOF
startup
EOF

 

2.5.3 Configuração de monitoramento

Modifique o arquivo de configuração de escuta: $ ORACLE_HOME / network / admin / listener.ora

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = JY-DB02)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

 

ADR_BASE_LISTENER = / u01 / app / oracle
corresponde a 3 modificações relacionadas ao nome do host do servidor:

1. hostname显示正确主机名 2. /etc/sysconfig/network中HOSTNAME配置 3. /etc/hosts中IP地址和主机名的对应关系

Comece a monitorar e visualizar o status de monitoramento:

lsnrctl start
lsnrctl status

 

Acho que você gosta

Origin blog.csdn.net/weixin_41086692/article/details/103392151
Recomendado
Clasificación