powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Shell скрипт формирует большой размер лога 32-битного sqlplus
4 сообщений из 29, страница 2 из 2
Shell скрипт формирует большой размер лога 32-битного sqlplus
    #40085306
Мутаген
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я бы начал не c
Код: plaintext
which sqlplus
, а с
Код: plaintext
type echo
. Это должен быть shell builtin, но там ksh...

Затем поменял
Код: plaintext
export PATH=$ORACLE_HOME/bin:$PATH
на
Код: plaintext
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 остальной.

Невиданная дичь
...
Рейтинг: 0 / 0
Shell скрипт формирует большой размер лога 32-битного sqlplus
    #40085322
Keklik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Переменные там вообще не нужны, ибо среда настроена на 32-битного клиента.
Добавил, чтобы вопросов меньше было по окружению.
И использовал для запуска в 64-битном клиенте(где ошибки нет).


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


Код: plsql
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.
> 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
...
Рейтинг: 0 / 0
Shell скрипт формирует большой размер лога 32-битного sqlplus
    #40085338
Keklik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МутагенТ.е., stdout пишется, потом делается seek на 1.5 ГБ и пишется stdout остальной.
Спасибо за советы, да, именно так, запись в начале файла(вывод sqlplus), потом пустые 1.5ГБ, и потом хвост.
В примере ниже хвост - это результат работы команд после блока sqlplus:

Код: plsql
1.
2.
type echo
echo 'Finished'



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



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

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
> 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.... :
Код: plsql
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.
> 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ГБ:
Код: plsql
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.
> ./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
...
Рейтинг: 0 / 0
Shell скрипт формирует большой размер лога 32-битного sqlplus
    #40085766
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вызовите вместо SQL*Plus что-то другое 32-битное
- связанное c Oracle. Например, tnsping и opatch
- нечто никак не связанное с Oracle.
...
Рейтинг: 0 / 0
4 сообщений из 29, страница 2 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Shell скрипт формирует большой размер лога 32-битного sqlplus
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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