- Este tópico contém 1 resposta, 2 vozes e foi atualizado pela última vez 17 anos atrás por
Rodrigo Almeida.
-
AutorPosts
-
19 de março de 2009 às 6:57 am #85868
damata
ParticipanteFala pessoal,
desculpe a demora para responder, mas há algumas semanas atrás eu postei perguntando sobre como restaurar um backup de uma banco em linux em um servidor Windows. Eu precisava fazer isso pois iria migrar o servidor da empresa onde trabalho e depois do sufoco, estou postando como fazer um backup Cross Plataform.
Na realidade o procedimento é muito simples:
1- Abrir o banco no modo read-only:
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE OPEN READ ONLY;OBS.: Fiz isso em um ambiente RAC e na primeira vez tive problemas. Na realidade o banco não estava em read-only. Para verificar isso execute o sql:
SQL> select HXFIL File_num, FHTHR Thread, HXFNM File_name,FHTYP Type,HXERR Validity,FHSCN SCN, FHSTA status ,FHRBA_SEQ Sequence from X$KCVFH order by FHTHR;Todos os datafiles devem ter status igual a zero. Apenas o datafile da tablespace system que tem um valor diferente (8192).
2 – Verificar se a conversão é possível:
set serveroutput on
declare
db_ready boolean;
begin
/* db_ready is ignored, but with SERVEROUTPUT set to ON any
* conditions preventing transport will be output to console */
db_ready := dbms_tdb.check_db(‘Microsoft Windows IA (32-bit)’,
dbms_tdb.skip_none);
end;3 – Verificar os objetos externos (tabelas e diretorios externos não são tranportados):
SQL> set serveroutput on
SQL> declare
external boolean;
begin
/* value of external is ignored, but with SERVEROUTPUT set to ON
* dbms_tdb.check_external displays report of external objects
* on console */
external := dbms_tdb.check_external;
end;Saída do pl/sql :
The following external tables exist in the database:
SH.SALES_TRANSACTIONS_EXT
The following directories exist in the database:
SYS.DATA_PUMP_DIR, SYS.MEDIA_DIR, SYS.DATA_FILE_DIR, SYS.LOG_FILE_DIR
The following BFILEs exist in the database:
PM.PRINT_MEDIAPL/SQL procedure successfully completed.
4 – Fazer o backup:
Há duas formas de fazer o backup cross plataform. Um onde a conversão é feita na origem e a outra onde a conversão é feita no destino.
a. Conversão no destino:
Eu não utilizei essa opção, mas acredito que funcione também. O comando é o seguinte:
RMAN>
CONVERT DATABASE ON TARGET PLATFORM
CONVERT SCRIPT ‘caminho/convertscript.rman’
TRANSPORT SCRIPT ‘transportscript.sql’
NEW DATABASE ‘DEVDBWIN’ FORMAT ‘oracleDEVDBWIN%U’;Esse comando irá gerar um script de conversão que eu chamei de ‘caminho/convertscript.rman’. Que na realidade são comandos de convert datafiles do RMAN. Irá gerar um script de transporte ‘transportscript.sql’, que é a criação do control file e upgrade para iniciar o novo banco.
Esse comando (CONVERT DATABASE ON TARGET ) não irá fazer a copia dos datafiles. Após a execução do comando no RMAN apenas os scripsts serão criados, você deve baixar o banco e fazer a copia dos datafiles para o servidor onde será feita a conversão.
OBS. Fique atento com o nomes dos datafiles e o caminho (FORMAT ‘oracleDEVDBWIN%U’ especifica o formato e o caminho dos datafiles no scripts). Provavelmente os scripts deverão ser modificados com o caminho correto.
OBS. Para execução dos scripts é necessário ter uma instancia de banco:
Para criar uma instância manualmente no windows:
set ORACLE_SID=SID
oradim -new -sid %ORACLE_SID% -intpwd PASSWORD -startmode MApós isso faça o seguinte:
– Abra o Banco em nomount;
– Crie o controlfile com os datafiles não convertidos ainda;
– Execute o script de conversão
– Shutdown no banco
– Execute o script de transporte (esse script irá criar o controlfile, abrir o banco com a opção resetlogs, executar os scripts de upgrade …)OBS. O arquivo de init também deve ser editado corretamente para o novo servidor.
a. Conversão na origem:
Eu usei essa opção. E quando se executa o comando ele já converte e salva todos os datafiles.
RMAN>
CONVERT DATABASE NEW DATABASE ‘GEODB’ transport script ‘/oracle/u05/archive/backup/bkp_win_convert/transportscript_GEODB.rman’ to platform ‘Microsoft Windows IA (64-bit)’ db_file_name_convert ‘/oracle/’ ‘/bkp_win_convert/’;OBS. O paramentro db_file_name_convert irá trocar o nome do datafile ‘/oracle/NOME’ para ‘/bkp_win_convert/NOME’
O local onde será salvo os arquivos é especificado pelo RMAN:
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO ‘ CAMINHO/%F’Após a execução do comando é só copiar os datafiles para o outro servidor, criar uma instância e executar o script de transporte. Provavelmente esse script deve ser editado corretamente.
OBS. O arquivo de init também deve ser editado corretamente para o novo servidor.
Bom…. é isso. Não tem muito segredo….
Valew pessoal!!!
att.
Guilherme DamataOBS. COm referência eu usei o site:
http://download.oracle.com/docs/cd/B193 … m#CHDEICED19 de março de 2009 às 4:40 pm #85869Rodrigo Almeida
ParticipanteOlá Guilherme,
Muito bom o Cross-Platform e mandou bem na explicação. Esse recurso do RMAN realmente ajuda muito nos ambientes de hoje em dia.
Abraços,
Rodrigo Almeida -
AutorPosts
- Você deve fazer login para responder a este tópico.