Введение в Oracle 10g. Часть 1
Проблема поддержки русского языка и ее решение
racle 10g XE (Express Edition) бесплатная версия СУБД Oracle в составе программного продукта.
Версия XE содержит ряд ограничений:
- поддерживается база данных размером до 4 Гбайт;
- на одном компьютере может быть запущен только один экземпляр базы Oracle XE;
- при наличии на сервере нескольких процессоров Oracle XE использует только один из них;
- Oracle XE использует не более 1 Гбайт независимо от объема доступной оперативной памяти.
Несмотря на данные ограничения, на основе Oracle XE можно создавать приложения для решения широкого круга задач. А если по мере роста базы данных и увеличения количества пользователей Oracle XE перестанет справляться с поставленными задачами или будeт достигнут предельный для Oracle XE размер базы, то превести задачи на одну из платных версий Oracle не составит особого труда.
В настоящее время существуют версии Oracle XE для платформ Linux (Debian, Mandriva, Novell, Red Hat и Ubuntu) и Windows.
Инсталляция
Дистрибутив Oracle 10g XE для Windows состоит из единственного файла OracleXE*.exe, являющегося инсталлятором. Сегодня доступно две разновидности Oracle XE версия для Западной Европы (база данных в кодировке 1252, имя файла дистрибутива OracleXE.exe) и Unicode-версия (соответственно Unicode и OracleXEUniv.exe).
Процесс установки максимально упрощен, но, к сожалению, управление этим процессом практически невозможно. База данных и программный код устанавливаются в одну папку (которую можно задать), затем требуется ввести пароли для пользователей SYS и SYSTEM.
Собственно, на этом все настройки заканчиваются и начинается инсталляция, которая длится две-три минуты. По завершении инсталляции предлагается запустить браузер и перейти на страницу менеджера управления базой данных.
Установка сервера
Характерной особенностью инсталлятора является возможность установки в режиме Silent Install, в котором от пользователя не требуется взаимодействие с инсталлятором. Этот режим установки удобен в случае включения Oracle XE в состав дистрибутива собственного продукта. Реализация Silent Install основана на файлах ответов для установки, восстановления и удаления Oracle XE. Эти файлы можно скачать с сайта Oracle. Запуск инсталлятора с файлом ответов производится при помощи ключей командной строки:
OracleXE.exe /S /f1"<файл ответов>” /f2"<имя файла для протокола инсталляции>”
В настоящее время на сайте Oracle доступно три файла ответов:
- OracleXE-install.iss для установки Oracle. Необходимо отредактировать этот файл:
- в параметре Dir группы «*SdComponentDialog-0» нужно указать путь к папке для установки Oracle XE,
- в параметре SYSPassword группы «*AskSYSPassword-13011» следует указать пароль пользователя SYS (по умолчанию в этом файле задан пароль oraclexe);
- OracleXE-repair.iss восстановление Oracle XE;
- OracleXE-remove.iss удаление Oracle XE вместе с базой данных
Перед установкой следует убедиться, что порты 1521/TCP и 8080/TCP не используются другими приложениями. Порт 1521 по умолчанию используется прослушивающим процессом (listener), а порт 8080 предназначен для Web-интерфейса. Изменить номер портов можно при инсталляции в автоматическом режиме: в файле OracleXE-install.iss необходимо задать специфические значения номеров портов с помощью параметров TNSPort, MTSPort и HTTPPort.
Кроме данных Oracle XE, для бесплатной загрузки доступен Oracle-клиент для Windows, установка которого может производиться в ручном и автоматическом режимах.
Web-интерфейс
правление базой данных предельно просто и осуществляется через Web-интерфейс. Подобный подход облегчает администрирование, особенно в случае дистанционного управления через Интернет.
Web-интерфейс управления базой
В текущей версии Oracle XE Web-интерфейс содержит четыре группы инструментов: Administration, Object Browser, SQL и Utilities.
Administration
Этот набор средств предназначен для администрирования и мониторинга базы:
- Storage просмотр информации о файлах базы данных и табличных пространствах;
- Memory просмотр распределения памяти с возможностью настройки размера областей SGA (System Global Area) и PGA (Process Global Area);
- Database Users инструмент для просмотра списка пользователей базы данных с возможностью простейшего администрирования (создание, удаление, блокировка учетной записи, смена пароля, основные привилегии);
- Monitor мониторинг экземпляра. В частности, можно просматривать список сессий, блокировок и открытых курсоров. Из списка сессий можно вызвать страницу с детализированной информацией по каждой сессии. На странице с детализированной информацией имеется кнопка для принудительного закрытия сессии. Кроме того, предусмотрены дополнительные виды анализа, в том числе поиск наиболее ресурсоемких запросов и операций, выполняемых длительное время;
- About Database просмотр настроек экземпляра.
Object Browser
Данный инструмент является браузером объектов базы данных, позволяющим просматривать существующие объекты в базе и манипулировать ими. Возможности этого средства достаточно широки, причем большинство операций выполняются визуально, а от пользователя не требуется знание языка SQL. Этот инструмент очень удобен для начинающих, так как позволяет визуально создавать объекты всех основных типов.
SQL
Сюда входят средства для выполнения SQL-команд:
- SQL Commands для выполнения произвольных SQL-операторов. По умолчанию у этого инструмента установлен переключатель Autocommit, что приводит к автоматическому выполнению COMMIT после каждой операции. Пользователь может сохранить любую введенную команду, причем при сохранении задается имя и краткое описание. Сохраненные операторы могут быть впоследствии загружены в редактор из закладки «Saved SQL». В случае выполнения запроса отображаются возвращаемые им данные и план выполнения запроса;
- SQL Scripts средство для работы с SQL-скриптами, позволяющее создавать и редактировать SQL-скрипты, сохранять их под заданными именами и выполнять. Результаты выполнения скриптов сохраняются и могут впоследствии быть просмотрены и проанализированы;
- Query Builder визуальный построитель запросов, принцип работы которого является стандартным для утилит подобного типа и напоминает построитель запросов в Microsoft Access. Визуальный построитель позволяет задавать простейшие условия фильтрации и правила сортировки по каждому из полей. После завершения визуального построения запроса можно просмотреть и скопировать полученный текст SQL-запроса или выполнить запрос и просмотреть результирующие данные. Такое визуальное средство может представлять интерес не столько для разработчиков, сколько для постановщиков задач и для специалистов, отвечающих за тестирование и техническую поддержку продукта.
Выполнение запроса к базе
Визуальное построение запроса
Utilities
Utilities содержит различные утилиты для работы с базой данных:
- страница Data Load/Unload инструменты для выгрузки и загрузки данных. Поддерживается работа с текстовыми данными (размещенными в текстовом файле или копируемыми через буфер обмена) и XML-файлами;
- страница Generate DDL инструмент генерации DDL-скриптов для указанных объектов схемы;
- страница Object Reports инструменты для генерации ряда отчетов, необходимых при администрировании и анализе базы данных.
Как можно понять из этого краткого описания, Web-интерфейс содержит все основные средства для начального этапа работы с базой данных. Тестирование этого инструмента показало его устойчивую работу и неплохое быстродействие. Разумеется, разработчикам и администраторам подобного средства будет недостататочно, но для выполнения простейших операций и изучения Oracle оно вполне пригодно.
Управление запуском базы
осле установки Oracle XE в системе появляются новые службы:
- OracleServiceXE экземпляр базы;
- OracleXETNSListener прослушивающий процесс.
Обе службы имеют тип запуска «Auto» и запускаются при старте системы. Если автозапуск Oracle XE нежелателен, то необходимо изменить режим запуска этих служб на «Запускать вручную» и запускать эти службы перед началом работы с базой при помощи командных файлов StartDB.bat и StopDB.bat (эти файлы размещены в папке oraclexe\app\oracle\product\10.2.0\server\BIN\) или при помощи диспетчера служб Windows.
Следует отметить, что на загрузку базы и процесс закрытия оказывают влияние следующие параметры ключа реестра HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\ KEY_XE:
- ORA_XE_AUTOSTART определяет режим автозапуска базы данных после запуска службы OracleServiceXE; по умолчанию этот параметр равен TRUE;
- ORA_XE_SHUTDOWN определяет режим закрытия базы данных при остановке службы OracleServiceXE; по умолчанию он равен TRUE и при завершении службы производится закрытие базы, что эквивалентно команде shutdown < ORA_XE_SHUTDOWNTYPE >;
- ORA_XE_SHUTDOWN_TIMEOUT максимальное время в секундах, отводимое на процесс закрытия базы; по умолчанию 90 с;
- ORA_XE_SHUTDOWNTYPE режим закрытия базы; Допустимы варианты immediate (это значение устанавливается после установки Oracle XE), abort и normal.
Режим закрытия normal является самым корректным, поскольку при закрытии базы в этом режиме блокируется создание новых сессий и происходит ожидание завершения всех текущих. Закрытие реальной базы в данном режиме маловероятно, так как если обнаружится хотя бы одна открытая пользовательская сессия, то это заблокирует закрытие базы.
Режим закрытия immediate является оптимальным: в этом режиме прерываются все текущие операции, производится закрытие всех пользовательских процессов и сессий, а затем производится закрытие базы.
Закрытие в режиме abort самое быстрое и потому самое некорректное, ибо база немедленно закрывается, не ожидая завершения текущих операций.
Таким образом, рекомендуются следующие значения параметров:
- ORA_XE_AUTOSTART = TRUE;
- ORA_XE_ SHUTDOWN = TRUE;
- ORA_XE_ SHUTDOWN=immediate;
- ORA_XE_SHUTDOWN_TIMEOUT= 90.
Эти значения устанавливаются по умолчанию в ходе установки базы, и изменять их не следует.
Проблема поддержки русского языка и ее решение
сли вы установили версию Oracle Database 10g Express Edition (Western European), то после установки базы у вас возникнет проблема с поддержкой русского языка: попытка ввода русскоязычных данных в таблицы будет происходить без ошибок, но символы будут отображаться как «?». Причину этого найти довольно просто при помощи запроса:
SELECT NAME, VALUE$, COMMENT$
FROM SYS.PROPS$
Данный запрос извлекает настройки базы, в том числе языковые настройки (параметр NLS_CHARACTERSET). В базе значение этого параметра WE8MSWIN1252, при этом значение аналогичного параметра в реестре CL8MSWIN1251. Однако существует «шаманский» (иначе такой метод назвать нельзя) прием, сводящийся к запуску скрипта при помощи SQL Plus:
CONNECT SYS/пароль AS SYSDBA;
UPDATE SYS.PROPS$
SET VALUE$ = ‘CL8MSWIN1251’
WHERE NAME = ‘NLS_CHARACTERSET’;
COMMIT;
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER DATABASE OPEN;
ALTER DATABASE XE CHARACTER SET CL8MSWIN1251;
ALTER DATABASE XE NATIONAL CHARACTER SET CL8MSWIN1251;
SHUTDOWN IMMEDIATE;
STARTUP;
Данный скрипт модифицирует значение NLS_CHARACTERSET в таблице PROPS$ (что само по себе является некорректным действием), после чего фиксирует произведенное изменение, останавливает базу в режиме IMMEDIATE и перезапускает ее с включением режима RESTRICTED SESSION (в указанном режиме с базой могут работать только пользователи с привилегией RESTRICTED SESSION; перевод базы в этот режим необходим для выполнения ALTER DATABASE CHARACTER SET). Затем производятся открытие базы данных и модификация ее кодовой страницы, а после чего база перезапускается. После выполнения данного скрипта проблема с поддержкой русского языка исчезает. Важно отметить, что такие манипуляции допустимы только сразу же после установки (пока в базе нет объектов пользователя и данных) и могут производиться лишь на учебной базе. При установке Oracle Database 10g Express Edition (Universal) подобная проблема не должна возникнуть, так как в этом случае база хранит данные в формате Unicode. Однако Unicode-база медленнее работает со строками, а для хранения текстовой информации требуется вдвое больший объем. Данные проблемы возникают исключительно с Oracle XE, так как его старшие братья содержат средства для генерации базы, позволяющие настроить кодировку базы данных при ее создании.
Подготовка к работе
ледующим шагом является создание пользователей. В принципе, можно работать от имени пользователя SYS или SYSTEM, но настоятельно рекомендуем вам использовать данные учетные записи лишь для администрирования базы. По этой причине для дальнейших опытов создадим пользователей TESTER и SCOTT:
CONNECT SYS/пароль AS SYSDBA;
CREATE USER TESTER
IDENTIFIED BY tester
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP;
GRANT SELECT ANY TABLE TO TESTER;
GRANT CONNECT TO TESTER;
GRANT RESOURCE TO TESTER;
ALTER USER TESTER DEFAULT ROLE CONNECT, RESOURCE;
GRANT UNLIMITED TABLESPACE TO TESTER;
CREATE USER SCOTT
IDENTIFIED BY TIGER
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP;
GRANT CONNECT TO SCOTT;
GRANT RESOURCE TO SCOTT;
ALTER USER SCOTT DEFAULT ROLE CONNECT, RESOURCE;
GRANT UNLIMITED TABLESPACE TO SCOTT;
@C:\oraclexe\app\oracle\product\10.2.0\
server\RDBMS\ADMIN\scott.sql
Данный скрипт следует выполнять с помощью утилиты SQL Plus. В случае установки Oracle XE в отличную от C:\oraclexe папку необходимо изменить путь в последней строке скрипта. Пользователь SCOTT с паролем TIGER и принадлежащие ему объекты обычно используются для изучения Oracle, скрипт для создания этих объектов входит в дистрибутив и размещается в файле RDBMS\ADMIN\scott.sql.
Продолжение следует.