Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / невыполняется imp-орт из cron-а / 8 сообщений из 8, страница 1 из 1
23.08.2011, 19:13
    #37408607
ilua
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
невыполняется imp-орт из cron-а
Всем доброго времени суток.
Есть две Оракловые базы находящиеся на разных машинах (одна рабочаяя, другая резервная)
Написан скриптец выполняющий ежедневный, ежемесячный , ежегодный (в зависимости от текущей даты) exp-орт таблици из одной базы, и imp-орт этих данных в другую базу, скрипт крутится на машине с резервной базой..
Алгоритм действий скрипта следующий:
1 ) в рабочей базе создаем таблицу содержащую данные за сутки использую sqlplus
2) экспортируем этот кусок по средством exp (использую для этого expect вызывая отдельный файл, коннектимся по ssh и т.д.)
3) копируем полученный файл экспорта с одной машины на другую
используя scp
4) импортируем переданый файл.

Ниже приведу сам скрипт.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
#!/usr/bin/sh
 PASS="oracle"
 USER="oracle"
 IPSERV="192.168.10.15"
 TMP_DIR="/home/oracle/111"
 LOCAL_DIR="/mnt/oradata/EXPORT/2011"
 ORA_USER="oracle"
 ORA_PASSW="oracle"
 FILENAME="";
 DAY=`date +%d`;
 #DAY= 24 ;
 MONTH=`date +%m`;
 YEAR=`date +%Y`;
 END_DATE="";
 START_DATE=""
 PATH_=`dirname $ 0 `;
 QWERY_FILE="createtable.sql"
 END_DATE="TO_DATE ('$DAY/$MONTH/$YEAR 00:00:00', 'dd/mm/yyyy hh24:mi:ss')";

 if `test $DAY -eq  1 ` 		
 then
 	 if `test $MONTH -eq  1 `
 	 then
 	    YEAR=`expr $YEAR -  1 `;
 	  	FILENAME="year$YEAR";
 	 else
 	 	MONTH=`expr $MONTH -  1 `;
 	    FILENAME="month$MONTH$YEAR_mias";
 	 fi
     
 else 
 	DAY=`expr $DAY -  1 `;
    FILENAME=`date +%b`$DAY;
 fi
 START_DATE="TO_DATE ('$DAY/$MONTH/$YEAR 00:00:00', 'dd/mm/yyyy hh24:mi:ss')"; 
 
 echo "create table $FILENAME as select  * from  data1 where timemoment between $START_DATE AND $END_DATE;" > $PATH_/$QWERY_FILE;
 echo "select count(*) from $FILENAME;" >> $PATH_/$QWERY_FILE;
 echo "disconnect;" >> $PATH_/$QWERY_FILE;
 echo "quit;" >> $PATH_/$QWERY_FILE;
 echo " " >> $LOCAL_DIR/$FILENAME.log;
 echo "************************************************" >> $LOCAL_DIR/$FILENAME.log;
 echo "************ CREATE TABLE $FILENAME ************" >> $LOCAL_DIR/$FILENAME.log;
 echo "************************************************" >> $LOCAL_DIR/$FILENAME.log;
 echo "$ORACLE_HOME/bin/sqlplus $ORA_PASSW/$ORA_USER@dev10 @$PATH_/$QWERY_FILE " >> $LOCAL_DIR/$FILENAME.log;
`$ORACLE_HOME/bin/sqlplus $ORA_PASSW/$ORA_USER@dev10 @$PATH_/$QWERY_FILE cat >> $LOCAL_DIR/$FILENAME.log`;
 
 echo " " >> $LOCAL_DIR/$FILENAME.log;
 echo "******************************************************************" >> $LOCAL_DIR/$FILENAME.log;
 echo "** EXPORT TABLE $FILENAME to $LOCAL_DIR/$FILENAME.dmp" >> $LOCAL_DIR/$FILENAME.log;
 echo "*****************************************************************" >> $LOCAL_DIR/$FILENAME.log;
`$PATH_/ssh_backup.expect $IPSERV $PASS $USER $TMP_DIR $LOCAL_DIR $FILENAME $ORA_USER $ORA_PASSW >> $LOCAL_DIR/$FILENAME.log`;
 
 echo " " >> $LOCAL_DIR/$FILENAME.log;
 echo "******************************************************************" >> $LOCAL_DIR/$FILENAME.log;
 echo "** scp $IPSERV/$TMP_DIR/$FILENAME.dmp to $LOCAL_DIR/$FILENAME.dmp" >> $LOCAL_DIR/$FILENAME.log;
 echo "******************************************************************" >> $LOCAL_DIR/$FILENAME.log;
 #`$PATH_/sftp.expect $IPSERV $PASS $USER $TMP_DIR $LOCAL_DIR $FILENAME $ORA_USER $ORA_PASSW >> $LOCAL_DIR/$FILENAME.log`;
   
 echo " " >> $LOCAL_DIR/$FILENAME.log;
 echo "******************************************************************" >> $LOCAL_DIR/$FILENAME.log;
 echo "** IMPORT $LOCAL_DIR/$FILENAME.dmp to TABLE $FILENAME" >> $LOCAL_DIR/$FILENAME.log;
 echo "******************************************************************" >> $LOCAL_DIR/$FILENAME.log; 
 echo "$ORACLE_HOME/bin/imp $ORA_USER/$ORA_PASSW file=$LOCAL_DIR/$FILENAME.dmp grants=y constraints=y" >> $LOCAL_DIR/$FILENAME.log;
 $FILENAME.log`;
[color=red] `$ORACLE_HOME/bin/imp $ORA_USER/$ORA_PASSW file=$LOCAL_DIR/$FILENAME.dmp grants=y constraints=y`;[/color] # тут проблема
  
из консоли скрипт работает вполне себе прилично, а вот в cron-e шаг imp-орта игнорируется, пробовал expect-ом результат такойже. В чем может быть затык (в crontab устанавливаю ORACLE_HOME=/opt/oracle/product/11gR1/db)?
Также почемуто для imp-а не получается сливать в лог инфу выводимую ей на терминал, подозреваю что она не использует для этого стандартный вывод, это тоже проблема, подскажите как научить её сливать инфу выводимую на терминал в лог?
...
Рейтинг: 0 / 0
23.08.2011, 20:03
    #37408678
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
невыполняется imp-орт из cron-а
echo $LD_LIBRARY_PATH
...
Рейтинг: 0 / 0
24.08.2011, 05:58
    #37409013
SSukholet
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
невыполняется imp-орт из cron-а
On Tue, 23 Aug 2011 23:13:32 +0700, ilua <nospam@sql.ru>; wrote:

> Автор: ilua
> Всем доброго времени суток.
> Есть две Оракловые базы находящиеся на разных машинах (одна рабочаяя,
> другая резервная)
А чего бы DBLINK не поднять и не ограничится одним sqlplus'ом?
Транзакционная целостность, бла-бла, всё хорошо?




--
Остаюсь искренне Ваш,
Станислав Сухолёт
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
24.08.2011, 16:38
    #37410142
ilua
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
невыполняется imp-орт из cron-а
SSukholet спасибо оч удобный вариант(кратко и аккуратно) так и буду делать скорее всего.
Но есть желание разобраться в сложившейся ситуации
Журавлев Денис
Код: plaintext
1.
su oracle; 
echo $LD_LIBRARY_PATH;

возвращает пустую строку. Cам скрипт из-под пользователя оракл работает.

Может кто еще подскажет ответ на вопрос авторТакже почемуто для imp-а не получается сливать в лог инфу выводимую ей на терминал, подозреваю что она не использует для этого стандартный вывод, это тоже проблема, подскажите как научить её сливать инфу выводимую на терминал в лог?
...
Рейтинг: 0 / 0
24.08.2011, 16:59
    #37410186
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
невыполняется imp-орт из cron-а
$ imp dddd 1>out 2>&1
много раз давим enter
$ cat out

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Import: Release 11.2.0.2.0 - Production on Wed Aug 24 16:57:05 2011

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

Password: 

IMP-00004: invalid username or password
Username: Password: 

IMP-00058: ORACLE error 1017 encountered
ORA-01017: invalid username/password; logon deniedUsername: Password: 


imp дурацкие вопросы задает, не вылетает с ошибкой, silent режима нет. Вы посмотрите может у вас imp все еще висит? ps -ef|grep imp
...
Рейтинг: 0 / 0
24.08.2011, 17:46
    #37410284
ilua
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
невыполняется imp-орт из cron-а
Денис спасибо, так работает. Осталось осознать, получается мы stderr направляем в stdout который в свою очередь назначаем в файл. Выходит imp использует stderr для вывода ? И что вы имели ввиду под silent режимом? imp запустил с параметрами вроде весь результата в фай слился нормально.
ps -ef|grep imp ничего ненаходит, что логично - imp работает не фоново, еслиб imp повис то я думаю и скрипт который его вызывает тоже бы висел
...
Рейтинг: 0 / 0
24.08.2011, 18:02
    #37410318
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
невыполняется imp-орт из cron-а
iluaДенис спасибо, так работает. Осталось осознать, получается мы stderr направляем в stdout который в свою очередь назначаем в файл. Выходит imp использует stderr для вывода ?ну вот так, да. У вас наверно stderr попадал в cron а тот наверно у вас в dev/null завернут.


ilua И что вы имели ввиду под silent режимом?
sqlplus imp exp пытаются интерактивно общаться с пользователем, переспрашивают пароль, доппараметры, иногда sqlplus висит годами из джоба, ждет когда ему пароль скажут, хочется non-interactive режим.
...
Рейтинг: 0 / 0
24.08.2011, 18:05
    #37410322
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
невыполняется imp-орт из cron-а
обычно все используют параметр log у imp/exp т.е.
imp ...... log=...../implog.log
...
Рейтинг: 0 / 0
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / невыполняется imp-орт из cron-а / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]