четверг, 12 марта 2015 г.

importdp.sh - вариант с FROM_USERNAME

#!/bin/sh

# Set the parameters first
# -------------------------------------
# system user name
SYSTEM=<DBA_USERNAME>
# system user password
PASSWD=<DBA_PASSWORD>

# Instance name (if any)
URL=@<ORACLE_SID>

# New schema password
NEW_SCHEMA_PASSWD=<NEW_SCHEMA_PASSWD>

# block_150312_2116(begin)
# Проверка наличия новой схемы (импорт будет выполнен только в случае, если новой схемы в экземпляре Oracle нет):
daScr=/tmp/imp_150312_2100.sql
echo SET PAGESIZE 0\;>$daScr
echo select count\(\*\) from dba_users where username=upper\(\'$2\'\)\;>>$daScr
echo exit\;>>$daScr
export daUsrCnt=`sqlplus -S / as sysdba @$daScr`
if [ $daUsrCnt == 0 ]; then
  # block_150312_2116_A(begin)
  # Создаем схему до импорта, чтобы сразу же задать ей пароль [потому что мы ленимся :-) ]:
  echo create user $2 identified by $NEW_SCHEMA_PASSWD\;>$daScr
  echo grant connect\,resource to $2\;>>$daScr
  echo grant select on v_\$locked_object to $2\;>>$daScr
  echo exit \;>>$daScr
  sqlplus / as sysdba @$daScr
# Весь остальной скрипт ниже не изменялся.
  # block_150312_2116_A(end)

# Set the ORACLE_HOME variable to find an "imp" utility
# ORACLE_HOME=/usr/oracle
# -------------------------------------

help() {
  echo "-------------------------------------"
  echo "Logical Database restore utility v0.1"
  echo "-------------------------------------"
  echo "USAGE:"
  echo "./importdp.sh <FROM_USERNAME> [<TO_USERNAME>] [<FILE_NAME>]"
  echo 
  echo "EXAMPLE:"
  echo "./importdp.sh LNXSTEND23 LNXTEST23 lnx.dmp"
}

if [ $# -eq 0 ] ; then
  help;
  exit 1;
fi

FROM_USERNAME=$1
TO_USERNAME=$2
FILENAME=$3
LOGFILE="restore_$TO_USERNAME.log"

if [ "$FILENAME" == "" ] ; then
  FILENAME="expdat.dmp";
fi  

if [ "$TO_USERNAME" == "" ] ; then
  TO_USERNAME=$FROM_USERNAME;
fi  

if [ "$ORACLE_HOME" != "" ] ; then
  CMD="$ORACLE_HOME/bin/impdp";
else
  CMD="impdp";  
fi  

if [ ! -f $FILENAME ] ; then
  echo "ERROR:"
  echo "File $FILENAME does not exist."; 
  exit 1;
fi

echo "-----------------------------------------"
echo "Restoring from $FROM_USERNAME to $TO_USERNAME using damp $FILENAME ..."
echo "-----------------------------------------"

export NLS_DATE_FORMAT="YYYY-MM-DD" 
export NLS_TIMESTAMP_FORMAT="YYYY-MM-DD HH24:MI:SS"

$CMD $SYSTEM/$PASSWD$URL SCHEMAS=$FROM_USERNAME DIRECTORY=BACKUP_DIR REMAP_SCHEMA=$FROM_USERNAME:$TO_USERNAME TRANSFORM=OID:N DUMPFILE=$FILENAME LOGFILE=$LOGFILE
else
  # Если новая схема уже существует, то сообщаем об этом пользователю и не выполняем импорт:
  echo Schema $2 already exists.
fi
rm $daScr
# block_150312_2116(end)

Комментариев нет:

Архив