2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Oracle】スキーマ名を指定してダンプを取得するバッチファイル

Last updated at Posted at 2019-04-03

定期的に取っておくと何かと役立つOralceダンプファイルですが、Windowsのタスクスケジューラや手動で手軽にダンプを取得するためのバッチファイルを作成しました。

ダンプはDataPump形式で取得します。

データベース側の事前準備

SYSユーザーでダンプ取得用のユーザーを作成

バッチでSYSは使いたくないので、どのスキーマでもインポート/エクスポートできる専用ユーザーを切る。

CREATE USER "DATAPUMP_USER"
   IDENTIFIED BY "PASSWORD"
   DEFAULT TABLESPACE "USERS"
   TEMPORARY TABLESPACE "TEMP"
;

-- ロールと権限
GRANT CONNECT TO "DATAPUMP_USER";
GRANT CREATE ANY DIRECTORY TO "DATAPUMP_USER";
GRANT DATAPUMP_IMP_FULL_DATABASE TO "DATAPUMP_USER";
GRANT DATAPUMP_EXP_FULL_DATABASE TO "DATAPUMP_USER";
GRANT UNLIMITED TABLESPACE TO "DATAPUMP_USER";

ディレクトリオブジェクトの作成

インポート/エクスポート用ユーザ用ユーザーでログインし、ディレクトリオブジェクトを作成する。

CREATE OR REPLACE DIRECTORY DATAPUMP_DIR AS 'D:\datapump';

DataPumpはディレクトリオブジェクトを指定しなければ実行できない。

バッチ

ディレクトリオブジェクトのパスに配置する。
引数%1にスキーマ名を渡す

datapump_export.bat
@echo off
cd /d %~dp0

set DumpFile=%1.dump
set LogFile=%1.log

:: エクスポート
expdp DATAPUMP_USER/PASSWORD@localhost/orclpdb directory=DATAPUMP_DIR schemas=%1 dumpfile=%DumpFile% logfile=%LogFile%

:: タイムスタンプの取得
call :getTimeStamp

:: ダンプ・ログのリネームと古いダンプ・ログを削除(更新日7日以上前)
move "%DumpFile%" "%DumpFile%_%TimeStamp%"
move "%LogFile%" "%LogFile%_%TimeStamp%"
forfiles /D -7 /M "%DumpFile%*" /c "cmd /c del @path"
forfiles /D -7 /M "%LogFile%*" /c "cmd /c del @path"

exit /b

:getTimeStamp
	setlocal

	set YYYY=%DATE:~0,-6%
	set MM=%DATE:~5,-3%
	set DD=%DATE:~-2%
	set /a H=%TIME:~0,-9%
	set M=%TIME:~3,-6%
	set S=%TIME:~6,-3%
	if %H% lss 10 (
		set H=0%H%
	)
	endlocal & set TimeStamp=%YYYY%%MM%%DD%-%H%%M%%S%
exit /b

実行するときはこんな感じ。

>datapump_export.bat HOGE_SCHEMA

これで取った日時のダンプが出来上がります。

インポート

取ったダンプを別スキーマにインポートするときはこんな感じ。

impdp DATAPUMP_USER/PASSWORD@localhost/orclpdb directory=DATAPUMP_DIR dumpfile=HOGE_SCHEMA.dump remap_schema=HOGE_SCHEMA:FUGA_SCHEMA

調整して便利につかって頂ければ何よりです。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?