web-dev-qa-db-ja.com

シーケンスなしで_Uを使用する代わりに、%Uを尊重しないコマンドファイルで実行されたOracleexpdpコマンド

一連のexpdpコマンドを生成し、それらを.cmdファイルに保存しました。コマンドの1つをコピーしてコマンドプロンプトに貼り付けると、正常に機能します。 .cmdファイル全体を実行しようとすると、それもうまく機能します。

PARALLELと%Uを使用する必要があるので、それをコマンドに追加しました。繰り返しになりますが、コマンドプロンプトで手動で実行すると、うまく機能し、シーケンス番号を使用して複数の.dmpファイルを作成することで%Uを尊重します。ただし、PARALLELと%Uを使用して.cmdファイル全体を実行すると、%Uは尊重されず、_Uを使用して1つの.dmpファイルが作成されます。複数のdmpファイルを作成するようにこれを修正するにはどうすればよいですか?

これは、コマンドプロンプトにコピーして貼り付けると正常に実行されるが、ファイルとして実行すると正しく機能しないコマンドの例です。

expdp TEST/PWD @ ORCL schemas = TEST directory = EXPORT_DIR parallel = 4 REUSE_DUMPFILES = Y dumpfile = TEST_20190906_%U.dmp logfile = TEST_20190906_expdp.log

1
Rita Bowers

Oracleがそれを見る機会を得る前に、%記号をエスケープして、Windowsがそれを飲み込むのを止めることができます。

... dumpfile=TEST_20190906_%%U.dmp ...

簡単なテストとして、.cmdファイル:

@echo expdp ... dumpfile=TEST_20190906_%U.dmp logfile=TEST_20190906_expdp.log
@echo expdp ... dumpfile=TEST_20190906_%%U.dmp logfile=TEST_20190906_expdp.log

次に、コマンドプロンプトからそれを実行すると、次のように表示されます。

expdp ... dumpfile=TEST_20190906_U.dmp logfile=TEST_20190906_expdp.log
expdp ... dumpfile=TEST_20190906_%U.dmp logfile=TEST_20190906_expdp.log
1
Alex Poole