No sistema de separação de leitura e gravação Dameng, quando o host está sob alta pressão, podemos escolher fazer backup da máquina de backup para backup completo do banco de dados, mas a máquina de backup não pode usar o trabalho de proxy que vem com DM7 para backup. Use apenas ETL ou scripts para backup de banco de dados. Nesse caso, podemos usar o script BAT para realizar backups completos regulares, backups incrementais do banco de dados e excluir conjuntos de backups não utilizados.
Primeiro crie um procedimento armazenado PRO_BackupDatabase para backup no banco de dados
criar ou substituir PROCEDURE PRO_BackupDatabase
Como
declarar
bakname VARCHAR2 (300);
BAKSTR VARCHAR2 (300);
V_DATE VARCHAR2 (50);
início
selecione to_char (sysdate, 'day') dia em V_DATE;
IF V_DATE = 'sábado' ENTÃO
definir bakname = 'DB_DAMENG_FULL_' || TO_CHAR (SYSDATE, 'YYYY_MM_DD_HH24_MI_SS');
defina BAKSTR = 'banco de dados de backup completo para' || ' "'|| bakname ||' "'||' backupset '' D: \ data \ bak \ '|| bakname || '' 'thread de tarefa 4 paralelo 4;';
PRINT BAKSTR;
EXECUTE IMMEDIATE BAKSTR;
OUTRO
definir bakname = 'DB_DAMENG_INCRE_' || TO_CHAR (SYSDATE, 'YYYY_MM_DD_HH24_MI_SS');
definir BAKSTR = 'incremento do banco de dados de backup com backupdir' 'D: \ data \ bak' 'para' || '"' || bakname || '"' || ' backupset '' D: \ data \ bak \ '|| bakname ||' '' thread de tarefa 4 paralelo 4; ';
PRINT BAKSTR;
EXECUTE IMMEDIATE BAKSTR;
END IF ;
fim ;
Aqui está um backup completo no sábado e um backup incremental nos outros dias. O diretório de backup é D: \ data \ bak
Em seguida, comece a escrever o script BAT
Exibir o script de backup e o SQL de chamada correspondente
conteúdo add_bak:
@ echo off
Definir usuário = SYSDBA
Definir Pass = SYSDBA
Definir IP = LOCALHOST
Definir SysDate = % date: ~ 0,4% - % date: ~ 5,2% - % date: ~ 8,2%
@ echo time = % SysDate%
@ echo username = % User%
@ echo password = % Pass%
@ echo endereço IP = % IP%
@ echo ***** Backup de banco de dados ******
cd E: \ 工作 \ dmdbms \ dm7_setup_win64_ent_release_20180504 \ source \ bin
E:
disql.exe % User% / % Pass% @ % IP% `D: \ data \ bak_job \ bak.sql
@ echo end
Você pode modificar manualmente USER, PASS, IP e o script SQL de execução correspondente. Meu bak.sql está localizado em D: \ data \ bak_job.
conteúdo bak.sql:
CALL PRO_BackupDatabase ();
SAIR ;
Em seguida, o script BAT excluído do backup
conteúdo del_bak:
@ echo off
definir SrcDir = D: \ data \ bak
@ echo delete date % date%
@ echo exclui arquivos de backup e diretórios vazios que expiraram 7 dias atrás
REM especifica o número de dias
definir DaysAgo = 7
powershell -c "Get-ChildItem -Path ' % SrcDir% ' -Recurse -ErrorAction: SilentlyContinue | Where-Object -FilterScript {(((get-date) - ($ _. CreationTime)). days -gt % DaysAgo% - e $ _. PsISContainer -ne $ True)} | Remove-Item -Force "
para / f "delims = " %% a in (' dir / ad / b / s D: \ data \ bak \ ^ | sort / r') do (
rd " %% a " > nul 2 > nul && echo O diretório vazio " %% a " foi excluído com sucesso! )
@ echo delete end
Depois, há o arquivo BAT para registro e chamada
conteúdo start_bak.bat:
@ echo off
Definir SysDate = % date: ~ 0,4% - % date: ~ 5,2%
cd D: \ data \ bak_job
D:
@ echo excluir backup
chamar del_bak.bat >> Delete_ % SysDate% _log.txt
@ echo iniciar backup
chame add_bak.bat >> Bakup_ % SysDate% _log.txt
@ echo end
Pausa
Agora vamos fazer um backup completo e um aumento, e deletar os dados para tentar
Defina a hora para sábado
Em seguida, execute start_bak.bat, onde adicionei uma pausa ao script para facilitar a visualização
Sem problemas pela primeira vez
Em seguida, modifique a hora para o segundo ou terceiro dia, reinicie o banco de dados para backup
O backup crescente também pode ser executado normalmente, agora tente deletar o backup, vou ajustar a data para o terceiro sábado
O log de exclusão e backup é registrado uma vez por mês