Shanghai Tengke Education Dream Database Training乾物共有WINDOWSでBATを使用して、定期的にバックアップ操作を実行します

ダメンの読み取り/書き込み分離システムでは、ホストに高圧がかかっている場合、データベース全体のバックアップ用にバックアップマシンをバックアップすることを選択できますが、バックアップマシンは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回記録されます

おすすめ

転載: blog.csdn.net/qq_42726883/article/details/108528580