Формат команды
./import.sh <ИМЯ НОВОЙ СХЕМЫ> <ФАЙЛ ДАМПА>
Данная редакция скрипта "самостоятельно узнаёт" "старое" имя схемы, которое скрывается в параметре OWNER_NAME в файле дампа.
Может работать только с дампами, содержащими лишь одну схему!
Перед импортом создает схему с предустановленным в параметре NEW_SCHEMA_PASSWD паролем.
cat importdp.sh
#!/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>
# 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 <TO_USERNAME> <FILE_NAME>"
echo
echo "EXAMPLE:"
echo "./importdp.sh LNXTEST23 lnx.dmp"
}
if [ $# -eq 0 ] ; then
help;
exit 1;
fi
TO_USERNAME=$1
FILENAME=$2
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
# block_150312_2116(begin)
# d.aryshtaev@bftcom.com, 13.03.2015 02:31 IRKT
# Проверка наличия новой схемы (импорт будет выполнен только в случае, если новой схемы в экземпляре Oracle нет):
daScr=/tmp/imp_150312_2100.sql
echo SET PAGESIZE 0\;>$daScr
echo select count\(\*\) from dba_users where username=upper\(\'$TO_USERNAME\'\)\;>>$daScr
echo exit\;>>$daScr
daUsrCnt=`sqlplus -S / as sysdba @$daScr`
if [ $daUsrCnt == 0 ]; then
# block_150312_2116_A(begin)
# Создаем схему до импорта, чтобы сразу же задать ей пароль [потому что мы ленимся :-) ]:
echo create user $TO_USERNAME identified by $NEW_SCHEMA_PASSWD\;>$daScr
echo grant connect\,resource to $TO_USERNAME\;>>$daScr
echo grant select on v_\$locked_object to $TO_USERNAME\;>>$daScr
echo GRANT SELECT ANY DICTIONARY TO $TO_USERNAME\;>>$daScr
echo exit \;>>$daScr
sqlplus -S / as sysdba @$daScr
# block_150312_2116_B(begin)
# Вытаскиваем OWNER_NAME из дампа и запоминаем значение в переменной FROM_USERNAME:
daDDLfile=tmp_ddl_`date +%y%m%d_%H%M%S`.txt
$CMD $SYSTEM/$PASSWD$URL SILENT=ALL NOLOGFILE=Y DIRECTORY=BACKUP_DIR DUMPFILE=$FILENAME SQLFILE=$daDDLfile
daStrFromDDL=`cat $daDDLfile|grep "CREATE USER"`
rm $daDDLfile
FROM_USERNAME=${daStrFromDDL:14:$(expr `expr index "${daStrFromDDL:14}" \"` - 1)}
# block_150312_2116_B(end)
# block_150312_2116_A(end)
echo "-----------------------------------------"
echo "Restoring from $FROM_USERNAME to $TO_USERNAME using dump $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 $TO_USERNAME already exists.
fi
rm $daScr
# block_150312_2116(end)
Подписаться на:
Комментарии к сообщению (Atom)
Архив
-
►
2019
(44)
- декабря (2)
- октября (6)
- сентября (9)
- августа (1)
- июля (1)
- июня (2)
- мая (2)
- апреля (2)
- марта (2)
- февраля (9)
- января (8)
-
►
2018
(54)
- декабря (4)
- ноября (3)
- октября (6)
- сентября (4)
- августа (2)
- июля (2)
- мая (3)
- апреля (4)
- марта (11)
- февраля (6)
- января (9)
-
►
2017
(55)
- декабря (4)
- ноября (14)
- октября (1)
- сентября (3)
- августа (10)
- июля (2)
- июня (5)
- мая (2)
- апреля (3)
- марта (4)
- февраля (4)
- января (3)
-
►
2016
(111)
- декабря (12)
- ноября (4)
- октября (14)
- сентября (7)
- августа (7)
- июля (14)
- июня (12)
- мая (8)
- апреля (5)
- марта (16)
- февраля (10)
- января (2)
-
▼
2015
(96)
- декабря (2)
- ноября (4)
- октября (3)
- сентября (6)
- августа (2)
- июля (2)
- июня (2)
- мая (11)
- апреля (14)
- марта (24)
- февраля (21)
- января (5)
-
►
2014
(72)
- декабря (18)
- ноября (16)
- октября (2)
- сентября (7)
- августа (4)
- июля (1)
- июня (4)
- мая (5)
- апреля (3)
- марта (3)
- февраля (6)
- января (3)
-
►
2013
(33)
- декабря (3)
- ноября (2)
- октября (3)
- сентября (2)
- августа (1)
- июля (1)
- июня (2)
- мая (5)
- апреля (2)
- марта (2)
- февраля (1)
- января (9)
-
►
2012
(181)
- ноября (6)
- октября (11)
- сентября (6)
- августа (5)
- июля (6)
- июня (25)
- мая (24)
- апреля (14)
- марта (20)
- февраля (38)
- января (26)
Комментариев нет:
Отправить комментарий