データベースの更新を自動化しようとしていましたが、IMPDPコマンドで使用するダンプファイルのファイル名を抽出しようとしている部分がブロックされました。
問題は、エクスポートにこのパラメータを使用することです。
dumpfile=dbname_env_date_%u.dmp と 16 度並列処理を使用すると、次の 16 個のファイルが生成されます。
dbname_env_date_01.dmp
dbname_env_date_02.dmp
.
.
.
dbname_env_date_16.dmp
私が望むのは、別の環境データベースをインポートするときにそのパラメータを使用できるように、この "dbname_env_date"を抽出することです。
私が今まで得たものは次のとおりです。
dump_filename=$(ls -tr *.dmp | tail -1)
これは私に次のようなものを与えます:
dbname_env_date_16.dmp
後で次のように使用したいと思います。
imdp \' / as sysdba \' dumpfile=${dump_filename}_u%.dmp
答え1
tailを使用する必要はありません。 16個のファイルがすべてあることがわかります。
dump_filename=$(ls -t *_01.dmp | head -n 1)
dump_filename=${dump_filename%_01.dmp}
dump_filename="$dump_filename.dmp"
最初の行は最新のファイルの名前を取得し、*_01.dmp
2行目はその_01.dmp
名前からそのファイルを削除します。 3行目が追加されます.dmp
。
以下も使用できます。
dump_filename=$(ls -t *_01.dmp | head -n 1 | sed -e 's/_01\.dmp/.dmp/')