Inhalt
Problem
Beim Datapump Export/Import sieht man im Logfile nicht welche Parameter verwendet wurden. Die folgenden Shell Scripte koennen leicht angepasst werden, sodass mehrere Schemata oder nur bestimmte Tabellen exportiert/importiert werden.
Analyse
Loesung
Shell Script zum Datapump Export
#!/bin/bash # # file: expdp.sh # function initexpdp { V_USER=$1 V_DB_SERVICE=$2 # V_DUMPFILE=${V_DB_SERVICE,,} # lowercase mit bash 4.x V_DUMPFILE=$(echo $V_DB_SERVICE | tr '[:upper:]' '[:lower:]') V_DUMPFILE=${V_DUMPFILE%%.dmp*} RTIME=$(date +"%Y%m%d%H%M") FILENAME="expdp_ppmsd_${V_DUMPFILE}_${RTIME}" DFILE=${FILENAME}_%U.dmp LFILE=${FILENAME}.log JOB_NAME="EXPDP_${V_DB_SERVICE}" SCHEMAS="PLA_DEV,PLA_DEV_SYS" # TABLES="SCDAT.VAO_LOGS,SCDAT.AO_RUNS,SCDAT.AO_LOG_ENTRIES" DIRECTORY="DATA_PUMP_DIR" EXPDPPARFILE=$(mktemp) # FLASHBACK_TIME="\"TO_TIMESTAMP('10-06-2015 17:00:05','DD-MM-YYYY HH24:MI:SS')\"" FLASHBACK_TIME="\"TO_TIMESTAMP(to_char(SYSDATE,'DD-MM-YYYY HH24:MI:SS'),'DD-MM-YYYY HH24:MI:SS')\"" # echo "=${}" >> $EXPDPPARFILE echo "USERID=${V_USER}@${V_DB_SERVICE}" > $EXPDPPARFILE echo "DUMPFILE=${DFILE}" >> $EXPDPPARFILE echo "LOGFILE=${LFILE}" >> $EXPDPPARFILE echo "JOB_NAME=${JOB_NAME}" >> $EXPDPPARFILE echo "SCHEMAS=${SCHEMAS}" >> $EXPDPPARFILE # echo "TABLES=${TABLES}" >> $EXPDPPARFILE echo "DIRECTORY=${DIRECTORY}" >> $EXPDPPARFILE echo "FLASHBACK_TIME=${FLASHBACK_TIME}" >> $EXPDPPARFILE } function cleanup() { rm -rf $EXPDPPARFILE unset EXPDPPARFILE } function usage { echo "Usage: " echo "$0 <<user> <db-service>" echo " " echo "Beispiel " echo "$0 system vpsi" echo " " exit -1 } ####### MAIN if [[ "$1" == "" || "$2" == "" ]] ; then usage else echo OK initexpdp $1 $2 expdp $(cat ${EXPDPPARFILE}) # cat $EXPDPPARFILE cleanup exit 0 fi
Shell Script zum Datapump Import
#!/bin/bash # # file: impdp.sh # function initimpdp { V_USER=$1 V_DB_SERVICE=$2 # V_DUMPFILE=${3,,} V_DUMPFILE=${3} # V_DUMPFILE=${V_DUMPFILE%%.dmp*} RTIME=$(date +"%Y%m%d-%H%M") FILENAME=${V_DUMPFILE} DFILE=${V_DUMPFILE} LFILE=impdp_${V_DB_SERVICE}_${RTIME}.log JOB_NAME="IMPDP_${V_DB_SERVICE}" SCHEMAS="PLA_DEV,PLA_DEV_SYS" REMAP_SCHEMA="PLA_DEV_SYS:PLA_DEMO_SYS,PLA_DEV:PLA_DEMO" REMAP_TABLESPACE="PLA_DEV_DATA:PLA_DEMO_DATA" TABLE_EXISTS_ACTION="SKIP" DIRECTORY="DATA_PUMP_DIR" EXCLUDE="PASSWORD_HISTORY" IMPDPPARFILE=$(mktemp) FLASHBACK_TIME="\"TO_TIMESTAMP(to_char(SYSDATE,'DD-MM-YYYY HH24:MI:SS'),'DD-MM-YYYY HH24:MI:SS')\"" # echo "=${}" >> $IMPDPPARFILE echo "USERID=${V_USER}@${V_DB_SERVICE}" > $IMPDPPARFILE echo "DUMPFILE=${DFILE}" >> $IMPDPPARFILE echo "LOGFILE=${LFILE}" >> $IMPDPPARFILE echo "JOB_NAME=${JOB_NAME}" >> $IMPDPPARFILE echo "SCHEMAS=${SCHEMAS}" >> $IMPDPPARFILE echo "REMAP_SCHEMA=${REMAP_SCHEMA}" >> $IMPDPPARFILE echo "REMAP_TABLESPACE=${REMAP_TABLESPACE}" >> $IMPDPPARFILE echo "DIRECTORY=${DIRECTORY}" >> $IMPDPPARFILE # echo "EXCLUDE=${EXCLUDE}" >> $IMPDPPARFILE # echo "FLASHBACK_TIME=${FLASHBACK_TIME}" >> $IMPDPPARFILE } function cleanup() { rm -rf $IMPDPPARFILE unset IMPDPPARFILE } function usage { echo "Usage: " echo "$0 <<user> <db-service> <dumpfile>" echo " " echo "Beispiel " echo "$0 system vpsi expdp_vpsp_201504090928_01.dmp" echo " " exit -1 } ####### MAIN if [[ "$1" == "" || "$2" == "" || "$3" == "" ]] ; then usage else echo OK initimpdp $1 $2 $3 impdp $(cat ${IMPDPPARFILE}) # cat $IMPDPPARFILE cleanup exit 0 fi