- This topic has 4 replies, 2 voices, and was last updated 5 years, 8 months ago by José Laurindo Chiappa.
-
AuthorPosts
-
12 de fevereiro de 2019 at 1:29 pm #117908Edgar Rombesso RisolaParticipant
Boa tarde Galera…
Tenho um banco em 10g e precisava criar um backup via rman que fosse automatico efetuando um backup full com archives rodando de segunda e quinta as 22:00
Alguem pode ajudar??
13 de fevereiro de 2019 at 8:44 am #117992José Laurindo ChiappaModeratorBlz, Sim, eu posso ajudar, principalmente colocando alguns PARÂMETROS e CONCEITOS criticamente importantes quando se fala de backup :
1. mais importante de tudo, SAIBA que *** Não Existe *** backup automático no RMAN, ponto : é VOCÊ que vai ter que escrever um script que será executado periodicamente pela sua ferramenta de automação nativa do seu Sistema Operacional, OU (se vc vai integrar o RMAN numa solução de backup terceira, tipo Netbackup, dataProtector, etc, etc) é você que tem que configurar a tool terceira para disparo automatizado
2. outro ponto crucial é explicar pra gente QUAL hardware vc vai utilizar para backup : uma área de disco de trabalho, de onde depois os backups são movidos para fita, disco externo, nuvem ou seja qual for a sua solução de armazenamento EXTERNO de backup ? Direto pra fita, ou pra um disco removível ? Ou o que ?? detalhes…. E eu INSISTO na palavra EXTERNO, pois backup que reside no servidor não é backup : dá um crash no servidor e vc perdeu ele, né não ??
3. veja vc : via de regra um banco Oracle ativo e produzindo sofre montes e montes de DMLs por parte dos usuários, então VAI GERAR montes e montes de redo log, redo esse que será ARQUIVADO…. A área de disco onde esses redo logs são arquivados NÃO É INFINITA (óbvio), então via de regra após backup desses archives (VÁRIOS BACKUPS, na verdade, não um só) eles TEM que ser removidos, para LIMPAR/LIBERAR essa área de archives….
Vc não diz mas imagino que o seu plano é fazer backup de banco+archives na 2af, 3af, 4af, 5a e somente depois desses 4 backups bem sucedidos aí sim vc vai apagar do disco os archives, é isso ?? Se sim, vc MENSUROU o consumo dessa área de archives, ela tem espaço o suficiente pra aguentar todas as transações/operações dos seus usuários que geram redo de 2a até 5af , sem risco de encher ?? Pois cfrme imagino que vc saiba, se a área de archives encher o banco Oracle imediatamente congela/fica indisponível, para evitar perda de recuperabilidade…===> Se vc nos dizer TODOS esses detalhes acima, eu posso te indicar um script que faça mais ou menos isso , sem problemas – só AVISO que o que vc vai receber é um script DE EXEMPLO, pra vc ter uma NOÇÃO, uma BASE do que vc vai fazer – NEM PENSE em usar em prod isso, ok ??
Abraços,
Chiappa
Obs : principalmente notar no item 1 : se vc for integrar o RMAN com solução de terceiros, muito Certamente vc vai precisar de uma consultoria mais especializada nessa solução terceira, nem de longe eu conheço TODOS os comandos de TODAS as soluções de backup terceiras que podem ser integradas ao RMAN….
13 de fevereiro de 2019 at 3:09 pm #118037Edgar Rombesso RisolaParticipantOpa…vamos lá…Chiappa….
1. Automático quando digo é um script que rode em determinado momento conforme programado no Cron
2. O local será no próprio server em um diretório e posteriormente após o backup ele será movido para outro local externo. o server não tem problema de espaço pois é servido por um storage e depois este backup que esta no storage será movido para outro local externo a ele.
3. então..o plano é fazer backup do banco full mais archives na segunda e na quinta..neste intervalo qualquer estrategia pode ser valida..e este backup full depois de feito sera movido para localidade externa..sim..é interessante que depois de feito esse full sejam removidos archives antes da segunda…e também backups com mais de 2 semanas…vou testar isso em homologação e adaptar para produção posteriormente…enquanto isso o processo é feito manualmente no rman..13 de fevereiro de 2019 at 5:40 pm #118041José Laurindo ChiappaModeratorok, alguns pontos :
– vc ENTENDEU que não é só remover os arquivos de backup, eu estou falando em apagar os archived redo logs que já deveriam ter sido backupeados 4 vezes na 5a feira, certo ?? A razão para isso é, COMO EU DISSE, evitar que a área de archives (NÃO a área de backups, mas sim a área de archives!!) fique cheia, pois se isso acontecer o banco CONGELA, fica Indisponível… okdoc ??? E ** não é ** porque o ambiente “é servidor por um Storage” que vc pode Assumir que o espaço é suficiente, sem uma ANálise mais rigorosa, sim sim ??
– qual o sistema Operacional ?? Eu vou usar aqui no meu exemplo Linux (pois é o que eu tenho aqui para testest fácil), então usarei CRON, mas se for Windows o sistema operacional do servidor vc TEM que usar outra linguagem de scripting que não o bash shell scripting que usarei, e VAI usar o gerenciador de Tarefas do Windows, não o cron…
– deve valer a pena vc fazer um shutdown limpo a primeira vez antes de implementar essa politica de backup, para Evitar qquer chance de o recover exigir algum archive que não está mais em disco
– igualmente, é IMPRESCINDÍVEL que vc faça um RESTORE desse backup (preferencialmente numa outra máquina, mas se não der pelo menos um RESTORE PREVIEW pelo menos), e se foi feito o restore em outro servidor, aí fazer o recover e o OPEN do database, também…. Lembre-se, um backup não testado é tão “Confiável” quanto alimento fora do prazo de validade, carro usado comprado sem um mecânico de confiança do lado, etc….
==> Isso dito, um exemplo, baseado num script que costumo usar – primeiro, o script RMAN que vai ser chamado pelo executável do RMAN :
[oracle@primarydb ~]$ cat rman_backup_full.cmd
connect target /
run {
CONFIGURE RETENTION POLICY TO BACKUPED 4 TIMES;
CONFIGURE ARCHIVELOG DELETION POLICY TO BACKUPED 4 TIMES;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO ‘%F’; # default
CROSSCHECK ARCHIVELOG ALL;
CROSSCHECK BACKUP;
allocate channel oem_backup_disk1 type disk format ‘/backup_dir/ORA_rman_full_backup_${ORACLE_SID}_%U.bck’ maxpiecesize 1000 G;
backup tag ‘FULL_CNTRL’ current controlfile;
backup level 0 device type disk tag ‘FULL’ database PLUS ARCHIVELOG;
release channel oem_backup_disk1;
}
allocate channel for maintenance type disk;
delete noprompt obsolete device type disk;
delete noprompt expired archivelog all;
release channel;exit;
==> BASICAMENTE o que estou indicando ali em cima é que :
a. tudo (tanto BACKUPS de datafiles de banco quanto archived redo logs) que forem backupeados 4 vezes (ie, uma vez na 2a, outra na 3a, outra na 4, outra na 5a) é declarado OBSOLETO
b. os archives devbem ser removidos após terem sido backupeados 4 vezes
c. estou assumindo que NÂO EXiSTE catálogo RMAN de banco, e vão ser usados os próprios CONTROLFILES para armazenar os metadados
==> Agora o shell script que efetivamente roda o RMAN, shell script esse que é disparado pelo CRON :
[oracle@primarydb ~]$ cat run_rman_backup_incr.sh
#!/bin/sh
export RMANDATE=
date +%d_%m_%Y
export WHEN=date +%d_%m_%Y-%H:%M:%S
export RMANLOGS=”/fra/flash_recovery_area/PRIDB/rmanlogs”
export ORACLE_BIN=”/home/oracle/app/oracle/product/11.2.0/dbhome_1/bin”
export ORACLE_SID=”DB”echo “Backup Full Iniciado em : ” $WHEN
$ORACLE_BIN/rman cmdfile /home/oracle/rman_backup_incr.cmd log $RMANLOGS/rman_backup_incr_$RMANDATE.log
WHEN=date +%d_%m_%Y-%H:%M:%S
echo “RMAN Backup Full encerrado em : ” $WHEN
==> Pra vc ter o CRON rodando , basta adicionar uma entrada no CRONTAB :
[oracle@primarydb ~]$ crontab -e
…00 20 * * * /bin/sh /home/oracle/run_rman_backup_full.sh > /dev/null
===> Blz ?? É basicamente isso… Apenas VOU FRISAR DE NOVO, para ficar Bem Claro : NÂO assuma que tudo está ok, isto é só um EXEMPLO, pra servir de base de estudos e pra vc saber o que estudar, quais sintaxes adotar ??? Blz ??? NÃO RODE ISSO EM PROD, nem por sombra, sim sim ??
[]s
Chiappa
20 de fevereiro de 2019 at 2:46 pm #120608José Laurindo ChiappaModeratorPra não ficar só no blablablá, EIS uma implementação do script de backup em questão :
=> listagem do script de comandos RMAN :
[oracle@localhost Backups]$ cat /home/oracle/rman_backup_full.cmd connect target / run { CONFIGURE RETENTION POLICY TO REDUNDANCY 4; CONFIGURE ARCHIVELOG DELETION POLICY TO BACKED UP 4 TIMES TO DISK; CONFIGURE CONTROLFILE AUTOBACKUP ON; CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u02/Backups/controlfile_bkp_%F'; CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u02/Backups/snapcf_orcl.f'; CROSSCHECK ARCHIVELOG ALL; CROSSCHECK BACKUP; allocate channel oem_backup_disk1 type disk format '/u02/Backups/ORA_rman_full_backup_${ORACLE_SID}_%U.bkp' maxpiecesize 2 G; backup tag 'FULL_CNTRL' current controlfile; backup tag 'FULL_DB' database PLUS ARCHIVELOG; release channel oem_backup_disk1; } allocate channel for maintenance type disk; delete noprompt obsolete; delete noprompt expired archivelog all; release channel; exit;
[oracle@localhost Backups]$
=> listagem do shell script que aciona o RMAN e roda o script de comandos RMAN :
[oracle@localhost Backups]$ cat /home/oracle/run_rman_backup_full.sh #!/bin/sh export WHEN=$(date +%d-%m-%Y-%M-%S) export RMANLOGS="/u02/Backups" export ORACLE_BIN="/home/oracle/app/oracle/product/11.2.0/dbhome_2/bin" export ORACLE_SID="orcl" echo "Backup Full Iniciado em : " $WHEN $ORACLE_BIN/rman cmdfile /home/oracle/rman_backup_full.cmd log $RMANLOGS/rman_backup_full_$WHEN.log WHEN=$(date +%d-%m-%Y-%M-%S) echo "RMAN Backup Full encerrado em : " $WHEN [oracle@localhost Backups]$
==> Pra vc ter o CRON rodando , basta adicionar uma entrada no CRONTAB, mas vou executar MANUALMENTE várias vezes.. Após uma execução, eu tenho :
[oracle@localhost orcl]$ ls -ltr /u02/archives/orcl
total 2304-rw-rw—- 1 oracle oracle 2291712 Feb 20 11:24 1_657_701609923.arc
-rw-rw—- 1 oracle oracle 2048 Feb 20 11:29 1_660_701609923.arc
-rw-rw—- 1 oracle oracle 2391040 Feb 20 12:06 1_661_701609923.arc
-rw-rw—- 1 oracle oracle 6656 Feb 20 12:09 1_662_701609923.arc
-rw-rw—- 1 oracle oracle 43520 Feb 20 12:19 1_663_701609923.arc
-rw-rw—- 1 oracle oracle 96768 Feb 20 12:21 1_664_701609923.arc
-rw-rw—- 1 oracle oracle 47104 Feb 20 12:28 1_665_701609923.arc
-rw-rw—- 1 oracle oracle 20992 Feb 20 12:30 1_666_701609923.arc
-rw-rw—- 1 oracle oracle 57344 Feb 20 12:41 1_667_701609923.arc
-rw-rw—- 1 oracle oracle 2048 Feb 20 12:44 1_668_701609923.arc
-rw-rw—- 1 oracle oracle 31232 Feb 20 12:49 1_669_701609923.arc
-rw-rw—- 1 oracle oracle 1334784 Feb 20 13:01 1_670_701609923.arc
[oracle@localhost orcl]$ ls -ltRia[oracle@localhost orcl]$ ls -ltr /u02/Backups
total 2489960
-rw-rw—- 1 oracle oracle 9797632 Feb 20 11:25 ORA_rman_full_backup_orcl_0htqbndk_1_1.bkp
-rw-rw—- 1 oracle oracle 2346496 Feb 20 11:25 ORA_rman_full_backup_orcl_0itqbndo_1_1.bkp
-rw-rw—- 1 oracle oracle 2147483648 Feb 20 11:28 ORA_rman_full_backup_orcl_0jtqbndp_1_1.bkp
-rw-rw—- 1 oracle oracle 370491392 Feb 20 11:28 ORA_rman_full_backup_orcl_0jtqbndp_2_1.bkp
-rw-rw—- 1 oracle oracle 3584 Feb 20 11:29 ORA_rman_full_backup_orcl_0ktqbnk1_1_1.bkp
-rw-rw—- 1 oracle oracle 9830400 Feb 20 11:29 controlfile_bkp_c-1229390655-20190220-00
-rw-rw—- 1 oracle oracle 9748480 Feb 20 11:29 snapcf_orcl.f
-rw-rw-r– 1 oracle oracle 6869 Feb 20 11:29 rman_backup_full_20-02-2019-25-38.log
[oracle@localhost orcl]$==> Aí, fui executando várias vezes, até que depois da 4a Execução fiquei com :
[oracle@localhost Backups]$ ls -ltr /u02/Backups
total 9927048
-rw-rw—- 1 oracle oracle 2147483648 Feb 20 13:29 ORA_rman_full_backup_orcl_1jtqbuj7_1_1.bkp
-rw-rw—- 1 oracle oracle 370352128 Feb 20 13:29 ORA_rman_full_backup_orcl_1jtqbuj7_2_1.bkp
-rw-rw—- 1 oracle oracle 9216 Feb 20 13:29 ORA_rman_full_backup_orcl_1ktqbumb_1_1.bkp
-rw-rw—- 1 oracle oracle 9830400 Feb 20 13:29 controlfile_bkp_c-1229390655-20190220-04
-rw-rw-r– 1 oracle oracle 8412 Feb 20 13:29 rman_backup_full_20-02-2019-28-02.log
-rw-rw—- 1 oracle oracle 4273664 Feb 20 13:34 ORA_rman_full_backup_orcl_1ntqbuum_1_1.bkp
-rw-rw—- 1 oracle oracle 2147483648 Feb 20 13:34 ORA_rman_full_backup_orcl_1otqbuun_1_1.bkp
-rw-rw—- 1 oracle oracle 370376704 Feb 20 13:35 ORA_rman_full_backup_orcl_1otqbuun_2_1.bkp
-rw-rw—- 1 oracle oracle 19968 Feb 20 13:35 ORA_rman_full_backup_orcl_1ptqbv0t_1_1.bkp
-rw-rw—- 1 oracle oracle 9830400 Feb 20 13:35 controlfile_bkp_c-1229390655-20190220-05
-rw-rw—- 1 oracle oracle 9748480 Feb 20 13:35 snapcf_orcl.f
-rw-rw-r– 1 oracle oracle 9680 Feb 20 13:35 rman_backup_full_20-02-2019-34-10.log
-rw-rw—- 1 oracle oracle 9797632 Feb 20 13:38 ORA_rman_full_backup_orcl_1rtqbv5o_1_1.bkp
-rw-rw—- 1 oracle oracle 4293120 Feb 20 13:38 ORA_rman_full_backup_orcl_1stqbv5q_1_1.bkp
-rw-rw—- 1 oracle oracle 2147483648 Feb 20 13:38 ORA_rman_full_backup_orcl_1ttqbv5r_1_1.bkp
-rw-rw—- 1 oracle oracle 370360320 Feb 20 13:39 ORA_rman_full_backup_orcl_1ttqbv5r_2_1.bkp
-rw-rw—- 1 oracle oracle 4096 Feb 20 13:39 ORA_rman_full_backup_orcl_1utqbv8v_1_1.bkp
-rw-rw—- 1 oracle oracle 9830400 Feb 20 13:39 controlfile_bkp_c-1229390655-20190220-06
-rw-rw-r– 1 oracle oracle 11441 Feb 20 13:39 rman_backup_full_20-02-2019-37-57.log
-rw-rw—- 1 oracle oracle 9797632 Feb 20 14:19 ORA_rman_full_backup_orcl_20tqc1ji_1_1.bkp
-rw-rw—- 1 oracle oracle 5822464 Feb 20 14:19 ORA_rman_full_backup_orcl_21tqc1jk_1_1.bkp
-rw-rw—- 1 oracle oracle 2147483648 Feb 20 14:21 ORA_rman_full_backup_orcl_22tqc1jm_1_1.bkp
-rw-rw—- 1 oracle oracle 370417664 Feb 20 14:22 ORA_rman_full_backup_orcl_22tqc1jm_2_1.bkp
-rw-rw—- 1 oracle oracle 10752 Feb 20 14:22 ORA_rman_full_backup_orcl_23tqc1p0_1_1.bkp
-rw-rw—- 1 oracle oracle 10289152 Feb 20 14:22 controlfile_bkp_c-1229390655-20190220-07
-rw-rw—- 1 oracle oracle 10207232 Feb 20 14:22 snapcf_orcl_orcl.f
-rw-rw-r– 1 oracle oracle 15212 Feb 20 14:22 rman_backup_full_20-02-2019-19-27.log
[oracle@localhost Backups]$[oracle@localhost orcl]$ ls -ltr /u02/archives/orcl
total 1580
-rw-rw—- 1 oracle oracle 7680 Feb 20 13:29 1_672_701609923.arc
-rw-rw—- 1 oracle oracle 37888 Feb 20 13:34 1_673_701609923.arc
-rw-rw—- 1 oracle oracle 18432 Feb 20 13:35 1_674_701609923.arc
-rw-rw—- 1 oracle oracle 1536 Feb 20 13:38 1_675_701609923.arc
-rw-rw—- 1 oracle oracle 2560 Feb 20 13:39 1_676_701609923.arc
-rw-rw—- 1 oracle oracle 1527808 Feb 20 14:19 1_677_701609923.arc
-rw-rw—- 1 oracle oracle 9216 Feb 20 14:22 1_678_701609923.arc
[oracle@localhost orcl]$==>> OU SEJA, apenas os DADOS e os Archives que já tinham sido backupeados 4 vezes foram sendo removidos do disco (que eram aqueles do backup das 11h25m) , OK ?? É alguma coisa NESSE SENTIDO que eu recomendo que vc implemente – de repente, se sua paranóia OU teu espaço em disco não for tão grande , mantenha em disco os dois últimos, talvez… E claro, é por SUA conta um script que COPIE os backup files todos os dias pra fita, pra nuvem, pra um HD externo ou seja aonde for : LEMBRE-SE, backup que reside junto com o database NÃO É BACKUP, vc Só Pode Contar com um backup que está num local externo SEGURO, que foi TESTADO o restore E o recover, E vc tenha múltiplas cópias do mesmo backup lá na localização remota…
[]s
Chiappa
OBS : pela última vez, FRISO que isso é só um EXEMPLO, pra te servir de base apenas…..
-
AuthorPosts
- You must be logged in to reply to this topic.