Подключение к базе данных Oracle из среды IDE NetBeans
В среде IDE NetBeans имеется встроенная поддержка базе данных Oracle. Пользователь может без труда установить подключение к ней из среды IDE и начать работу в базе данных. В данном учебном курсе показано, как использовать локально установленный экземпляр базы данных Oracle 10g Express Edition (Oracle Database XE), упрощенной базы данных, открытой для бесплатных развертывания, распространения и разработки для нее.
В данном документе показано, как настроить подключение к локальному экземпляру базы данных Oracle XE из среды IDE NetBeans, использовать встроенный редактор SQL среды IDE для обработки данных из базы данных и как использовать расширение PHP для OCI 8 для написания кода PHP, обеспечивающего подключение к базе данных Oracle.
Содержание
Для работы с этим учебным курсом требуется следующее программное обеспечение и материалы.
Перед началом работы
Перед началом прохождения данного учебного курса обратите внимание на следующее:
- В данном учебном курсе описано подключение к экземпляру базы данных Oracle XE на локальном компьютере, но те же действия также могут быть применены при подключении к удаленному экземпляру. В случае подключения к локальном экземпляру необходимо загрузить и установить базу данных Oracle XE. Процесс установки прост и интуитивен, но если все же возникнут проблемы, ознакомьтесь с Руководством по установке базы данных Oracle XE для своей платформы.
- Существуют две категории драйверов JDBC Oracle: OCI и JDBC Thin.
- Если вы не использовали базу данных Oracle XE ранее, прочитайте Руководство по началу работы с базой данных Oracle XE.
Предупреждение для пользователей GlassFish. Домашняя страница базы данных Oracle XE, используемая дял администрирования базы данных, использует по умолчанию порт 8080. Oracle GlassFish Application Server также использует по умолчанию 8080. Если запустить обе программы одновременно, база данных Oracle XE заблокирует доступ обозревателей к GlassFish на localhost:8080. В этом случае все приложения, развернутые на GlassFish, будут возвращать ошибку 404. Проще всего отключать базу данных Oracle XE, если она не нужна во время работы с GlassFish. Если нужно использовать обе эти программы одновременно, измените порт по умолчанию, используемый базой данных Oracle XE. Это проще, чем изменить порт GlassFish по умолчанию. В Интернете можно найти много описаний процесса изменения порта базы данных Oracle XE по умолчанию, включая одно на форумах Oracle.
Установка подключения к базе данных Oracle
В этом упражнении мы создадим и протестируем новое подключение к базе данных.
- Запустите базу данных Oracle.
- Откройте окно служб (Window ("Окно") > Services ("Службы") или Ctrl-5;⌘-5 на Mac). В окне служб щелкните правой кнопкой мыши узел Databases ("Базы данных") и выберите New Connection ("Создать подключение").

- В мастере создания подключений выберите Oracle Thin из раскрывающегося списка Driver ("Драйвер").
- Нажмите кнопку Add ("Добавить") и найдите ранее загруженный файл ojdbc6.jar. Нажмите кнопку Next ("Далее").
- На панели Customize Connection ("Настроить подключение") мастера введите следующие значения и нажмите кнопку Next ("Далее").
| Имя драйвера |
Oracle Thin (с идентификатором службы (SID)) |
| Адрес |
localhost или 127.0.0.1.
Примечание. В случае удаленного подключения предоставьте IP-адрес или разрешимое имя узла компьютера, на котором установлена база данных. |
| Порт |
1521 (по умолчанию) |
| Идентификатор службы (SID) |
XE (SID по умолчанию для базы данных Oracle XE).
Примечание. В случае подключения к удаленной базе данных запросите SID у администратора базы данных. |
| Имя пользователя |
Введите имя пользователя.
В целях данного учебного курса введитеsystem (учетная запись по умолчанию администратора базы данных) и пароль, использованный во время установки базы данных. |
| Пароль |
Введите пароль для выбранного имени пользователя. |
- Щелкните Test Connection ("Проверить подключение"), чтобы убедиться в наличии у среды IDE возможности подключиться к базе данных. Нажмите кнопку Next ("Далее").
Если попытка будет успешна, в мастере отобразиться сообщение Connection succeeded ("Подключение успешно").

- Выберите HR в раскрывающемся списке Select Schema ("Выбор схемы"). Нажмите кнопку Finish ("Готово").
Примечание. Схему HR необходимо разблокировать перед доступом к ней в NetBeans. Разблокирование базы данных HR описано в Руководстве по началу работы с базой данных Oracle XE.
Новое подключение появится в узле Databases ("Базы данных") окна Services ("Службы"). Его можно будет развернуть и приступить к просмотру структуры объекта базы данных.
Измените отображаемое имя для узла подключения: выберите Properties ("Свойства") из всплывающего меню узла и нажмите кнопку многоточия, чтобы вывести свойство Display Name ("Отображаемое имя"). Введите OracleDB в качестве отображаемого имени и нажмите кнопку OK.
Примечание. Хотя приведенные выше действия описывают подключение к локальному экземпляру базы данных, действия по подключению к удаленной базе данных идентичны. Единственное отличие состоит в том, что вместо указания localhost как имени узла следует ввести IP-адрес или имя узла удаленного компьютера, на котором установлена база данных Oracle.
Управление данными в базе данных Oracle
Обычными способами взаимодействия с базами данных является выполнение команд SQL в редакторе SQL или использование интерфейсов управления базами данных. Например, у базы данных Oracle XE имеется интерфейс на основе обозревателя, посредством которого можно осуществлять администрирование базы данных, управлять объектами базы данных и манипулировать данными.
Хотя большинство задач, касающихся баз данных, можно выполнять через интерфейс управления базы данных Oracle, в данном руководстве мы покажем, как можно использовать редактор SQL в среде IDE NetBeans для выполнения некоторых из этих задач. В приведенных ниже упражнениях показано, как создавать новых пользователей, быстро воссоздавать таблицы и копировать данные таблиц.
Создание пользователя
Давайте создадим новую учетную запись пользователя базы данных для управления таблицами и данными в базе данных. Чтобы создать нового пользователя, необходимо войти в систему, используя учетную запись администратора базы данных, в нашем случае учетную запись по умолчанию system, созданную при установке базы данных.
- В окне Services ("Службы") щелкните правой кнопкой мыши узел подключения OracleDB и выберите Execute Command ("Исполнить команду"). Откроется редактор SQL среды IDE NetBeans, в котором можно вводить команды SQL для отправки базе данных.

- Чтобы создать нового пользователя, введите приведенную ниже команду в окне редактора SQL и нажмите кнопку Run SQL ("Выполнить SQL") на панели инструментов.

create user jim
identified by mypassword
default tablespace users
temporary tablespace temp
quota unlimited on users;
В результате выполнения данной команды будет создан новый пользователь jim с паролем mypassword. Табличным пространством по умолчанию является users, а выделенное пространство не ограничено.
- Следующий этап – предоставить jim права учетной записи пользователя на выполнение действий с базой данных. Необходимо разрешить пользователю подключаться к базе данных, создавать и изменять таблицы в табличном пространстве пользователя по умолчанию и выполнять доступ к таблице Employees в примере базы данных hr.
На практике администратор базы данных обычно создает особые роли и аккуратно настраивает полномочия для каждой из них. Но в целях нашего учебного курса мы можем использовать заранее определенную роль, такую как CONNECT. Дополнительные сведения о ролях и полномочиях приведены в документе Oracle Database Security Guide ("Руководство по безопасности базы данных Oracle").
grant connect to jim;
grant create table to jim;
grant select on hr.departments to jim;
Табличные пространства в базах данных Oracle
Табличное пространство – это блок логической памяти во всех базах данных Oracle. На самом деле, все данные баз данных хранятся в табличных пространствах. Таблицы создаются внутри выделенных табличных пространств. Если табличное пространство по умолчанию не выделяется пользователю напрямую, то, по умолчанию, используется табличное пространство системы (этой ситуации лучше избегать).
Дополнительные сведения по понятию табличного пространства приведены в документе Oracle FAQ: Tablespace ("Часто задаваемые вопросы об Oracle: табличное пространство")
Создание таблицы
Существует несколько способов создать таблицу в базе данных при помощи среды IDE NetBeans. Например, можно выполнить файл SQL (щелкните файл правой кнопкой мыши и выберите Run File ("Выполнить файл")), исполнить команду SQL (Щелкните правой кнопкой мыши узел подключения и выберите Execute Command ("Исполнить команду")), либо использовать диалоговое окно создания таблицы (щелкните правой кнопкой мыши узел Tables ("Таблицы") и выберите Create Table ("Создать таблицу")). В этом упражнении мы воссоздадим таблицу, используя структуру другой таблицы.
В данном примере нам нужно, чтобы пользователь jim создал копию таблицы Departments в своей схеме, воссоздав таблицу из базы данных hr. Перед созданием таблицы будет необходимо отключиться от сервера и войти в систему как пользователь jim.
- Щелкните правой кнопкой мыши узел подключения OracleDB в окне Services ("Службы") и выберите Disconnect ("Отключить").
- Щелкните правой кнопкой мыши узел подключения OracleDB, выберите Connect ("Подключить") и войдите как jim.
- Разверните узел Tables ("Таблицы") под схемой HR и убедитесь, что только таблица Departments доступна пользователю jim.
При создании пользователя jim право выполнения выбора было ограничено таблицей Departments.

- Щелкните правой кнопкой мыши узел таблицы Departments и выберите Grab Structure ("Копировать структуру"). Сохраните файл .grab у себя на диске.
- Разверните схему JIM, щелкните правой кнопкой мыши узел Tables ("Таблицы") и выберите Recreate Table ("Воссоздать таблицу").
Укажите на созданный файл .grab.

- Проверьте сценарий SQL, который будет использован для создания данной таблицы. Нажмите кнопку "ОК".

При нажатии кнопки "ОК" новая таблица DEPARTMENTS будет создана и появится под узлом схемы JIM. Если щелкнуть правой кнопкой мыши узел таблицы и выбрать View Data ("Просмотр данных"), то можно будет увидеть, что таблица пуста.
Если нужно скопировать данные из исходной таблицы Departments в новую таблицу, данные можно ввести вручную в редактор таблиц, либо выполнить сценарий SQL для заполнения новой таблицы.
Для ввода данных вручную выполните следующие действия.
- Щелкните правой кнопкой мыши таблицу DEPARTMENTS в схеме JIM и выберите View Data ("Просмотр данных").
- Щелкните значок Insert Records ("Вставить записи") на панели инструментов View Data ("Просмотр данных"), чтобы открыть окно вставления записей.

- Введите данные в поля для них. Нажмите кнопку "ОК".
Например, можно ввести следующие значения из исходной таблицы DEPARTMENTS.
| DEPARTMENT_ID |
10 |
| DEPARTMENT_NAME |
Administration |
| MANAGER_ID |
200 |
| LOCATION_ID |
1700 |
Для заполнения страницы с помощью сценария SQL выполните следующие действия.
- Щелкните правой кнопкой мыши таблицу DEPARTMENTS в схеме JIM и выберите Execute Command ("Исполнить команду").
- Введите сценарий на вкладке команд SQL. Нажмите кнопку Run ("Выполнить") на панели инструментов.
Следующий сценарий заполнит первую строку новой таблицы данными из исходной таблицы.
INSERT INTO JIM.DEPARTMENTS (DEPARTMENT_ID, DEPARTMENT_NAME, MANAGER_ID, LOCATION_ID) VALUES (10, 'Administration', 200, 1700);
Извлечь этот сценарий SQL для заполнения таблицы из исходной таблицы можно посредством следующих действий.
- Щелкните правой кнопкой мыши таблицу DEPARTMENTS в схеме HR и выберите View Data ("Просмотр данных").
- Выберите все строки в окне просмотра данных и выберите Show SQL Script for INSERT ("Показать сценарий SQL для INSERT") из всплывающего меню, чтобы открыть диалоговое окно показа SQL, содержащее сценарий.
После этого сценарий можно скопировать и модифицировать, насколько это необходимо, для вставки данных в новую таблицу.
См. раздел советов для получения дополнительных сведений о работе с редактором SQL.
Работа с данными в таблице
Для работы с данными в таблице можно воспользоваться редактором SQL в среде IDE NetBeans. Выполняя запросы SQL, можно добавлять, изменять и удалять данные, находящиеся в структурах таблицы.
В первую очередь создайте вторую таблицу под названием Locations в схеме jim (оставайтесь в системе как пользователь jim). На этот раз мы просто выполним готовый к использованию файл SQL в среде IDE:
- Загрузите и сохраните файл locations.sql в каталог USER_HOME на своем компьютере.
- Откройте окно Favorites ("Избранное") среды IDE и найдите файл locations.sql.
Чтобы открыть окно избранного, выберите Window ("Окно") > Favorites ("Избранное") в главном меню (нажмите Ctrl-3). Каталог USER_HOME приводится в окне избранного по умолчанию.
- Щелкните файл locations.sql правой кнопкой мыши и выберите Run File ("Запустить файл").
Примечание. Если в среде IDE зарегистрировано более одного подключения к базам данных, среда IDE может предложить выбрать правильное подключение.
- В окне Services ("Службы") щелкните правой кнопкой мыши узел Tables ("Таблицы") и выберите Refresh ("Обновить") во всплывающем меню.
Можно будет увидеть, что таблица Locations с данными была добавлена к схеме JIM.

- Щелкните правой кнопкой мыши узел таблицы Locations и выберите View Data ("Просмотр данных") для просмотра содержимого таблицы. Можно будет увидеть содержимое таблицы Locations.
В этом окне просмотра можно напрямую вставлять новые записи и изменять существующие данные.

- Далее мы выполним запрос для просмотра информации из двух таблиц Departments и Locations.
В этом случае мы используем простое "естественное слияние", поскольку столбец "location_id" обеих таблиц одинаков и содержит значения одного типа данных. Этот тип слияния выбирает только строки, имеющие одинаковые значения в соответствующем столбце location_id.
Откройте окно команд SQL (щелкните правой кнопкой мыши узел Tables ("Таблицы") в схеме JIM и выберите Execute Command ("Исполнить команду")), введите приведенный ниже оператор SQL и щелкните значок Run SQL ("Выполнить SQL").
SELECT DEPARTMENT_NAME, MANAGER_ID, LOCATION_ID, STREET_ADDRESS, POSTAL_CODE, CITY, STATE_PROVINCE
FROM departments NATURAL JOIN locations
ORDER by DEPARTMENT_NAME;
Данный запрос SQL возвращает строки из таблицы Departments, location_id которых равен значениям в соответствующем столбце таблицы Locations. Результаты упорядочены по именам в таблице Departments. Обратите внимание, что новые записи нельзя вставлять напрямую в результаты данного запроса, как это можно делать в представлении одной таблицы.

Запрос слияния SQL можно сохранить как представление (щелкните правой кнопкой мыши узел View ("Представление") и выберите Create View ("Создать представление") и без проблем запускать его по мере надобности. Но для этого пользователь базы данных должен иметь право на создание представлений, которого нет у созданного в нашем примере пользователя. Можно войти в систему, используя системную учетную запись , предоставить jim право на создание представлений (с помощью следующего оператора SQL: "grant create view to jim;") и попробовать создать собственное представление.
Советы по работе с редактором SQL среды IDE NetBeans
Работая с этим учебным курсом, мы уже воспользовались возможностями редактора SQL среды IDE NetBeans. Стоит перечислить несколько других возможностей редактора SQL среды IDE NetBeans, которые могут оказаться полезны.
- Представление графического интерфейса таблиц баз данных. При щелчке правой кнопкой мыши узла таблицы в окне Services ("Службы") и выбора View Data ("Просмотр данных") среда IDE отобразит визуальное представление таблицы и ее данных (как показано на рисунке выше). Данные таблицы также можно добавлять, изменять и удалять прямо в этом представлении.
- Для добавления записи щелкните значок добавления записей
и вставьте новые данные в открывшееся окно добавления записей. Нажмите кнопку Show SQL ("Показать SQL"), чтобы просмотреть код SQL для данной операции. Таблица будет автоматически обновлена со включением новых записей.
- Чтобы изменить запись, дважды щелкните внутри любой ячейки в представлении графического интерфейса таблицы и введите новое значение. Пока изменение не зафиксировано, измененный текст выделяется зеленым цветом. Для фиксации изменений щелкните значок фиксации изменений
. Для отмены изменений щелкните значок отмены изменений
.
- Для удаления строки выберите ее и щелкните значок удаления выбранных записей
.
- Сохранение предыдущих вкладок Щелкните значок сохранения предыдущих вкладок
на панели инструментов редактора SQL, чтобы оставить открытыми окна с результатами предыдущих запросов. Это может быть полезно, если необходимо сравнить результаты нескольких запросов.
- Журнал SQL (Ctrl-Alt-Shift-H). Используйте значок журнала SQL
на панели инструментов редактора SQL для просмотра всех операторов SQL, выполненных для каждого из подключений баз данных. Выберите подключение из раскрывающегося списка, найдите необходимый оператор SQL и щелкните Insert ("Вставить") для помещения оператора в окно команд SQL.
- Список подключений. При наличии нескольких подключений к базам данных и необходимости быстро переключаться между ними в редакторе SQL используйте раскрывающийся список Connections ("Подключения").
- Выполнение операторов SQL. Чтобы выполнить весь оператор, находящийся сейчас в окне команд SQL, щелкните значок выполнения SQL
. Если выполнить следует только часть оператора SQL, выберите эту часть в окне команд SQL, щелкните правой кнопкой мыши выбранное и выберите Run Selection ("Выполнить выбранное"). В данном случае будет выполнена только выбранная часть.
OCI 8 и среда IDE NetBeans для PHP
Расширение PHP OCI 8 и среду IDE NetBeans для PHP можно использовать для написания кода PHP, поддерживающего связь с базой данных Oracle. Чтобы использовать среду IDE NetBeans для PHP и базу данных Oracle, выполните следующие действия.
- Настройте среду PHP, как описано в разделе "Настройка среды для разработки на языке PHP" Учебной карты по PHP. Обратите внимание, что среда IDE NetBeans поддерживает только PHP 5.2 или 5.3.
- Откройте свой файл php.ini в редакторе. Убедитесь, что свойство extension_dir настроено на каталог расширений PHP. Обычно этим каталогом является PHP_HOME/ext. Например, если PHP 5.2.9 установлен в корневой каталог C:, настройкой extension_dir должно быть extension_dir="C:\php-5.2.9\ext".
- Найдите строку extension=php_oci8_11g.dll (для Oracle 11g) или extension=php_oci8.dll (для Oracle 10.2 или XE) и снимите с нее комментарий. В каждый конкретный момент времени может быть включено лишь одно из этих расширений.
Важно! Если в php.ini нет такой строки, поищите в папке расширений файл расширения OCI 8. В случае отсутствия файла расширения OCI 8 в папке расширений информацию о загрузке и установке OCI 8 можно найти в документе Installing PHP and the Oracle Instant Client for Linux and Windows ("Установка PHP и Oracle Instant Client для Linux и Windows").
- Перезапустите Apache. (Пользователям Windows следует перезагрузить компьютер).
- Выполните phpinfo(). Если OCI 8 успешно включен, раздел OCI 8 появится в выводе phpinfo().
Дополнительные сведения о включении OCI 8 и, в особенности, об использовании OCI 8 с удаленным сервером Oracle DB приведены в документе Installing PHP and the Oracle Instant Client for Linux and Windows ("Установка PHP и Oracle Instant Client для Linux и Windows").
Когда OCI 8 включен, среда IDE NetBeans для PHP обращается к этому расширению в целях автозавершения и отладки кода.

Использование драйвера JDBC OCI со средой IDE NetBeans
Пакеты драйверов OCI доступны в том же файле JAR, что и драйвер JDBC Thin (ojdbc6.jar). Выбор драйвера, который следует использовать, зависит от интерфейса: oracle.jdbc.OracleDriver для драйвера Thin и oracle.jdbc.driver.OracleDriver для драйвера OCI. Чтобы использовать драйвер OCI, необходимо также установить Oracle Database Instant Client, поскольку он содержит все библиотеки, необходимые драйверу OCI для связи с базой данных.
Чтобы подключиться к базе данных Oracle Database из среды IDE NetBeans, используя драйвер OCI Oracle:
- Загрузите "Базовый" пакет Oracle Database Instant Client для своей платформы. Выполните инструкции по установке на данной странице.
- В окне Services ("Службы") среды IDE щелкните правой кнопкой мыши узел Databases ("Базы данных") и выберите New Connection ("Создать подключение").
- В действии Locate Driver ("Обнаружение драйвера") выберите OCI Oracle, нажмите кнопку Add ("Добавить") и укажите файл ojdbc6.jar.
- В диалоговом окне Customize Connection ("Настроить подключение") предоставьте сведения о подключении: IP-адрес, порт, SID, имя пользователя и пароль.
Обратите внимание, что URL-адреса JDBC для драйверов OCI и Thin различаются.

Устранение неполадок
В приведенных ниже советах по устранению неполадок описаны лишь некоторые из встреченных исключений. Если на ваш вопрос нет ответа здесь, выполните поиск самостоятельно или используйте ссылку "Мы ждем ваших отзывов" для предоставления конструктивных отзывов.
-
Встречена ошибка следующего типа:
Закрытие v3 в результате ошибки при запуске: нет свободного порта в диапазоне::
>> 8080=com.sun.enterprise.v3.services.impl.monitor.MonitorableSelectorHandler@7dedad
Это вызвано тем, что как сервер приложений GlassFish, так и Oracle Database используют порт 8080. Если нужно использовать оба приложения одновременно, следует изменить этот порт по умолчанию для одного из них. Чтобы сбросить порт базы данных Oracle по умолчанию, можно использовать следующую команду:
CONNECT SYSTEM/password
EXEC DBMS_XDB.SETHTTPPORT(<новый номер порта>);
- Получена следующая ошибка:
Прослушивающий процесс отклонил подключение со следующей ошибкой: ORA-12505, TNS:прослушивающему процессу не известен SID, заданный в дескрипторе подключения.
Это происходит, когда идентификатор службы (SID) экземпляра базы данных, переданный дескриптором подключения, неизвестен прослушивающему процессу. Такое исключение может быть вызвано рядом причин. Например, база данных Oracle может не работать (простейший случай). Либо SID может быть неверен или неизвестен прослушивателю. Если использовать SID по умолчанию (например, SID по умолчанию для базы данных Oracle Express Edition – XE), эта проблема маловероятна. SID входит в части CONNECT DATA файла tnsnames.ora (на компьютере Windows этот файл расположен по адресу %ORACLE_HOME%\network\admin\tnsnames.ora).
- Получена следующая ошибка:
ORA-12705: Доступ к файлам данных NLS невозможен или задана неверная среда.
Как правило, это означает, что переменная среды NLS_LANG содержит недопустимое значение языка, территории или набора символов. Если это так, недопустимые настройки NLS_LANG следует отключить на уровне операционной системы. В случае Windows, переименуйте подключ NLS_LANG в реестре Windows, расположенный в \HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE. В случае Linux/Unix, выполните команду "unset NLS_LANG".
Дополнительные сведения
Более подробные сведения об администрировании и использовании базы данных Oracle доступны в соответствующей документации по Oracle. Далее приведен краткий список наиболее часто используемой документации.
Сведения о работе с другими базами данных в среде IDE NetBeans приведены в следующих учебных курсах.