Recuperar um Banco de Dados do Serviço Object Storage Usando o Backup do RMAN
Este artigo explica como recuperar um backup do RMAN (Recovery Manager) armazenado no Object Storage.
Pré-requisitos
Será necessário o seguinte:
- Um novo sistema de banco de dados para o qual o banco de dados será restaurado (consulte as premissas abaixo). Para obter mais informações, consulte Visão Geral da Criação de um Sistema de Banco de Dados.
- O Módulo de Backup do Oracle Database Cloud deve ser instalado no sistema de banco de dados. Para obter mais informações, consulte Instalando o Módulo de Backup no Sistema de Banco de Dados em Fazer Backup de um Banco de Dados no Serviço Object Storage Usando o RMAN.
Premissas
Os procedimentos abaixo pressupõem o seguinte:
- Um novo sistema de banco de dados foi criado para hospedar o banco de dados restaurado e não há outro banco de dados presente no novo sistema de banco de dados. É possível restaurar para um sistema de banco de dados que tenha bancos de dados existentes, mas isso está além do escopo deste tópico.
-
O banco de dados original foi perdido e tudo o que resta é o backup mais recente do RMAN. O procedimento pressupõe que o sistema de banco de dados (incluindo o banco de dados) não existe mais.
Observação:
Todos os dados não incluídos no backup mais recente serão perdidos. - As chaves de criptografia e/ou do Oracle Wallet usadas no banco de dados original no momento do último backup estão disponíveis.
- O backup do RMAN contém uma cópia do arquivo de controle e do spfile do backup mais recente, bem como de todos os backups do arquivo de dados e do log de arquivamento necessários para executar uma recuperação completa do banco de dados.
- Um catálogo do RMAN não será usado durante a restauração.
Configurar o Armazenamento no sistema de banco de dados
- Estabeleça conexão via SSH com o Sistema de Banco de Dados.
ssh -i <private_key_path> opc@<db_system_ip_address>
- Faça log-in como opc e, em seguida, sudo para o usuário raiz. Use
sudo su -
com um hífen para chamar o perfil do usuário raiz, que definirá o PATH para o diretório dbcli (/opt/oracle/dcs/bin
).login as: opc sudo su -
- Você pode usar um home de banco de dados vazio existente ou criar um novo para a restauração. Use os comandos aplicáveis para concluir esta etapa.
Se você estiver usando um home de banco de dados existente:
-
Use os Comandos Dbhome para listar os homes de banco de dados.
Saída:dbcli list-dbhomes
ID Name DB Version Home Location ---------------------------------------- -------------------- ---------- --------------------------------------------- 2e743050-b41d-4283-988f-f33d7b082bda OraDB12102_home1 12.1.0.2 /u01/app/oracle/product/12.1.0.2/dbhome_1
-
Use os Comandos Database para garantir que o home do banco de dados não esteja associado a nenhum banco de dados.
Se necessário, use os Comandos Dbhome para criar um home de banco de dados para a restauração.
-
- Use os Comandos Dbstorage para configurar diretórios para armazenamento DATA, RECO e REDO. O exemplo a seguir cria 10 GB de armazenamento ACFS para o banco de dados rectest.
dbcli create-dbstorage --dbname rectest --dataSize 10 --dbstorage ACFS
Observação:
Ao restaurar um banco de dados versão 11.2, o armazenamento ACFS deve ser especificado.
Executar a Restauração e Recuperação do Banco de Dados
- Estabeleça conexão via SSH com o sistema de banco de dados, faça log-in como opc e, em seguida, torne-se o usuário oracle.
sudo su - oracle
- Crie uma entrada em
/etc/oratab
para o banco de dados. Use o mesmo SID do banco de dados original.db1:/u01/app/oracle/product/12.1.0.2/dbhome_1:N
- Defina as variáveis de ambiente
ORACLE_HOME
eORACLE_SID
usando o utilitário oraenv.. oraenv
- Obtenha o DBID do banco de dados original. Isso pode ser obtido do nome do arquivo do backup automático
controlfile
na mídia de backup. O nome do arquivo incluirá uma string que contém o DBID. O formato típico da string éc-DDDDDDDDDDDD-YYYYMMDD-NN
, em queDDDDDDDDDDDD
corresponde ao DBID,YYYYMMDD
corresponde à data em que o backup foi criado eNN
corresponde a um número de sequência para tornar o nome do arquivo exclusivo. O DBID nos exemplos a seguir é 1508405000. Seu DBID será diferente.Use a sintaxe curl a seguir para executar uma consulta geral do Object Storage. Os parâmetros em vermelho são os mesmos parâmetros especificados durante a instalação do módulo de backup, conforme descrito em Instalando o Módulo de Backup no Sistema de Banco de Dados em Fazer Backup de um Banco de Dados no Serviço Object Storage Usando o RMAN.
curl -u '<user_ID>.com:<auth_token>' -v https://swiftobjectstorage.<region_name>.oraclecloud.com/v1/<object_storage_namespace>
Para pesquisar o nome da região, consulte Regiões e Domínios de Disponibilidade.
Por exemplo:
curl -u 'djones@mycompany.com:1cnk!d0++ptETd&C;tHR' -v https://swiftobjectstorage.<region_name>.oraclecloud.com/v1/myobjectstoragenamespace
Para obter o DBID do nome do arquivo de controle, use a seguinte sintaxe:
curl -u '<user_id>.com:<auth_token>' -v https://swiftobjectstorage.<region_name>.oraclecloud.com/v1/<object_storage_namespace>/<bucket_name>?prefix=sbt_catalog/c-
Por exemplo:
curl -u 'djones@mycompany.com:1cnk!d0++ptETd&C;tHR' -v https://swiftobjectstorage.<region_name>.oraclecloud.com/v1/myobjectstoragenamespace/dbbackups/?prefix=sbt_catalog/c-
Na saída de amostra abaixo, 15084000 corresponde ao DBID.
{ "bytes": 1732, "content_type": "binary/octet-stream", "hash": "f1b61f08892734ed7af4f1ddaabae317", "last_modified": "2016-08-11T20:28:34.438000", "name": "sbt_catalog/c-1508405000-20160811-00/metadata.xml" }
- Execute o RMAN e estabeleça conexão com o banco de dados de destino. Não é necessário criar um
pfile
ouspfile
ou usar um backupcontrolfile
. Eles serão restaurados nas etapas a seguir. Observe que o banco de dados de destino é(not started)
. Isso é normal e esperado nesse ponto.
Saída:rman target /
Recovery Manager: Release 12.1.0.2.0 - Production on Wed Jun 22 18:36:40 2016 Copyright (c) 1982, 2014, Oracle and/or its affiliates. All rights reserved. connected to target database (not started)
- Defina o DBID usando o valor obtido acima.
set dbid 1508405000;
- Execute o seguinte comando. Se o arquivo de parâmetros do servidor não estiver disponível, o RMAN tentará iniciar a instância com um arquivo de parâmetros do servidor dummy. Os erros ORA-01078 e LRM-00109 são normais e podem ser ignorados.
STARTUP NOMOUNT
startup failed: ORA-01078: failure in processing system parameters LRM-00109: could not open parameter file '/u01/app/oracle/product/12.1.0.2/dbhome_1/dbs/initdb1.ora' starting Oracle instance without parameter file for retrieval of spfile Oracle instance started Total System Global Area 2147483648 bytes Fixed Size 2944952 bytes Variable Size 847249480 bytes Database Buffers 1254096896 bytes Redo Buffers 43192320 bytes
- Restaure o arquivo de parâmetros do servidor do backup automático.
A SBT_LIBRARY é a mesma biblioteca especificada com o parâmetro
-libDir
de quando o Módulo de Backup foi instalado, por exemplo,/home/oracle/lib/
.O OPC_PFILE é o mesmo arquivo especificado com o parâmetro
-configfile
de quando o Módulo de Backup foi instalado, por exemplo,/home/oracle/config
.set controlfile autobackup format for device type sbt to '%F'; run { allocate channel c1 device type sbt PARMS 'SBT_LIBRARY=/home/oracle/lib/libopc.so, SBT_PARMS=(OPC_PFILE=/home/oracle/config)'; restore spfile from autobackup; }
- Crie o diretório para audit_file_dest. O padrão é
/u01/app/oracle/admin/$ORACLE_SID/adump
. Você pode ver a definição usada pelo banco de dados original, pesquisando a stringaudit_file_dest
no spfile.strings ${ORACLE_HOME}/dbs/spfile${ORACLE_SID}.ora | grep audit_file_dest *.audit_file_dest='/u01/app/oracle/admin/db1/adump' mkdir -p /u01/app/oracle/admin/db1/adump
- Se o rastreamento de alterações em blocos estiver ativado no banco de dados original, crie o diretório para o arquivo de rastreamento de alterações em blocos. O diretório estará em
db_create_file_dest
. Pesquise o nome do diretório nospfile
.strings ${ORACLE_HOME}/dbs/spfile${ORACLE_SID}.ora | grep db_create_file_dest *.db_create_file_dest='/u02/app/oracle/oradata/db1' mkdir -p /u02/app/oracle/oradata/db1/<$ORA_UNQNAME if available or database name>/changetracking
- Reinicie a instância com o arquivo de parâmetros do servidor restaurado.
STARTUP FORCE NOMOUNT;
- Restaure o arquivo de controle do backup automático do RMAN e monte o banco de dados.
set controlfile autobackup format for device type sbt to '%F'; run { allocate channel c1 device type sbt PARMS 'SBT_LIBRARY=/home/oracle/lib/libopc.so, SBT_PARMS=(OPC_PFILE=/home/oracle/config)'; restore controlfile from autobackup; alter database mount; }
- Restaure e recupere o banco de dados
RESTORE DATABASE; RECOVER DATABASE;
- O RMAN será recuperado usando redo logs arquivados até não encontrar mais logs. É normal que ocorra um erro semelhante ao abaixo quando o RMAN aplicar o último redo log arquivado no backup e não encontrar mais logs.
unable to find archived log archived log thread=1 sequence=29 RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of recover command at 06/28/2016 00:57:35 RMAN-06054: media recovery requesting unknown archived log for thread 1 with sequence 29 and starting SCN of 2349563
- Abra o banco de dados com RESETLOGS.
ALTER DATABASE OPEN RESETLOGS;
A recuperação é concluída. O banco de dados terá todas as transações confirmadas a partir do último redo log arquivado com backup.