OCI & Instant Client SDK и база данных Oracle

Извините за то, что вопрос очень наивный, но то же самое относится и к моему опыту с предметом.

По поиску, что я понял, я просто хочу подтвердить, что понимание верно. Все добро пожаловать в точку, где я не прав.

  1. OCI - это в основном набор API, которые программисты C/C++ могут использовать для написания приложений на C/C++ для доступа к базе данных Oracle.

  2. 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 достаточно?

  3. В чем разница между ПОЛНЫМ клиентом Oracle и клиентом Instant Oracle? Правда ли, что клиент Instant Oracle - это лишь подмножество клиента FULL Oracle?

  4. Я не могу получить матрицу совместимости 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_HOMEPATHLD_LIBRARY_PATH окр. переменные. Вы просто dlopen() один файл библиотеки и все.

  • InstanctClient может работать без tnsnames.ora (хотя это поддерживает) вместо этого вы можете использовать jdbc-like EZCONNECT

  • Оба типа клиентов не могут быть перераспределены, если вы не являетесь бизнес-партнером 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 может быть установлен отдельно для работы с мгновенным клиентом без полного клиента.

Другие вопросы по тегам