Данная статья написана отнюдь не специалистом по базам данных Oracle и не специалистом по Microsoft Windows, поэтому глубоких изысканий и теории не будет. Также, решение описанное в этой статье может быть в чём-то не верным. А по сути оно — шаманство. Но я смог успешно установить Oracle 10g XE на Windows 7 x64.
Цель этой статьи — помочь тем, кто столкнулся с установкой Oracle 10g Express (XE) на Windows 7 x64 и не может понять, почему у него не получается установить. Проблема заключается в том, что вроде бы база устанавливается — инсталлятор не выдаёт никаких ошибок, сервисы создаются и запускаются, но файлы базы не инициализируется, и, естественно, после установки сервер БД просто не работает. Гугл и другие поисковики выдают несколько ссылок по этой проблеме, но ни одного полноценного решения я не нашёл, поэтому пришлось самому докапываться до истины.
В статье я приведу несколько действий или правил, которые помогли мне справиться с проблемной установкой. Не могу сказать, всё ли верно и применимо, однако, эти действия позволили мне установить сервер базы данных Oracle 10g XE и клиент Oracle 10g XE Client на несколько машин с Windows 7 x64. Думаю, эти же действия помогут и при установке на Windows Server 2008.
Зачем это всё понадобилось? От субподрядчика, разработавшего программный комплекс, который мы поддерживаем, осталась зависимость от базы данных Oracle. С субподрядчиком мы уже давно благополучно разошлись, но зависимость осталась, после чего мы дописали несколько важных подсистем, которые тоже требуют наличия этой СУБД. Клиентам наиболее полезна именно Express (XE) версия — она бесплатна и вполне устраивает их даже со своими ограничениями. А Express версия существует только версии 10g.
Клиенты уже думают о переходе на Windows 7 (или для серверов Windows Server 2008), а некоторые уже перешли, так что придётся выкручиваться.
Перечислю два правила, полученных танцами с бубном вокруг неработающего сервера БД:
Первое. Oracle 10g XE отказывается устанавливаться под доменным пользователем, даже если он состоит в группе Администраторы. При этом если запускать установку, запуская инсталлятор от имени локального администратора, то опять таки база будет установлена криво. Чем это обусловлено — абсолютно не ясно. Решение таково — зайти в систему под локальным администратором и выполнять установку от его имени. Такое решение пришло после того, как на одинаковых операционных системах на одной СУБД не установилась. Разница была в том, что одна из машин была в домене, а другая — нет. Если кто знает почему так просходит — прошу просветить.
Второе. Oracle Database требует ряд системных переменных среды при работе у установке, но инсталлятор их не будет создавать (однако Path поправит), поэтому их надо предварительно добавить вручную (Компьютер — Свойства — Дополнительные параметры системы — Дополнительно — Переменные среды… — Системные переменные — Создать...) или же BAT-сценарием. Какие конкретно переменные нужно создать, я ниже напишу. Все ли обязательны, я не берусь сказать — по идее те, которые не будут заданы, будут иметь значение по умолчанию.
Начнём.
0. Заходим в систему под именем локального администратора. Скачаем куда-либо, допустим, себе на рабочий стол инсталлятор БД — OracleXEUniv.exe.
1. Добавим ряд системных переменных. Можно создать и вручную, но я предлагаю добавлять командой setx с ключём -m (или /m), который позволит добавить системную переменную среды, а не пользовательскую, которая добавилась бы без этого ключа. Синтаксис команды такой: setx /m Переменная Значение.
Переменные нам нужны следующие: имена сервиса, пути к базе и утилитам, путь к настройкам в реестре и прочее. Если вы будете устанавливать БД по другим путям, то поправьте переменные. Самый простой вариант добавления всех параметров — написать небольшой BAT сценарий следующего содержания:
Сохраняем этот сценарий с расширением .bat и явно запустим с правами администратора (правой кнопкой мыши — Запуск от имени администратора). После каждой строки сценария должна быть запись «Успешно».
Теперь надо проверить, все ли переменные добавились так, как мы хотели. Проходим длинный путь Компьютер — Свойства — Дополнительные параметры системы — Дополнительно — Переменные среды… и смотрим Системные переменные. Всё хорошо? Если да, то приступаем к установке.
2. Запускаем инсталлятор. Установка вполне тривиальна — в отличие от 10g Standart и выше, тут используется инсталлятор InstallShield, который уж совсем прост. Путь установки указываем тот, который мы указали в переменной ORACLE_BASE, то есть по умолчанию это будет C:\oraclexe. После установки переходим в браузере на 127.0.0.1:8080/apex/ и пытаемся зайти под логином SYS и паролем, которым мы указали при инсталляции.
У меня всё заработало. И у вас должно. Далее создаём пользователя БД, накатываем скрипты, импортируем схему, и так далее. Единственное, надо будет разрешить TCP соединение порт 1521 в системном или стороннем брандмауэре.
А теперь на клиентские машины надо установить клиент БД Oracle. Приступим.
Шаги тут будут схожи, за исключением некоторых нюансов.
0. Опять же, заходим в систему под именем локального администратора. Положим поближе инсталлятор клиента БД — OracleXEClient.exe.
1. Добавим ряд системных переменных. BAT-сценарий для их добавления будет такой:
Сохраняем сценарий .bat и запускаем с правами администратора.
2. Запускаем инсталлятор клиента в режиме совместимости с Windows Vista — иначе у меня не получилось. Установка совсем проста — надо указать лишь путь.
После установки надо как-то проверить, всё ли получилось. Запускаем в консоли (cmd) sqlplus и попытаемся законнектится к базе. Тут хочу сказать, что sqlplus по какой-то причине достаточно часто крашится. Но уж если запустился, то работает честно.
Далее ставим наш софт и проверяем, всё ли работает. Опять же, у меня заработало и успешно работает.
Вот такими не совсем внятными действиями мы добились успешной работы Oracle 10g XE Database и ПО, который требует Oracle 10g XE Client. На нахождение верного пути я убил достаточно много нервов и времени, поэтому, надеюсь, для кого-то эта статья окажется весьма полезной.
Жду справедливой критики.
Цель этой статьи — помочь тем, кто столкнулся с установкой Oracle 10g Express (XE) на Windows 7 x64 и не может понять, почему у него не получается установить. Проблема заключается в том, что вроде бы база устанавливается — инсталлятор не выдаёт никаких ошибок, сервисы создаются и запускаются, но файлы базы не инициализируется, и, естественно, после установки сервер БД просто не работает. Гугл и другие поисковики выдают несколько ссылок по этой проблеме, но ни одного полноценного решения я не нашёл, поэтому пришлось самому докапываться до истины.
В статье я приведу несколько действий или правил, которые помогли мне справиться с проблемной установкой. Не могу сказать, всё ли верно и применимо, однако, эти действия позволили мне установить сервер базы данных Oracle 10g XE и клиент Oracle 10g XE Client на несколько машин с Windows 7 x64. Думаю, эти же действия помогут и при установке на Windows Server 2008.
Предисловие
Зачем это всё понадобилось? От субподрядчика, разработавшего программный комплекс, который мы поддерживаем, осталась зависимость от базы данных Oracle. С субподрядчиком мы уже давно благополучно разошлись, но зависимость осталась, после чего мы дописали несколько важных подсистем, которые тоже требуют наличия этой СУБД. Клиентам наиболее полезна именно Express (XE) версия — она бесплатна и вполне устраивает их даже со своими ограничениями. А Express версия существует только версии 10g.
Клиенты уже думают о переходе на Windows 7 (или для серверов Windows Server 2008), а некоторые уже перешли, так что придётся выкручиваться.
Общие шаги
Перечислю два правила, полученных танцами с бубном вокруг неработающего сервера БД:
Первое. Oracle 10g XE отказывается устанавливаться под доменным пользователем, даже если он состоит в группе Администраторы. При этом если запускать установку, запуская инсталлятор от имени локального администратора, то опять таки база будет установлена криво. Чем это обусловлено — абсолютно не ясно. Решение таково — зайти в систему под локальным администратором и выполнять установку от его имени. Такое решение пришло после того, как на одинаковых операционных системах на одной СУБД не установилась. Разница была в том, что одна из машин была в домене, а другая — нет. Если кто знает почему так просходит — прошу просветить.
Второе. Oracle Database требует ряд системных переменных среды при работе у установке, но инсталлятор их не будет создавать (однако Path поправит), поэтому их надо предварительно добавить вручную (Компьютер — Свойства — Дополнительные параметры системы — Дополнительно — Переменные среды… — Системные переменные — Создать...) или же BAT-сценарием. Какие конкретно переменные нужно создать, я ниже напишу. Все ли обязательны, я не берусь сказать — по идее те, которые не будут заданы, будут иметь значение по умолчанию.
Установка сервера Oracle 10g XE Database
Начнём.
0. Заходим в систему под именем локального администратора. Скачаем куда-либо, допустим, себе на рабочий стол инсталлятор БД — OracleXEUniv.exe.
1. Добавим ряд системных переменных. Можно создать и вручную, но я предлагаю добавлять командой setx с ключём -m (или /m), который позволит добавить системную переменную среды, а не пользовательскую, которая добавилась бы без этого ключа. Синтаксис команды такой: setx /m Переменная Значение.
Переменные нам нужны следующие: имена сервиса, пути к базе и утилитам, путь к настройкам в реестре и прочее. Если вы будете устанавливать БД по другим путям, то поправьте переменные. Самый простой вариант добавления всех параметров — написать небольшой BAT сценарий следующего содержания:
rem Имя сервиса
setx /m ORACLE_HOME_NAME XE
rem Корневой путь установки базы
setx /m ORACLE_BASE "C:\oraclexe"
rem Путь в реестре. Для x86 системы было бы "SOFTWARE\ORACLE\KEY_XE"
setx /m ORACLE_HOME_KEY "SOFTWARE\Wow6432Node\ORACLE\KEY_XE"
rem Имя сервиса
setx /m ORACLE_SID XE
rem Путь к бинарникам и настройкам
setx /m ORACLE_HOME "C:\oraclexe\app\oracle\product\10.2.0\server"
rem Путь, куда будет писать Oracle MTS. Остальные параметры ORAMTS - по умолчанию
setx /m ORAMTS_CP_TRACE_DIR "C:\oraclexe\app\oracle\product\10.2.0\server\oramts\trace"
rem Далее идут языковые параметры, они не столь важны, но могут быть полезны
setx /m NLS_NUMERIC_CHARACTER ". "
setx /m NLS_DATE_FORMAT "dd.mm.yyyy"
rem Сообщения от базы в консоли будут писаться не крякозябликами или знаками вопроса, а нормально - по-английски
setx /m NLS_LANG "AMERICAN_AMERICA.CL8MSWIN1251"
Сохраняем этот сценарий с расширением .bat и явно запустим с правами администратора (правой кнопкой мыши — Запуск от имени администратора). После каждой строки сценария должна быть запись «Успешно».
Теперь надо проверить, все ли переменные добавились так, как мы хотели. Проходим длинный путь Компьютер — Свойства — Дополнительные параметры системы — Дополнительно — Переменные среды… и смотрим Системные переменные. Всё хорошо? Если да, то приступаем к установке.
2. Запускаем инсталлятор. Установка вполне тривиальна — в отличие от 10g Standart и выше, тут используется инсталлятор InstallShield, который уж совсем прост. Путь установки указываем тот, который мы указали в переменной ORACLE_BASE, то есть по умолчанию это будет C:\oraclexe. После установки переходим в браузере на 127.0.0.1:8080/apex/ и пытаемся зайти под логином SYS и паролем, которым мы указали при инсталляции.
У меня всё заработало. И у вас должно. Далее создаём пользователя БД, накатываем скрипты, импортируем схему, и так далее. Единственное, надо будет разрешить TCP соединение порт 1521 в системном или стороннем брандмауэре.
Установка клиента Oracle 10g XE Client
А теперь на клиентские машины надо установить клиент БД Oracle. Приступим.
Шаги тут будут схожи, за исключением некоторых нюансов.
0. Опять же, заходим в систему под именем локального администратора. Положим поближе инсталлятор клиента БД — OracleXEClient.exe.
1. Добавим ряд системных переменных. BAT-сценарий для их добавления будет такой:
rem Имя сервиса
setx /m ORACLE_HOME_NAME XEClient
rem Корневой путь установки базы
setx /m ORACLE_BASE "C:\XEClient"
rem Путь в реестре. Для x86 системы было бы "SOFTWARE\ORACLE\KEY_XEClient"
setx /m ORACLE_HOME_KEY "SOFTWARE\Wow6432Node\ORACLE\KEY_XEClient"
rem Путь к бинарникам и настройкам
setx /m ORACLE_HOME "C:\XEClient"
rem Путь, куда будет писать Oracle MTS. Остальные параметры ORAMTS - по умолчанию
setx /m ORAMTS_CP_TRACE_DIR "C:\XEClient\oramts\trace"
rem Языковые параметры, они не столь важны, но могут быть полезны
setx /m NLS_NUMERIC_CHARACTER ". "
setx /m NLS_DATE_FORMAT "dd.mm.yyyy"
rem Английский язык сообщений
setx /m NLS_LANG "AMERICAN_AMERICA.CL8MSWIN1251"
Сохраняем сценарий .bat и запускаем с правами администратора.
2. Запускаем инсталлятор клиента в режиме совместимости с Windows Vista — иначе у меня не получилось. Установка совсем проста — надо указать лишь путь.
После установки надо как-то проверить, всё ли получилось. Запускаем в консоли (cmd) sqlplus и попытаемся законнектится к базе. Тут хочу сказать, что sqlplus по какой-то причине достаточно часто крашится. Но уж если запустился, то работает честно.
Далее ставим наш софт и проверяем, всё ли работает. Опять же, у меня заработало и успешно работает.
Вывод
Вот такими не совсем внятными действиями мы добились успешной работы Oracle 10g XE Database и ПО, который требует Oracle 10g XE Client. На нахождение верного пути я убил достаточно много нервов и времени, поэтому, надеюсь, для кого-то эта статья окажется весьма полезной.
Жду справедливой критики.