У меня есть пример программы, которая отлично работает с одной базой данных и не вызывает обратный вызов в другой базе данных.
Я заметил, что в рабочем случае SELECT CALLBACK FROM USER_CHANGE_NOTIFICATION_REGS
возвращает строку, которая ссылается на IP-адрес клиента, который, кажется, интуитивно соответствует тому, что необходимо для обратного вызова.
(46, 4, 'net8://(ADDRESS=(PROTOCOL=tcp)(HOST=172.16.252.1)(PORT=49406))?PR=0',
0, 0, 1800, 'MH.CBDEMO')
# 172.16.252.1 = client machine
В случае переадресации строка хоста заполняется IP-адресом хоста базы данных.
(271, 4, 'net8://(ADDRESS=(PROTOCOL=tcp)(HOST=138.72.249.167)(PORT=50966))?PR=0',
0, 0, 1800, 'MH.CBDEMO')
# 138.72.249.167 = database host
Итак, два вопроса:
верно ли, что HOST = parm должен ссылаться на клиента OCI?
Как лучше всего определить, где неправильно указывается HOST = parm?
окружающая среда:
- клиент: Mac OSX, OCI, Python + cx_Oracle; база данных: 10.2.0.4.0
- хороший сервер: linux на vmware, 10.2.0.4.0
- сбой сервера: linux RAC, 10.2.0.4.0