ダメンの読み取り/書き込み分離システムでは、ホストに高圧がかかっている場合、データベース全体のバックアップ用にバックアップマシンをバックアップすることを選択できますが、バックアップマシンはDM7に付属のプロキシジョブをバックアップに使用できません。データベースのバックアップには、ETLまたはスクリプトのみを使用してください。この場合、BATスクリプトを使用して、定期的な完全バックアップ、データベースの増分バックアップを実行し、未使用のバックアップセットを削除できます。
まず、データベースにバックアップするためのストアドプロシージャPRO_BackupDatabaseを作成します
PROCEDURE CREATE OR REPLACE PRO_BackupDatabaseを
なので
宣言する
bakname VARCHAR2(300);
BAKSTR VARCHAR2(300);
V_DATE VARCHAR2(50);
ベギン
選択 to_char関数(SYSDATE、 '日')の日 に V_DATE。
IF V_DATE = 'Saturday' THEN
set bakname = 'DB_DAMENG_FULL_' || TO_CHAR(SYSDATE、 'YYYY_MM_DD_HH24_MI_SS');
BAKSTR = 'バックアップデータベースフルを' || 'に設定します "'|| bakname ||' "'||' バックアップセット '' D:\ data \ bak \ '|| bakname || '' 'タスクスレッド4並列4;';
PRINT BAKSTR;
IMMEDIATE EXECUTE BAKSTRを。
そうしないと
set bakname = 'DB_DAMENG_INCRE_' || TO_CHAR(SYSDATE、 'YYYY_MM_DD_HH24_MI_SS');
セット BAKSTR = 'BACKUPDIRでバックアップデータベースの増分'' D:\データ\ミョンバク'」に'||' " '|| || bakname'" '||' backupset '' D:\ data \ bak \ '|| bakname ||' ''タスクスレッド4並列4; ';
PRINT BAKSTR;
IMMEDIATE EXECUTE BAKSTRを。
END IF ;
終了;
これは、土曜日の完全バックアップと他の日の増分バックアップです。バックアップディレクトリはD:\ data \ bakです
次に、BATスクリプトの作成を開始します
バックアップスクリプトと対応する呼び出しSQLを表示します
add_bakコンテンツ:
@エコー オフ
ユーザーの設定= SYSDBA
パスの設定= SYSDBA
IP = LOCALHOSTに設定します
設定 SYSDATE = %日時:〜0,4% - %日:〜5,2% - %日:〜8,2%
@エコー 時間= %SysDate%
@エコー ユーザー名= %ユーザー%
@エコー パスワード= %Pass%
@エコー IPアドレス= %IP%
@エコー*****データベースのバックアップ******
cd E:\商用\ dmdbms \ dm7_setup_win64_ent_release_20180504 \ source \ bin
E:
disql.exe %ユーザー% / %パス% @ %IP% `D:\データ\ bak_job \ bak.sql
@エコー エンド
USER、PASS、IP、および対応する実行SQLスクリプトを手動で変更できます。私のbak.sqlはD:\ data \ bak_jobの下にあります。
bak.sqlコンテンツ:
CALL PRO_BackupDatabase();
EXIT ;
次に、BATスクリプトがバックアップから削除されました
del_bakコンテンツ:
@エコー オフ
セット SRCDIR = D:\データ\ BAK
@エコー 削除日%date%
@ echoは 、7日前に期限切れになったバックアップファイルと空のディレクトリを削除します
REMは日数を指定します
DaysAgo = 7に設定
powershell -c "Get-ChildItem -Path ' %SrcDir% ' -Recurse -ErrorAction:SilentlyContinue | Where-Object -FilterScript {(((get-date)-($_。CreationTime))。days -gt %DaysAgo% -および$ _。PsISContainer-ne $ True)} | Remove-Item -Force "
for / f "delims = " %% a in ( ' dir / ad / b / s D:\ data \ bak \ ^ | sort / r') do (
rd " %% a " > nul 2 > nul && echo空のディレクトリ " %% a "は正常に削除されました!)
@エコー 削除終了
次に、ロギングと呼び出し用のBATファイルがあります
start_bak.batコンテンツ:
@エコー オフ
SysDate = %date:〜0,4 % - %date:〜5,2 %を設定します
cd D:\ data \ bak_job
D:
@エコー 削除バックアップ
コール del_bak.bat >> DELETE_ %SYSDATE% _log.txt
@エコー 開始バックアップ
コール add_bak.bat >> Bakup_ %SYSDATE% _log.txt
@エコー エンド
一時停止
それでは、完全なバックアップと増加を行い、データを削除して試してみましょう。
時間を土曜日に設定します
次に、start_bak.batを実行します。ここで、スクリプトに一時停止を追加して見やすくしました
初めて問題ありません
次に、時間を2日目または3日目に変更し、バックアップのためにデータベースを再起動します
増加するバックアップも正常に実行できます。バックアップを削除してみます。日付を第3土曜日に調整します。
削除とバックアップのログは月に1回記録されます