前回の記事では、データベースをバックアップする必要があるシナリオについて説明しましたが、full = yを追加すると、どこにも権限がないなどの問題が発生します。最適化されたスクリプトを以下に示します。直接使用できますが、次の欠点があれば、後で最適化できます。
1.以下ではexpexportコマンドを使用しているため、oracleクライアントをインストールする必要があります。
2.異なるバージョンのOracle間のデータバックアップは問題を引き起こします。
3. oracle分散環境でのテストに合格していません(この環境では注意して使用してください)。
@echo off
echo ================================================
echo Windows环境下Oracle数据库的自动备份脚本
echo ================================================
::以“YYYYMMDD”格式取出当前时间。
set BACKUPDATE=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%
::设置用户名、密码和要备份的数据库。
set USER=kqportal
set PASSWORD=kqportal
set DATABASE=ORCL
::创建备份目录。
if not exist "D:\ksk\OrclDBackup\backupdbdir"
mkdir D:\ksk\OrclDBackup\backupdbdir
:: 为删除过期文件的命令,-d -30 删除30天的文件;
forfiles /p "D:\ksk\OrclDBackup\backupdbdir" /m kqportal_orcl_*.dmp -d -30 /c "cmd /c del /f @path"
::注意不加full=y
exp '%USER%/%PASSWORD%@%DATABASE%' file=D:\ksk\OrclDBackup\backupdbdir\kqportal_orcl_%BACKUPDATE%.dmp
exit
上記のスクリプトは、データベースを定期的にバックアップする目的を達成するために、windowsの下にwindowsタイミングタスクを設定することで実行できます(テストされ、合格しました。^ $$ ^を使用してください)。
上記の発言は、主に次のように、より詳細に説明されています。
1.現在のシステム時刻を秒単位で正確に取り出します。
2.バックアップディレクトリ、つまりバックアップファイルのストレージパスを作成します。
3. 30日前にバックアップディレクトリにあるバックアップファイルを削除して、サーバーディスクが許容範囲内にあることを確認します。
4.データベースをバックアップする操作を実行します。
5.スクリプトを終了します。