Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
 Re: Shell скрипт формирует большой размер лога 32-битного sqlplus  [new]
Мутаген
Member

Откуда:
Сообщений: 721
Я бы начал не c
which sqlplus
, а с
type echo
. Это должен быть shell builtin, но там ksh...

Затем поменял
export PATH=$ORACLE_HOME/bin:$PATH
на
export PATH=$PATH:$ORACLE_HOME/bin
и убрал LD_LIBRARY_PATH с LIBHOME. Если это не Instant client, он будет правильно пролинкован при инсталяции и эти переменые не нужны. LIBPATH точно не нужен никогда

И продолжил бы выбрасыванием запуска sqlplus из скрипта вообще, оставив внутри один echo, потом добавив второй echo в начало скрипта (echo started; echo finished)

Вообще, перенаправления stdout (>) в этой ситуации делает вызывающий shell, и надо в нём разбираться - почему он делает в некоторых случаях sparse файл. Т.е., stdout пишется, потом делается seek на 1.5 ГБ и пишется stdout остальной.

Невиданная дичь
22 июл 21, 10:28    [22349719]     Ответить | Цитировать Сообщить модератору
 Re: Shell скрипт формирует большой размер лога 32-битного sqlplus  [new]
Keklik
Member

Откуда:
Сообщений: 45
Переменные там вообще не нужны, ибо среда настроена на 32-битного клиента.
Добавил, чтобы вопросов меньше было по окружению.
И использовал для запуска в 64-битном клиенте(где ошибки нет).


Я сразу проверил версию без sqlplus, причем из двух
ШЕЛЛов (tcsh и ksh) - не делает два echo sparse-файла:


> echo $SHELL
/bin/ksh

> type echo
echo is an alias for '/bin/echo -e'



> cat tst4.ksh
#!/bin/ksh 


#export ORACLE_HOME=/oravl01/oracle/19.3_32

#export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

#export LIBHOME=/oravl01/oracle/19.3_32/lib


#export PATH=$ORACLE_HOME/bin:$PATH

type echo

echo "Started"

echo "Finished"

exit 0



> ./tst4.ksh > tst4.log

> ll tst4.log
-rw-r--r-- 1 tlgwrk21 aimsys 41 Jul 22 13:38 tst4.log


> cat tst4.log
echo is a shell builtin
Started
Finished
22 июл 21, 11:17    [22349743]     Ответить | Цитировать Сообщить модератору
 Re: Shell скрипт формирует большой размер лога 32-битного sqlplus  [new]
Keklik
Member

Откуда:
Сообщений: 45
Мутаген
Т.е., stdout пишется, потом делается seek на 1.5 ГБ и пишется stdout остальной.

Спасибо за советы, да, именно так, запись в начале файла(вывод sqlplus), потом пустые 1.5ГБ, и потом хвост.
В примере ниже хвост - это результат работы команд после блока sqlplus:

type echo
echo 'Finished'


Вот с какой стороны то, что с 64битным клиентом всё это работает без чудес с размерами
вывода stdout?



На 12с, 32-bit такая же история.

> type echo
echo is an alias for '/bin/echo -e'

> echo $ORACLE_HOME
/oravl01/oracle/12.2.0.1_32

> which sqlplus
/oravl01/oracle/12.2.0.1_32/bin/sqlplus


> file /oravl01/oracle/12.2.0.1_32/bin/sqlplus
/oravl01/oracle/12.2.0.1_32/bin/sqlplus: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=d010344980bc21f707f8de3bd6d132c225f54581, not stripped


Закоментарил все переменные(они есть в окружении), добавил прямо в скрипт информацию
type echo, which sqlplus.... :
> cat tst2.ksh
#!/bin/ksh 


#export ORACLE_HOME=/oravl01/oracle/19.3_32

#export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

#export LIBHOME=/oravl01/oracle/19.3_32/lib


#export PATH=$ORACLE_HOME/bin:$PATH

type echo

which sqlplus

file /oravl01/oracle/12.2.0.1_32/bin/sqlplus

echo $ORACLE_HOME

sqlplus -s testuser/testuser@TSTDB  << EOF
set echo on
set linesize 120
set timing on
set pagesize 0
select sysdate from dual;
exit
EOF

type echo
echo 'Finished'

exit 0




запускаем, получаем лог в 1.5ГБ:
> ./tst2.ksh  > tst2.log



> ll tst2.log
-rw-r--r-- 1 tlgwrk21 aimsys 1489727875 Jul 22 13:51 tst2.log





> hexdump -C tst2.log | more

00000000  65 63 68 6f 20 69 73 20  61 20 73 68 65 6c 6c 20  |echo is a shell |
00000010  62 75 69 6c 74 69 6e 0a  2f 6f 72 61 76 6c 30 31  |builtin./oravl01|
00000020  2f 6f 72 61 63 6c 65 2f  31 32 2e 32 2e 30 2e 31  |/oracle/12.2.0.1|
00000030  5f 33 32 2f 62 69 6e 2f  73 71 6c 70 6c 75 73 0a  |_32/bin/sqlplus.|
00000040  2f 6f 72 61 76 6c 30 31  2f 6f 72 61 63 6c 65 2f  |/oravl01/oracle/|
00000050  31 32 2e 32 2e 30 2e 31  5f 33 32 2f 62 69 6e 2f  |12.2.0.1_32/bin/|
00000060  73 71 6c 70 6c 75 73 3a  20 45 4c 46 20 33 32 2d  |sqlplus: ELF 32-|
00000070  62 69 74 20 4c 53 42 20  65 78 65 63 75 74 61 62  |bit LSB executab|
00000080  6c 65 2c 20 49 6e 74 65  6c 20 38 30 33 38 36 2c  |le, Intel 80386,|
00000090  20 76 65 72 73 69 6f 6e  20 31 20 28 53 59 53 56  | version 1 (SYSV|
000000a0  29 2c 20 64 79 6e 61 6d  69 63 61 6c 6c 79 20 6c  |), dynamically l|
000000b0  69 6e 6b 65 64 20 28 75  73 65 73 20 73 68 61 72  |inked (uses shar|
000000c0  65 64 20 6c 69 62 73 29  2c 20 66 6f 72 20 47 4e  |ed libs), for GN|
000000d0  55 2f 4c 69 6e 75 78 20  32 2e 36 2e 33 32 2c 20  |U/Linux 2.6.32, |
000000e0  42 75 69 6c 64 49 44 5b  73 68 61 31 5d 3d 64 30  |BuildID[sha1]=d0|
000000f0  31 30 33 34 34 39 38 30  62 63 32 31 66 37 30 37  |10344980bc21f707|
00000100  66 38 64 65 33 62 64 36  64 31 33 32 63 32 32 35  |f8de3bd6d132c225|
00000110  66 35 34 35 38 31 2c 20  6e 6f 74 20 73 74 72 69  |f54581, not stri|
00000120  70 70 65 64 0a 2f 6f 72  61 76 6c 30 31 2f 6f 72  |pped./oravl01/or|
00000130  61 63 6c 65 2f 31 32 2e  32 2e 30 2e 31 5f 33 32  |acle/12.2.0.1_32|
00000140  0a 32 32 2d 4a 55 4c 2d  32 31 0a 0a 45 6c 61 70  |.22-JUL-21..Elap|
00000150  73 65 64 3a 20 30 30 3a  30 30 3a 30 30 2e 30 30  |sed: 00:00:00.00|
00000160  0a 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
58cb7160  00 00 65 63 68 6f 20 69  73 20 61 20 73 68 65 6c  |..echo is a shel|
58cb7170  6c 20 62 75 69 6c 74 69  6e 0a 46 69 6e 69 73 68  |l builtin.Finish|
58cb7180  65 64 0a                                          |ed.|
58cb7183
22 июл 21, 11:45    [22349764]     Ответить | Цитировать Сообщить модератору
 Re: Shell скрипт формирует большой размер лога 32-битного sqlplus  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8324
Вызовите вместо SQL*Plus что-то другое 32-битное
- связанное c Oracle. Например, tnsping и opatch
- нечто никак не связанное с Oracle.
23 июл 21, 17:42    [22350342]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
Все форумы / Oracle Ответить