Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 userenv('TERMINAL') и crontab в Linux  [new]
alex6661
Member

Откуда:
Сообщений: 38
помогите новичку.
Когда crontab запускает процедуру в которой происходит подключение к oracle то userenv('TERMINAL') принимает значение null. А это в свою очередь не дает нормально отработать оракловым процедурам разработчиков. есть ли возможность управлять значением userenv('TERMINAL') ? До или после подключения к БД - все равно.
2 дек 10, 12:53    [9874641]     Ответить | Цитировать Сообщить модератору
 Re: userenv('TERMINAL') и crontab в Linux  [new]
xtender
Member

Откуда: Мск
Сообщений: 3261
alex6661, установите term в скрипте, а вообще запускали бы в шедулере...
2 дек 10, 13:09    [9874803]     Ответить | Цитировать Сообщить модератору
 Re: userenv('TERMINAL') и crontab в Linux  [new]
xtender
Member

Откуда: Мск
Сообщений: 3261
ой вру... не TERM...
2 дек 10, 13:11    [9874832]     Ответить | Цитировать Сообщить модератору
 Re: userenv('TERMINAL') и crontab в Linux  [new]
denix1
Member

Откуда: Киев
Сообщений: 4661
alex6661,

подключайтесь через LISTENER
2 дек 10, 13:19    [9874898]     Ответить | Цитировать Сообщить модератору
 Re: userenv('TERMINAL') и crontab в Linux  [new]
alex6661
Member

Откуда:
Сообщений: 38
чем crontab от шедуллера отличается? реализовываем на linux
2 дек 10, 13:20    [9874912]     Ответить | Цитировать Сообщить модератору
 Re: userenv('TERMINAL') и crontab в Linux  [new]
alex6661
Member

Откуда:
Сообщений: 38
denix1,
Так воде через него и иду
я подключаюсь как sqlplus login/pass@host:port/sid
оракл на удаленной машине
2 дек 10, 13:22    [9874935]     Ответить | Цитировать Сообщить модератору
 Re: userenv('TERMINAL') и crontab в Linux  [new]
zernov
Member

Откуда: Somewhere in the time
Сообщений: 76
alex6661
denix1,
Так воде через него и иду
я подключаюсь как sqlplus login/pass@host:port/sid
оракл на удаленной машине

А в вашем скрипте вы указываете переменные окружения пользователя?
Может стоит добавить строку - . $HOME/.profile
2 дек 10, 13:32    [9875038]     Ответить | Цитировать Сообщить модератору
 Re: userenv('TERMINAL') и crontab в Linux  [new]
alex6661
Member

Откуда:
Сообщений: 38
zernov,

Есть мысли каких именно переменные окружение не хватает?
я руками указывал их в скрипте..
LD_LIBRARY_PATH=/opt/oracle/product/10.2.0/db_1/lib; export LD_LIBRARY_PATH;
ORACLE_HOME=/opt/oracle/product/10.2.0/db_1; export ORACLE_HOME;
NLS_LANG=AMERICAN_AMERICA.UTF8; export NLS_LANG;
2 дек 10, 13:36    [9875081]     Ответить | Цитировать Сообщить модератору
 Re: userenv('TERMINAL') и crontab в Linux  [new]
-2-
Member

Откуда:
Сообщений: 12049
У фоновых процессов нет терминала.
я@линух:~> tty
/dev/pts/2
2 дек 10, 13:43    [9875151]     Ответить | Цитировать Сообщить модератору
 Re: userenv('TERMINAL') и crontab в Linux  [new]
-2-
Member

Откуда:
Сообщений: 12049
я@линух:~> at now <<EOF
> tty > tty.from.at
> EOF
warning: commands will be executed using /bin/sh
job 35 at 2010-12-02 13:43
я@линух:~> cat tty.from.at
not a tty
2 дек 10, 13:44    [9875166]     Ответить | Цитировать Сообщить модератору
 Re: userenv('TERMINAL') и crontab в Linux  [new]
zernov
Member

Откуда: Somewhere in the time
Сообщений: 76
alex6661

Есть мысли каких именно переменные окружение не хватает?
я руками указывал их в скрипте..
LD_LIBRARY_PATH=/opt/oracle/product/10.2.0/db_1/lib; export LD_LIBRARY_PATH;
ORACLE_HOME=/opt/oracle/product/10.2.0/db_1; export ORACLE_HOME;
NLS_LANG=AMERICAN_AMERICA.UTF8; export NLS_LANG;


Нет ORACLE_SID или вместо его можно использовать TWO_TASK
Вот в perl-скрипте использую конструкцию:
BEGIN {
$ENV{ORACLE_HOME} = <где-там>;
$ENV{TWO_TASK} = <oracle_sid>;
$ENV{NLS_LANG} = "AMERICAN_AMERICA.CL8MSWIN1251";
$ENV{ORA_NLS} = "$ENV{ORACLE_HOME}/nls/data";
}
2 дек 10, 13:47    [9875204]     Ответить | Цитировать Сообщить модератору
 Re: userenv('TERMINAL') и crontab в Linux  [new]
alex6661
Member

Откуда:
Сообщений: 38
-2-,

ну, я как бы понял.. а что делать то?
может можно инициализировать tty ?
Или сделать так чтоб оракл брал имя машины а не сессии...?
2 дек 10, 13:54    [9875277]     Ответить | Цитировать Сообщить модератору
 Re: userenv('TERMINAL') и crontab в Linux  [new]
alex6661
Member

Откуда:
Сообщений: 38
zernov
alex6661
Есть мысли каких именно переменные окружение не хватает?
я руками указывал их в скрипте..
LD_LIBRARY_PATH=/opt/oracle/product/10.2.0/db_1/lib; export LD_LIBRARY_PATH;
ORACLE_HOME=/opt/oracle/product/10.2.0/db_1; export ORACLE_HOME;
NLS_LANG=AMERICAN_AMERICA.UTF8; export NLS_LANG;


Нет ORACLE_SID или вместо его можно использовать TWO_TASK
Вот в perl-скрипте использую конструкцию:
BEGIN {
$ENV{ORACLE_HOME} = <где-там>;
$ENV{TWO_TASK} = <oracle_sid>;
$ENV{NLS_LANG} = "AMERICAN_AMERICA.CL8MSWIN1251";
$ENV{ORA_NLS} = "$ENV{ORACLE_HOME}/nls/data";
}


не пойму а как TWO_TASK или ORACLE_SID относится к идентификатору терминала? щас конечно опробую..но..
2 дек 10, 13:57    [9875315]     Ответить | Цитировать Сообщить модератору
 Re: userenv('TERMINAL') и crontab в Linux  [new]
alex6661
Member

Откуда:
Сообщений: 38
zernov
alex6661
Есть мысли каких именно переменные окружение не хватает?
я руками указывал их в скрипте..
LD_LIBRARY_PATH=/opt/oracle/product/10.2.0/db_1/lib; export LD_LIBRARY_PATH;
ORACLE_HOME=/opt/oracle/product/10.2.0/db_1; export ORACLE_HOME;
NLS_LANG=AMERICAN_AMERICA.UTF8; export NLS_LANG;


Нет ORACLE_SID или вместо его можно использовать TWO_TASK
Вот в perl-скрипте использую конструкцию:
BEGIN {
$ENV{ORACLE_HOME} = <где-там>;
$ENV{TWO_TASK} = <oracle_sid>;
$ENV{NLS_LANG} = "AMERICAN_AMERICA.CL8MSWIN1251";
$ENV{ORA_NLS} = "$ENV{ORACLE_HOME}/nls/data";
}

не помогло
2 дек 10, 14:11    [9875421]     Ответить | Цитировать Сообщить модератору
 Re: userenv('TERMINAL') и crontab в Linux  [new]
zernov
Member

Откуда: Somewhere in the time
Сообщений: 76
alex6661
не помогло


Ну, тогда "гугл рулит" с простым запросом: userenv('TERMINAL').
Кстати, ничего не было сказано про версию Oracle, а вот здесь http://database.itags.org/oracle/274196/ пишут про баг:
This is likely due to
Bug:3325701 " V$SESSION.TERMINAL IS NULL IN 9.2.0.4" which is fixed in release 10.1.0.2.0.
and Bug:3135311 " Wrong results from SYS_CONTEXT('userenv', 'terminal')"

For more information see MetaLink Note:275908.1

и почитайте еще здесь http://forums.oracle.com/forums/thread.jspa?threadID=1033678&tstart=135
2 дек 10, 15:19    [9875972]     Ответить | Цитировать Сообщить модератору
 Re: userenv('TERMINAL') и crontab в Linux  [new]
alex6661
Member

Откуда:
Сообщений: 38
господ есть еще у кого мысли? я вот подумал про такой вариант:
кронтаом открывать ssh сессию сам на себя и запускать sql скрипт.
тут два варианта:
1. Передать скрипт на исполнение в ssh (ssh login@pass <crhbgn>). Не подходит
2. Открыть сессию в ней запустить скрипт.. и закрыть сессию.. - пока не знаю как реализовать.
3 дек 10, 09:59    [9879399]     Ответить | Цитировать Сообщить модератору
 Re: userenv('TERMINAL') и crontab в Linux  [new]
zernov
Member

Откуда: Somewhere in the time
Сообщений: 76
alex6661
2. Открыть сессию в ней запустить скрипт.. и закрыть сессию.. - пока не знаю как реализовать.


Попробуйте через команду screen.
У неё есть такая замечательная особенность - Detach the screen session (disconnect it from the terminal and put it into the background).
3 дек 10, 10:21    [9879555]     Ответить | Цитировать Сообщить модератору
 Re: userenv('TERMINAL') и crontab в Linux  [new]
-2-
Member

Откуда:
Сообщений: 12049
alex6661
тут два варианта:
3. NVL
3 дек 10, 10:34    [9879664]     Ответить | Цитировать Сообщить модератору
 Re: userenv('TERMINAL') и crontab в Linux  [new]
alex6661
Member

Откуда:
Сообщений: 38
-2-,

если ты имеешь в виду функцию NVL в SQL то необходимо править процедуру разработчиков - что не есть хорошо. кроме того userenv('TERMINAL') - они используют не в одной процедуре.. а во многих..
3 дек 10, 10:51    [9879808]     Ответить | Цитировать Сообщить модератору
 Re: userenv('TERMINAL') и crontab в Linux  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 15178
-bash-3.00$ ssh node2 ". env_clab;sqlplus -s /nolog @base/term"

TERMINAL
------------------------------



USERENV('TERMINAL')
------------------------------


-bash-3.00$ ssh -t node2 ". env_clab;sqlplus -s /nolog @base/term"

TERMINAL
------------------------------
pts/5


USERENV('TERMINAL')
------------------------------
pts/5

Connection to node2 closed.
-bash-3.00$
Это на солярке. Под линух - не знаю, но должен быть аналог.
3 дек 10, 11:18    [9880070]     Ответить | Цитировать Сообщить модератору
 Re: userenv('TERMINAL') и crontab в Linux  [new]
alex6661
Member

Откуда:
Сообщений: 38
andrey_anonymous
-bash-3.00$ ssh node2 ". env_clab;sqlplus -s /nolog @base/term"

TERMINAL
------------------------------



USERENV('TERMINAL')
------------------------------


-bash-3.00$ ssh -t node2 ". env_clab;sqlplus -s /nolog @base/term"

TERMINAL
------------------------------
pts/5


USERENV('TERMINAL')
------------------------------
pts/5

Connection to node2 closed.
-bash-3.00$
Это на солярке. Под линух - не знаю, но должен быть аналог.



Почти получилось.. но когда в крон ставлю - снова облом.
ssh -t <username>@<host> "who am I >/opt/RKC/test.txt"
рукам когда запускаеш - все ок. ставиш в крон - все болт.
Какйто заколдованный круг
6 дек 10, 18:20    [9894625]     Ответить | Цитировать Сообщить модератору
 Re: userenv('TERMINAL') и crontab в Linux  [new]
zernov
Member

Откуда: Somewhere in the time
Сообщений: 76
alex6661

Почти получилось.. но когда в крон ставлю - снова облом.
ssh -t <username>@<host> "who am I >/opt/RKC/test.txt"
рукам когда запускаеш - все ок. ставиш в крон - все болт.
Какйто заколдованный круг


Кроме cron-а есть еще команда at - http://www.opennet.ru/man.shtml?topic=at&category=8&russian=0 и совместно со screen вы добьётесь желаемого результата.
6 дек 10, 22:16    [9895540]     Ответить | Цитировать Сообщить модератору
 Re: userenv('TERMINAL') и crontab в Linux  [new]
alex6661
Member

Откуда:
Сообщений: 38
zernov,

Можете сказать чем принципиально отличается запуск в кроне от запуска в at ?
at - предполагает разовый запуск (насколько я понял) а это для меня не удобно.
8 дек 10, 14:46    [9905328]     Ответить | Цитировать Сообщить модератору
 Re: userenv('TERMINAL') и crontab в Linux  [new]
-2-
Member

Откуда:
Сообщений: 12049
alex6661,

Может копнуть в сторону /dev/vcsXX и XXXgetty.
8 дек 10, 14:52    [9905382]     Ответить | Цитировать Сообщить модератору
 Re: userenv('TERMINAL') и crontab в Linux  [new]
zernov
Member

Откуда: Somewhere in the time
Сообщений: 76
alex6661
zernov,

Можете сказать чем принципиально отличается запуск в кроне от запуска в at ?
at - предполагает разовый запуск (насколько я понял) а это для меня не удобно.


А кто вам мешает написать скрипт, который будет стоять в cron и запускать создание задания через at.
Не много, правда, через Ж, но "вам шашечки, или доехать".
8 дек 10, 15:38    [9905864]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Oracle Ответить
 
Лучший учебный центр Microsoft!
Новейшие курсы Microsoft SQL Server 2014!
ОЧЕНЬ привлекательные цены на курсы Oracle — от 26 тыс.руб.!
Все курсы по базам данных: Microsoft SQL Server 2014, Oracle, IBM DB2, Access, MySql