데이터베이스 새로 고침을 자동화하려고 하는데 이제 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
두 번째 줄은 _01.dmp
이름에서 해당 파일을 제거합니다. 세 번째 줄이 추가됩니다 .dmp
.
다음을 사용할 수도 있습니다.
dump_filename=$(ls -t *_01.dmp | head -n 1 | sed -e 's/_01\.dmp/.dmp/')