Первая настройка ODBC-соединения с Oracle. Я настроил listener.ora, tnsnames.ora и файл инициализации в \ hs \ admin, но ссылка на базу данных всегда завершается ошибкой:
ORA-28545: error diagnosed by Net8 when connecting to an agent
Unable to retrieve text of NETWORK/NCR message 65535
ORA-02063: preceding 2 lines from EXTLINK
28545. 0000 - "error diagnosed by Net8 when connecting to an agent"
*Cause: An attempt to call an external procedure or to issue SQL
to a non-Oracle system on a Heterogeneous Services database link
failed at connection initialization. The error diagnosed
by Net8 NCR software is reported separately.
*Action: Refer to the Net8 NCRO error message. If this isn't clear,
check connection administrative setup in tnsnames.ora
and listener.ora for the service associated with the
Heterogeneous Services database link being used, or with
'extproc_connection_data' for an external procedure call.
Vendor code 28545
Файл трассировки не появляется, что заставляет меня задуматьсячто файл инициализации даже не читается. Я могу подключиться к базе данных ODBC с помощью Access, так что я знаю, что это работает. Драйверы ODBC и DG4ODBC являются 64-битными.
Вот что я попробовал до сих пор:
- Я установил HOST в обоих файлах в качестве имени хоста, в качестве IP-адресаи [HOSTNAME]. [DOMAIN] .local, но без изменений.
- Я сделал адрес подключения (PROTOCOL / HOST / PORT) в tnsnames.ora и listener.ora идентичным, но без изменений.
- Я заменил HOST слушателя на случайный мусор, а затем произошел сбой TNSPING, что не происходит иначе.
- Я скопировал tnsnames.ora.sample, initgd4odbc.ora ифайлы listener.ora.sample в hs \ admin и установили тестовое соединение без источника ODBC в конце;но происходит сбой таким же образом, но файл трассировки не создается.
- Я помещаю случайные символы для SID_NAME в listener.ora и SID в CONNECT_DATA в tnsnames.ora и по-прежнему получаю ту же ошибку, с, по-видимому, нетдругое воздействие.
Вот файлы ora. Некоторые имена были изменены, чтобы защитить конфиденциальность, но в остальном нетронуты.
tnsnames.ora:
LISTENER_ORCL =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl.[DOMAINNAME].local)
)
)
EXTLINK=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST = [HOSTNAME])(PORT=1521))
(CONNECT_DATA=(SID=EXTLINK))
(HS=OK)
)
listener.ora:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = C:\app\[MYUSERNAME]\virtual\product\12.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLSONLY:C:\app\[MYUSERNAME]\virtual\product\12.2.0\dbhome_1\bin\oraclr12.dll")
)
(SID_DESC=
(SID_NAME=EXTLINK)
(ORACLE_HOME=C:\app\[MYUSERNAME]\virtual\product\12.2.0\dbhome_1)
(PROGRAM=dg4odbc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = [HOSTNAME])(PORT = 1521))
)
)
CONNECT_TIMEOUT_LISTENER = 0
% ORACLE_HOME \ hs\ admin \ initEXTLINK.ora:
# Windows
HS_FDS_CONNECT_INFO = EXTLINK
HS_FDS_TRACE_LEVEL = 255
HS_FDS_FETCH_ROWS=1
HS_KEEP_REMOTE_COLUMN_SIZE = LOCAL
#HS_NLS_NCHAR=UCS2
HS_LANGUAGE=AMERICAN_AMERICA.WE8ISO8859P1
Строка подключения:
CREATE PUBLIC DATABASE LINK EXTLINK CONNECT TO "Username" IDENTIFIED BY "Pass" USING 'EXTLINK';