OCI & Instant Client SDK и база данных Oracle
Извините за то, что вопрос очень наивный, но то же самое относится и к моему опыту с предметом.
По поиску, что я понял, я просто хочу подтвердить, что понимание верно. Все добро пожаловать в точку, где я не прав.
OCI - это в основном набор API, которые программисты C/C++ могут использовать для написания приложений на C/C++ для доступа к базе данных Oracle.
a) Oracle Instant Client SDK - это (DLL/ общая библиотека), которая использует OCI (???). Код C/C++, написанный программистами C/C++, ссылается на клиентские библиотеки Oracle и, следовательно, также использует OCI. б) Преимущество мгновенного клиента в том, что он облегчает программистам задачу написания сложного кода (??). c) Даже если программист C/C++ не использует библиотеки Instant Client, они все равно могут использовать OCI и выполнять работу (это правильно?)
г) это правда? Программистам C/C++ просто нужна библиотека OCI, чтобы написать приложение, которое подключается к базе данных Remote Oracle и выполняет ли табличные операции? Нужен ли нам ODBC?
драйверы тоже? Если да, то почему? Не будет ли oci.lib достаточно?В чем разница между ПОЛНЫМ клиентом Oracle и клиентом Instant Oracle? Правда ли, что клиент Instant Oracle - это лишь подмножество клиента FULL Oracle?
Я не могу получить матрицу совместимости Instant Client с различными базами данных Oracle. Много искал на сайте Oracle. Единственное, что я смог найти, - это ссылка на сайт поддержки Oracle, к которому у меня нет доступа.
Пожалуйста, проясните мои сомнения. Спасибо заранее.
2 ответа
Кратко:
OCI - это библиотека C API. Существует также библиотека C++ под названием OCCI, но я не рекомендую ее (у вас могут быть проблемы с изменениями / диалектами C++ ABI на различных компиляторах)
Клиент Instant и "толстый" Oracle содержит библиотеку OCI (
OCI.DLL
или жеlinclntsh.so
). Тот, который предоставляется клиентом Instant, более или менее самодостаточен. например, это не зависит от других библиотек, предоставляемых клиентом Oracle (сравните вывод изldd
в Linux илиdepwalk
на винде).Оба также содержат необходимые заголовки
C API в обоих клиентах практически идентичен. Единственное исключение, которое я помню, это набор поддерживаемых наборов собственных символов базы данных. InstantClient поддерживает только
UTF8
,ISO Latin1
а такжеASCII
,"толстый" клиент также содержит библиотеку с именем "libxml.a", которая необходима, когда вы хотите использовать тип данных
SYS.XMLTYPE
, Эта библиотека (по неизвестной причине) не входит в комплект InstantClient"толстый" клиент также содержит несколько удобных диагностических инструментов, таких как
tnsping
InstantClient очень прост в настройке. Пользователи просто распаковывают один файл.zip. Не нужно устанавливать
ORACLE_HOME
PATH
LD_LIBRARY_PATH
окр. переменные. Вы просто dlopen() один файл библиотеки и все.InstanctClient может работать без
tnsnames.ora
(хотя это поддерживает) вместо этого вы можете использовать jdbc-likeEZCONNECT
Оба типа клиентов не могут быть перераспределены, если вы не являетесь бизнес-партнером Oracle. Таким образом, вы не должны вставлять библиотеку этих драйверов в ваше приложение. Каждый пользователь должен скачать затем отдельно.
До сих пор я не нашел способ C API, как отличить библиотеку InstantClient OCI.DLL.
В Руководстве для программиста по интерфейсу Oracle Call есть специальный раздел InstantClient
Я помню, что могут быть некоторые проблемы с InstantClient, когда вы установите
ORACLE_HOME
окр. переменная и ее значения заканчиваются (? или не заканчивается?) косой чертой'/'
Oracle Instant Client - это небольшая часть полного /"толстого" клиента. Он включает в себя C-библиотеки OCI, JDBC и ODBC, что позволяет программам, написанным на C, Perl, Python, Java, Scala и т. Д., Подключаться к серверу базы данных Oracle. Мгновенный клиент не включает в себя знакомые инструменты Oracle, такие как sqlplus, sqlldr, exp, imp и другие. Тем не менее, sqlplus может быть установлен отдельно для работы с мгновенным клиентом без полного клиента.