Программирование >>  Oracle 

1 ... 289 290 291 [ 292 ] 293 294 295 ... 469


1290

Глава 18

Naming Method) при обработке строки подключения EXTPROC CONNECTION DATA, a

если найти параметры подключения таким образом не удастся, - обратится к серверу Oracle Names Server. Поскольку ни один из этих методов не позволит найти запись EXTPROC CONNECTION DATA, подключение не будет установлено, и вызов extproc завершится неудачно. Просто добавьте в этот список слово TNSNAMES, чтобы сервер

Oracle мог найти запись EXTPROC CONNECTION DATA в локальном файле

TNSNAMES.ORA.

Проверка процесса прослушивания

Проблемы с прослушиванием похожи на проблемы с установкой среды для сервера. При проверке конфигурации процесса прослушивания обратите внимание на следующее:

используется ли соответствующий конфигурационный файл LISTENER.ORA?

правильно ли настроен этот файл?

Снова, как и при проверке среды сервера, необходимо убедиться, что для прослушивания используется соответствующая среда, позволяющая ему найти требуемый файл LISTENER.ORA. Возникают те же проблемы, связанные с поиском конфигурационных файлов в разных местах. В случае сомнений, какой именно набор конфигурационных файлов используется, следует установить соответствующее значение переменной среды TNS ADMIN перед запуском процесса прослушивания. Это гарантирует использование соответствующих конфигурационных файлов. Убедившись, что используются нужн конфигурационные файлы, необходимо проверить содержимое файла LISTENER.ORA в соответствии с представленной ранее информацией.

После этого проверка из среды сервера доступности службы extproc connection data (с добавлением стандартного домена) с помощью программы tnsping должна завершиться успешно. Например, у меня используется стандартный домен us.oracle.com, и проверка доступности дает следующий результат:

C:\oracle\network\ADMIN>tnsping extproc connection data.us.oracle.can

TNS Ping Utility for 32-bit Windows: Version 8.1.6.0.0 - Production on 06-AUG-2 000 09:34:32

(c) Copyright 1997 Oracle Corporation. All rights reserved.

Attempting to contact (ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)) OK (40 msec)

Это подтверждает, что среда сервера базы данных и процесса прослушивания сконфигурирована правильно. Не должно быть никаких сообщений об ошибке ORA-28575: unable to open RPC connection to external procedure agent (ORA-28575: невозможно от-кргть соединение RPC с агентом внешней процедуры).

Первая проверка

Рекомендуется проверить правильность выполнения внешних процедур с помощью демонстрационной программы. Для этого имеются две причины.



Внешние процедуры на языке С 1291

Служба поддержки Oracle поможет настроить/сконфигурировать демонстрационную программу. Если служба поддержки работает со знакомым примером, то сможет решить любые проблемы намного быстрее.

Предлагаемая демонстрационная программа демонстрирует правильный подход к компиляции и компоновке на данной платформе.

Демонстрационная программа находится в каталоге [ORACLE HOME]/plsql/demo

во всех версиях Oracle 8i. Шаги, которые необходимо выполнить для создания демонстрационной программы, описаны в следующих разделах.

Компиляция кода extproc.c

Сначала необходимо скомпилировать код extproc.c в DLL-библиотеку или файл .so/ ,sl/.a. Чтобы сделать это в Windows, достаточно перейти в каталог ORACLE HOME\ plsql\de и набрать make (в этом каталоге корпорация Oracle поставляет файл make.bat):

С: \oracle\plsql\demo>make

Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 10.00.5270 for 80x86 Copyright (C) Microsoft Corp 1984-1995. All rights reserved. extproc.с

Microsoft (R) 32-Bit Incremental Linker Version 3.00.5270 Copyright (c) Microsoft Corp 1992-1995. All rights reserved.

/out:extproc.dll

/dll

/implib:extproc.lib /debug

..\..\oci\lib\msvc\oci.lib msvcrt.lib

/nod:libcmt /DLL

/EXPORT:UpdateSalary

/EXPORT: PercentComn

/EXPORT: PercentComm ByRef

/EXPORT:EmpExp

/EXPORT:CheckEmpName

/EXPORT:LobDemo

extproc.obj

C:\oracle\plsql\demo>

В ОС UNIX делается практически то же самое, но для компиляции необходимо ввести другую команду. Вот как она должна выглядеть:

$ make -f demo plsql.mk extproc.so

/usr/ccs/bin/make -f /export/home/ora816/rdbms/demo/demo rdbms.mk extproo callback SHARED LIBNAME=extproc.so OBJS= extproc.o

После завершения работы команды будет получен файл с расширением .dll в Windows или с расширением .so/.sl/.a в ОС UNIX; расширение зависит от платформы. Например, в ОС Solaris используется расширение .so, а в ОС HP/UX - .si.



1292

Глава 18

Настройка учетной записи SCOTT/TIGER

Чтобы эта демонстрационная программа работала правильно, необходимо создать демонстрационную учетную запись SCOTT/TIGER. Если в базе данных нет учетной записи SCOTT/TIGER, ее можно создать с помощью оператора:

SQL> grant connect, resource to scott identified by tiger;

При этом создается пользователь SCOTT, которому предоставляются привилегии подключения и создания объектов (таблиц, пакетов и т.п.). Имеет смысл задать для этого пользователя другое стандартное табличное пространство вместо SYSTEM, а также явно задать временное табличное пространство.

SQL> alter user scott default tablespace tools temporary tablespace temp;

При наличии учетной записи SCO/TIGER, прежде чем продолжать, необходимо предоставить ей еше одну дополнительную привилегию. Пользователю SCOTT необходима привилегия CREATE LIBRARY. Она позволит ему выполнить оператор CREATE LIBRARY, необходимый для использования внешних процедур. К этому оператору мы еще вернемся. Поскольку привилегия эта - весьма мощная, имеет смысл отобрать ее у пользователя SCOTT после выполнения примера. Для предоставления привилегии необходимо выполнить следующий оператор:

SQL> grant create library to SCOTT;

подключившись как один из пользователей, имеющих привилегию CREATE LIBRARY с опцией ADMIN (например, как пользователь SYSTEM или любой другой пользователь, которому предоставлена роль DBA).

Наконец, необходимо убедиться, что в схеме SCOTT созданы и наполнены данными демонстрационные таблицы EMP/DEPT. Это можно проверить следующим образом:

SQL> select count(* ) from emp;

COUNT(*)

SQL> select count(*) from dept; COUNT(*)

Если эти таблицы не существуют или они не заполнены, их можно пересоздать, выполнив сценарии demodrop.sql (для удаления таблиц) и demobld.sql (для их создания и наполнения данными). Эти сценарии находятся в каталоге [ORACLE HOME]\ sqlplus\demo и должны выполняться в среде SQL*Plus при подключении от имени пользователя SCOTT.

Создание библиотеки demolib

Следующий шаг - создание объекта-библиотеки в базе данных Oracle. Этот объект просто сопоставляет имя библиотеки (любое имя длиной до 30 символов) с физическим



1 ... 289 290 291 [ 292 ] 293 294 295 ... 469

© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика