Criação de Scripts para executar Cópia a Frio

Uma das antigas formas de se proteger o banco contra falhas é se fazendo o processo de backup. Então, começaremos a proteger nosso banco com a Cópia a Frio(backup banco de dados parado)
Como nos scripts anteriores, listamos o datafile, controfile, e arquivos de redo.
Assim, vamos fazer o script para gerar o script de cópia.
Poderíamos fazer o script diretamente no shell, mas como cada banco de dados contém sua estrutura fisica em um devido local que vai ler as informações físicas e gerar o script de copia, o script de copia será obviamente agendado pelo administrador do primeiro.
Vamos por etapas:
[1] criar scripst que le os dados fisico do banco.
-- Arquivo gerabkpfrio.sh --
#!/bin/bash
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/10.2.0
ORACLE_SID=treina
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib:/usr/lib:/usr/local/lib
PATH=$ORACLE_HOME/bin:$PATH:.:
ORA_NLS10=$ORACLE_HOME/nls/data
NLS_NUMERIC_CHARACTERS=",."
ORACLE_TERM=linux
ORACLE_DOC=$ORACLE_HOME/doc
NLS_LANG="BRAZILIAN PORTUGUESE_BRAZIL.WE8ISO8859P1"
NLS_DATE_FORMAT='DD.MM.YYYY'
export ORACLE_HOME ORACLE_SID LD_LIBRARY_PATH ORACLE_BASE PATH
export ORACLE_TERM NLS_LANG NLS_NUMERIC_CHARACTERS ORACLE_DOC NLS_DATE_FORMAT
sqlplus / as sysdba @/oracle/gerabkpfrio.sql
[2] arquivo do script sql do qual lista a parte fisica concatenando os comandos de cópia do S.O. para uma pasta diferente da pasta do local do banc. Contém somente instruções SQLPLUS.
-- Arquivo GERABKPFRIO.SQL --
SET ECHO OFF
SET FEED OFF
SET HEAD OFF
SPOOL /oracle/bkpfrio.sh
SELECT 'cp ' member ' /oracle' member
FROM v$logfile
UNION
SELECT 'cp ' name ' /oracle' name
FROM v$datafile
UNION
SELECT 'cp ' name ' /oracle' name
FROM v$controlfile;
SPOOL OFF
Finalizando a criação, devemos rodar o script
gerabkpfrio.sh direto no terminal para que seja gerado o script /oracle/bkpfrio.sh
-- Conteúdo do bkpfrio.sh --
cp /oracle/treina/control01.ctl /oracle/oracle/treina/control01.ctl
cp /oracle/treina/control02.ctl /oracle/oracle/treina/control02.ctl
cp /oracle/treina/control03.ctl /oracle/oracle/treina/control03.ctl
cp /oracle/treina/redo01.log /oracle/oracle/treina/redo01.log
cp /oracle/treina/redo02.log /oracle/oracle/treina/redo02.log
cp /oracle/treina/redo03.log /oracle/oracle/treina/redo03.log
cp /oracle/treina/sysaux01.dbf /oracle/oracle/treina/sysaux01.dbf
cp /oracle/treina/system01.dbf /oracle/oracle/treina/system01.dbf
cp /oracle/treina/undotbs01.dbf /oracle/oracle/treina/undotbs01.dbf
cp /oracle/treina/users01.dbf /oracle/oracle/treina/users01.dbf
(*) O arquivo gerado bkfrio pode ser executado?
Ainda não, existem algumas correções a serem feitas:
[1] A cópia fria de um banco deve ser obviamente feita com o banco parado.
[2] A pasta destino para se copiar o banco não existe

Comentários