Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Помогите разобраться с bequeath connection  [new]
Правильный Вася
Member

Откуда:
Сообщений: 250
Собственно, я вообще пытаюсь понять, что это такое и нужно ли оно мне.

Вопрос появился, когда я читал доку по 19с про подключение с клиента, находящегося на той же машине, что и сервер БД. Вот цитата:
To connect to Oracle Database 19c, the following are required:
• Oracle Database Client is version 11.2.0.4 or later.
• If the earlier Oracle Database Client is running on the same computer as Oracle Database 19c, then you cannot use a bequeath connection.

Что это за "соединение по завещанию"?

Почитал немногочисленные тексты с упоминанием "завещания" и пришёл к выводу, что это как-то относится к вопросу миграции с меньшей версии на большую.

У себя я поставил 19с с нуля. Хочу с того же компа подключаться 32-битными прогами по OCI, нужен соответствующий клиент. В силу своей лени есть желание использовать instant client 12.2, который не требует никакой инсталляции - скопировал, настроил tnsnames и готово.

Теперь вопросы:
1. Получится ли этот заход с клиентом 12.2 или процитированное предупреждение как раз и говорит о таковой невозможности?
2. Если это невозможно, то как ещё можно подключаться 32-битными прогами через OCI, чтобы без длительной возни?
19 мар 20, 22:18    [22102604]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с bequeath connection  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 9815
Правильный Вася,

К pluggable через bequeath нельзя подключиться в принципе.

SY.
19 мар 20, 22:40    [22102609]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с bequeath connection  [new]
PuM256
Member

Откуда:
Сообщений: 21
Правильный Вася,

Bequeeth, если по-простому - это sqlplus "/ as sysdba". Приложения так в базу не ходят, а коннектятся к листенеру по сети.

Так что твой instant client 12.2 будет работать замечательно. Только возникает вопрос, зачем он нужен, если на той же машине стоит сервер, а вместе с сервером всегда устанавливается и клиент.

Upd: а, понял, сервер 64-разрядный, а надо коннектиться 32-разрядным приложениям. Ну тогда да, можно и Instant Client поставить.

Сообщение было отредактировано: 20 мар 20, 07:49
20 мар 20, 07:49    [22102665]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с bequeath connection  [new]
Правильный Вася
Member

Откуда:
Сообщений: 250
Спасибо.


Странный всё-таки термин "завещание"...
20 мар 20, 22:22    [22103330]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с bequeath connection  [new]
booby
Member

Откуда:
Сообщений: 1835
про перевод:
"завещание" - это явный текст, прямо и непосредственно описывающий способ доступа к завещаемому,
который в противном случае определялся бы на основании общего законодательства.

В данном случае соединение устанавливается напрямую, минуя общий механизм подключения к листенеру,
который даже ни видит процесса, организованного для такого соединения.

Если оно и "завещано", то от процесса установки сервера.
Но, имхо, скорее не "завещано", а "непосредственно", в обход листенера, "заявлено",
оставлено для возможности прямого соединения, минуя общие стандартные механизмы.
Вам оставлена такая возможность прямого и непосредственного соединения, но в отличие от настоящего завещания,
здесь не предполагается моральной ответственности за отказ от выполнения воли завещающего, это всего лишь возможность.
20 мар 20, 23:07    [22103359]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с bequeath connection  [new]
Vadim Lejnin
Member

Откуда:
Сообщений: 6921
Правильный Вася,

BEQ - протокол связи основанный на system pipe, все остальные протоколы основаны на socket
BEQ - одна из первых реализаций TNS, корнями еще в системах VMS, когда не было даже TCP, а вот pipe были
Точнее сначало было слово была реализация single task/two task соединение, то есть когда клиент работал в адресном пространстве сервера.
почитай про sql*loader/imp/exp single task (сейчас уже не поддерживаются), но следы остались:
$ grep -B 1 Single `dbhome`/rdbms/lib/ins_rdbms.mk 
expst: $(EXPMAI) $(DEF_OPT) $(SSDBED)
	$(SILENT)$(ECHO) " - Linking Singletask Export utility (exp)"
--
impst: $(IMPMAI) $(DEF_OPT) $(SSDBED)
	$(SILENT)$(ECHO) " - Linking Singletask Import utility (imp)"
--
sqlldrst: $(LDRMAI) $(DEF_OPT) $(SSDBED)
	$(SILENT)$(ECHO) " - Linking Singletask SQL*Loader utility (sqlldr)"


Пример:
$ sqlplus /nolog
...
SQL> !ps
  PID TTY          TIME CMD
15329 pts/0    00:00:00 bash 
15782 pts/0    00:00:00 sqlplus
15786 pts/0    00:00:00 ps
-- нет коннектов
SQL> !ls -l /proc/15782/fd
total 0
lrwx------ 1 oracle oinstall 64 Mar 21 07:18 0 -> /dev/pts/0
lrwx------ 1 oracle oinstall 64 Mar 21 07:18 1 -> /dev/pts/0
lrwx------ 1 oracle oinstall 64 Mar 21 07:18 2 -> /dev/pts/0
lr-x------ 1 oracle oinstall 64 Mar 21 07:18 3 -> /oracle/app/oracle/product/11.2.0/dbhome_1/sqlplus/mesg/sp1us.msb
lr-x------ 1 oracle oinstall 64 Mar 21 07:18 4 -> /oracle/app/oracle/product/11.2.0/dbhome_1/sqlplus/mesg/sp2us.msb
lr-x------ 1 oracle oinstall 64 Mar 21 07:18 5 -> /oracle/app/oracle/product/11.2.0/dbhome_1/sqlplus/mesg/cpyus.msb
lr-x------ 1 oracle oinstall 64 Mar 21 07:18 6 -> /oracle/app/oracle/product/11.2.0/dbhome_1/rdbms/mesg/diaus.msb
lr-x------ 1 oracle oinstall 64 Mar 21 07:18 7 -> /proc/15782/fd
lr-x------ 1 oracle oinstall 64 Mar 21 07:18 8 -> /oracle/app/oracle/product/11.2.0/dbhome_1/rdbms/mesg/ocius.msb
-- socket
SQL> connect sys/*****@localhost/srv as sysdba
Connected.
SQL> !ls -l /proc/15782/fd
total 0
lrwx------ 1 oracle oinstall 64 Mar 21 07:18 0 -> /dev/pts/0
lrwx------ 1 oracle oinstall 64 Mar 21 07:18 1 -> /dev/pts/0
lrwx------ 1 oracle oinstall 64 Mar 21 07:18 2 -> /dev/pts/0
lr-x------ 1 oracle oinstall 64 Mar 21 07:18 3 -> /oracle/app/oracle/product/11.2.0/dbhome_1/sqlplus/mesg/sp1us.msb
lr-x------ 1 oracle oinstall 64 Mar 21 07:18 4 -> /oracle/app/oracle/product/11.2.0/dbhome_1/sqlplus/mesg/sp2us.msb
lr-x------ 1 oracle oinstall 64 Mar 21 07:18 5 -> /oracle/app/oracle/product/11.2.0/dbhome_1/sqlplus/mesg/cpyus.msb
lr-x------ 1 oracle oinstall 64 Mar 21 07:18 6 -> /oracle/app/oracle/product/11.2.0/dbhome_1/rdbms/mesg/diaus.msb
lr-x------ 1 oracle oinstall 64 Mar 21 07:18 7 -> /proc/15782/fd
lr-x------ 1 oracle oinstall 64 Mar 21 07:18 8 -> /oracle/app/oracle/product/11.2.0/dbhome_1/rdbms/mesg/ocius.msb
lrwx------ 1 oracle oinstall 64 Mar 21 07:19 9 -> socket:[130515213]
-- pipe
SQL> connect / as sysdba
Connected.
SQL> !ls -l /proc/15782/fd
total 0
lrwx------ 1 oracle oinstall 64 Mar 21 07:18 0 -> /dev/pts/0
lrwx------ 1 oracle oinstall 64 Mar 21 07:18 1 -> /dev/pts/0
l-wx------ 1 oracle oinstall 64 Mar 21 07:19 10 -> pipe:[130517013]
lr-x------ 1 oracle oinstall 64 Mar 21 07:19 11 -> pipe:[130517014]
lrwx------ 1 oracle oinstall 64 Mar 21 07:18 2 -> /dev/pts/0
lr-x------ 1 oracle oinstall 64 Mar 21 07:18 3 -> /oracle/app/oracle/product/11.2.0/dbhome_1/sqlplus/mesg/sp1us.msb
lr-x------ 1 oracle oinstall 64 Mar 21 07:18 4 -> /oracle/app/oracle/product/11.2.0/dbhome_1/sqlplus/mesg/sp2us.msb
lr-x------ 1 oracle oinstall 64 Mar 21 07:18 5 -> /oracle/app/oracle/product/11.2.0/dbhome_1/sqlplus/mesg/cpyus.msb
lr-x------ 1 oracle oinstall 64 Mar 21 07:18 6 -> /oracle/app/oracle/product/11.2.0/dbhome_1/rdbms/mesg/diaus.msb
lr-x------ 1 oracle oinstall 64 Mar 21 07:18 7 -> /proc/15782/fd
lr-x------ 1 oracle oinstall 64 Mar 21 07:18 8 -> /oracle/app/oracle/product/11.2.0/dbhome_1/rdbms/mesg/ocius.msb

SQL> 
 


p.s. для подключения, tnsnames не обязателен, ну и посмотри про переменные окружения TWO_TASK и LOCAL
$ tnsping spoim | grep DESCR|tr -d " "
Attempting to contact (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=))(ADDRESS=(PROTOCOL=TCP)(HOST=X.X.X.X)(PORT=1521)))
$ sqlplus scott/tiger@'(DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=srv))(ADDRESS=(PROTOCOL=TCP)(HOST=0.0.0.0)(PORT=1521)))'
...
SQL> 
21 мар 20, 07:45    [22103421]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с bequeath connection  [new]
Vadim Lejnin
Member

Откуда:
Сообщений: 6921
Попробовал BEQ подключение с разными ORACLE_HOME, ORACLE_SID, LD_LIBRARY_PATH

tnsping получается, а вот подключение нет...
Попробуйте поиграться с ORACLE_HOME, LD_LIBRARY_PATH и ORACLE_SID
вдруг получится

-- diff of ORACLE_HOME of server and client
$ . oraenv
ORACLE_SID = [o121] ? o122
The Oracle base remains unchanged with value /u/app/oracle
$ tnsping "(DESCRIPTION=(ADDRESS=(PROTOCOL=BEQ)(ENVS='ORACLE_HOME=/u/app/oracle/product/12.1.0/dbhome_1')(PROGRAM=oracle)(ARGV0=oraclerepo)(ARGS='(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))'))(CONNECT_DATA=(SID=repo)(ORACLE_HOME=/u/app/oracle/product/12.1.0/dbhome_1)))" 10

TNS Ping Utility for Solaris: Version 12.2.0.1.0 - Production on 21-MAR-2020 08:21:31
...
Attempting to contact (DESCRIPTION=(ADDRESS=(PROTOCOL=BEQ)(ENVS='ORACLE_HOME=/u/app/oracle/product/12.1.0/dbhome_1')(PROGRAM=oracle)(ARGV0=oraclerepo)(ARGS='(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))'))(CONNECT_DATA=(SID=repo)(ORACLE_HOME=/u/app/oracle/product/12.1.0/dbhome_1)))
OK (120 msec)
OK (50 msec)
OK (170 msec)
OK (50 msec)
OK (170 msec)
OK (60 msec)
OK (170 msec)
OK (60 msec)
OK (170 msec)
OK (50 msec)

$ sqlplus -l scott/tiger@"(DESCRIPTION=(ADDRESS=(PROTOCOL=BEQ)(ENVS='ORACLE_HOME=/u/app/oracle/product/12.1.0/dbhome_1,ORACLE_SID=repo,LD_LIBRARY_PATH=/u/app/oracle/product/12.1.0/dbhome_1/lib')(PROGRAM=oracle)(ARGV0=oraclerepo)(ARGS='(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))'))(CONNECT_DATA=(SID=repo)(ORACLE_HOME=/u/app/oracle/product/12.1.0/dbhome_1)(ENVS='ORACLE_HOME=/u/app/oracle/product/12.1.0/dbhome_1,ORACLE_SID=repo,LD_LIBRARY_PATH=/u/app/oracle/product/12.1.0/dbhome_1/lib')))"

SQL*Plus: Release 12.2.0.1.0 Production on Sat Mar 21 08:16:18 2020
...
ERROR:
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
SVR4 Error: 2: No such file or directory
Additional information: 2503
Additional information: -1527457181
Process ID: 0
Session ID: 0 Serial number: 0


SP2-0751: Unable to connect to Oracle.  Exiting SQL*Plus
-- same ORACLE_HOME, but diff ORACLE_SID
$ . oraenv
ORACLE_SID = [o122] ? o121
The Oracle base remains unchanged with value /u/app/oracle
$ sqlplus -l scott/tiger@"(DESCRIPTION=(ADDRESS=(PROTOCOL=BEQ)(ENVS='ORACLE_HOME=/u/app/oracle/product/12.1.0/dbhome_1,ORACLE_SID=repo,LD_LIBRARY_PATH=/u/app/oracle/product/12.1.0/dbhome_1/lib')(PROGRAM=oracle)(ARGV0=oraclerepo)(ARGS='(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))'))(CONNECT_DATA=(SID=repo)(ORACLE_HOME=/u/app/oracle/product/12.1.0/dbhome_1)(ENVS='ORACLE_HOME=/u/app/oracle/product/12.1.0/dbhome_1,ORACLE_SID=repo,LD_LIBRARY_PATH=/u/app/oracle/product/12.1.0/dbhome_1/lib')))"

SQL*Plus: Release 12.1.0.2.0 Production on Sat Mar 21 08:17:18 2020
...
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
...
SCOTT@repo SQL> 


Ну и базовый старт экспериментов (стандартный BEQ):
$ tnsping repob

TNS Ping Utility for Solaris: Version 12.1.0.2.0 - Production on 21-MAR-2020 08:29:22
...
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION=(ADDRESS=(PROTOCOL=BEQ)(PROGRAM=oracle)(ARGV0=oraclerepo)(ARGS='(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))'))(CONNECT_DATA=(SID=repo)))
OK (40 msec)
$ sqlplus -l scott/tiger@repob

SQL*Plus: Release 12.1.0.2.0 Production on Sat Mar 21 08:29:41 2020
...
ERROR:
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
SVR4 Error: 2: No such file or directory
Additional information: 2581
Additional information: 1201717039
Process ID: 0
Session ID: 0 Serial number: 0

$ . oraenv
ORACLE_SID = [o121] ? repo
The Oracle base remains unchanged with value /u/app/oracle
$ sqlplus scott/tiger@repob

SQL*Plus: Release 12.1.0.2.0 Production on Sat Mar 21 08:29:52 2020

...

Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SCOTT@repob SQL> Disconnected from Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
$ 
21 мар 20, 08:34    [22103427]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с bequeath connection  [new]
-2-
Member

Откуда:
Сообщений: 15279
Vadim Lejnin
BEQ - протокол связи основанный на system pipe, все остальные протоколы основаны на socket
А named pipes на чем основан?
21 мар 20, 12:00    [22103469]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с bequeath connection  [new]
Правильный Вася
Member

Откуда:
Сообщений: 250
Ух!
Спасибо всем за ликбез.
Не уверен, что мне это понадобится, но теперь хотя бы понятно, почему.
21 мар 20, 23:07    [22103773]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить