Oracle DB, Oracle APEX, Linux etc.

четверг, 11 февраля 2010 г.

Oracle SQL Developer+Debian GNU/Linux: Нетривиальный баг

Довелось наткнуться на баг не столько самого OSD, сколько используя его. После очередного обновления пакетов Debian при попытке соединения OSD выдавал lo exception: The Network Adapter could not establish the connection - и хоть ты тресни. После поиска в сети оказалось, что это баг #560044: net.ipv6.bindv6only=1 breaks java networking. Быстрый и грязный фикс для тех, кто уже пользуется веткой testing:
sudo sed -i 's/net.ipv6.bindv6only\ =\ 1/net.ipv6.bindv6only\ =\ 0/' \
/etc/sysctl.d/bindv6only.conf && sudo invoke-rc.d procps restart


Надеюсь, Вы ещё не меняли ничего от отчаяния в tnsnames.ora и listener.ora?..
Читать далее

понедельник, 8 февраля 2010 г.

ОФФ: Снова в эфире из дома!

Наконец-то взял новую видеокарту взамен павшего смертью храбрых в борьбе с пылью старичка 8800GT. Не мудрствуя лукаво и не гоняясь с сверхпроизводительностью на FullHD-экранах, выбрал Gainward GT240 512MB GDDR5 - крепкий середнячок с маленьким энергопотреблением. Пока что всё устраивает: неслышный вентилятор, температура в простое - 30 градусов, производительность сравнима.

Моё домашняя машина снова на ходу! Ура.
Читать далее

суббота, 6 февраля 2010 г.

Oracle DB XE+APEX 3.2.1+JasperReports: Инструкция по сборке на Win32 ч.1

Предисловие



Честно говоря, надоело отношение к установке Oracle DB XE, к обновлению включённого в неё APEX до более поздних версий (в частности, 3.2.1) и к интеграции со всем этим добром хорошего и бесплатного генератора отчётов - ко всему этому как к чему-то сложному и непонятному. Можно по-разному бороться с этим уже сложившимся у некоторых мнением, лично я буду бороться с ним, используя простые примеры. Результатом должна стать инструкция по установке и простейшей настройке Oracle Database Express Edition (дальше - Oracle XE или просто XE), APEX 3.2.1 (дальше - APEX), JasperReports (дальше - JR). В качестве ОС пока будет выступать Win32, но надеюсь, что вскоре я реанимирую свою машину с Debian GNU/Linux, и появится аналогичная статья для Debian-based Linux. Поехали!

Установка XE



Если Вы не в курсе, что такое XE, то советую Вам прочитать следующий тынц: Oracle Database 10g Express Edition. Если вкратце, то это та же самая Oracle Database 10.2.0.1, но с ограничениями на размер пользовательских данных (4 ГБ), размер БД вместе с этими данными (5 ГБ), размер используемого ОЗУ (1 ГБ) и количество используемых ядер процессора (1 ядро). Кроме того, она довольно быстро и легко устанавливается и настраивается. Всё это делает её отличным кандидатом в качестве СУБД для небольших проектов и любящих экспериментировать разработчиков и АБД.

Скачать XE для Win32 можно здесь. Поскольку мы хотим хранить в БД данные с русскими символами и (я надеюсь) не хотим пользоваться недокументированным способом по смене кодировки БД после установки, то скачивать нужно Oracle Database 10g Express Edition (Universal) - тогда в качестве кодировки БД будет использоваться AL32UTF8.

После загрузки стоит прочитать руководство по установке и следовать ему. Для тех, у кого проблемы с английским, краткий перевод шагов:
  1. Войдите в систему как Администратор.
  2. Очистите переменную окружения ORACLE_HOME через Панель управления->Система.
  3. Сходите на сайт...
  4. ... и скачайте файл, который Вы уже скачали.
  5. Запустите его.
  6. Если Вы переустанавливаете XE, то появится опция Repair.
  7. Next.
  8. Accept->Next.
  9. Выбираем, куда установить->Next.
  10. При необходимости указываем порты для прослушивателя, MS Transaction Server и APEX. По умолчанию: 1521, 2030 и 8080.
  11. Вводим пароли для пользователей SYS и SYSTEM. По значимости эти пользователи БД близки к Локальному Администратору ОС и пользователю из группы Администраторов. Так что выбирайте сами сложность паролей.
  12. Install, если всё устраивает.
  13. У Вас есть работающая XE! Можете создавать пользователей и работать. При желании, можете зайти на домашнюю страницу БД. Приложение хорошее, но одна проблема: с обновлением APEX до 3-ей версии это приложение со всеми его прелестями администрирования пропадёт. И нам понадобится что-нибудь для работы с БД, помимо SQL Workshop->SQL Commands. Так что я предлагаю следующее...


Oracle SQL Developer



Довольно неплохое бесплатное средство разработки, администрирования и вообще общения с Oracle DB. Oracle SQL Developer может подключаться и к другим СУБД, но нас пока интересует исключительно наша XE. Домашняя страница проекта - здесь. Скачать последнюю версию можно здесь (на текущий момент это версия 2.1). Для начинающих есть пошаговое обучение. Интерфейс дружественный, в чём-то интуитивный, в чём-то - нет. Трудностей при работе возникнуть не должно, если время от времени заглядывать в Help.

Oracle APEX 3.2.1



После установки XE у Вас уже будет APEX, но почему бы не обновить его до последней версии (на данный момент это версия 3.2.1)? Многие считают, что это сложно. Попробую разубедить.

Домашняя страница APEX находится здесь. Загрузим последнюю доступную версию отсюда. Вообще-то, всё отлично получается при использовании руководства по установке. Но я попробую дать пошаговую простую инструкцию по обновлению:
  1. Скачайте архив с APEX и распакуйте их в каталог C:\tmp.
  2. Запустите cmd: Win+R->cmd. Выполните:
    cd c:\tmp\apex
    sqlplus "sys/syspass as sysdba" @apexins SYSAUX SYSAUX TEMP /i/
    

    Начнётся установка и обновление APEX. Можно сходить попить кофе или ещё как-нибудь провести минут 10-15 времени.
  3. Меняем пароль у администратора APEX:
    sqlplus "sys/syspass as sysdba" @apxchpwd
    

  4. Не выходя из SQL*Plus, настраиваем Embedded PL/SQL Gateway:
    @apex_epg_config c:\tmp

  5. Там же разблокируем пользователя ANONYMOUS, под которым APEX работает с БД...
    alter user anonymous account unlock;

  6. ... установим явно http-порт для XML DB...
    EXEC DBMS_XDB.SETHTTPPORT(8080);

  7. ... и разрешим анонимный доступ к файлам в XML DB.
    SET SERVEROUTPUT ON
    DECLARE
    l_configxml XMLTYPE;
    l_value VARCHAR2(5) := 'true'; -- (true/false)
    BEGIN
    l_configxml := DBMS_XDB.cfg_get();
    
    IF l_configxml.existsNode('/xdbconfig/sysconfig/protocolconfig/httpconfig/allow-repository-anonymous-access') = 0 THEN
    -- Add missing element.
    SELECT insertChildXML
    (
    l_configxml,
    '/xdbconfig/sysconfig/protocolconfig/httpconfig',
    'allow-repository-anonymous-access',
    XMLType('' ||
    l_value ||
    ''),
    'xmlns="http://xmlns.oracle.com/xdb/xdbconfig.xsd"'
    )
    INTO l_configxml
    FROM dual;
    
    DBMS_OUTPUT.put_line('Element inserted.');
    ELSE
    -- Update existing element.
    SELECT updateXML
    (
    DBMS_XDB.cfg_get(),
    '/xdbconfig/sysconfig/protocolconfig/httpconfig/allow-repository-anonymous-access/text()',
    l_value,
    'xmlns="http://xmlns.oracle.com/xdb/xdbconfig.xsd"'
    )
    INTO l_configxml
    FROM dual;
    
    DBMS_OUTPUT.put_line('Element updated.');
    END IF;
    
    DBMS_XDB.cfg_update(l_configxml);
    DBMS_XDB.cfg_refresh;
    END;
    /
    
    Element updated.

  8. Кроме того, можно открыть удалённый HTTP-доступ:
    exec dbms_xdb.setListenerLocalAccess(l_access => FALSE);

    Чтобы его убрать, достаточно выполнить тот же код, используя в качестве параметра TRUE.


Всё, вы можете заходить на страницу администрирования (http://127.0.0.1:8080/apex/apex_admin), создавать рабочее пространство и администратора для него, потом заходить администратором рабочего пространства в обновлённый APEX (http://127.0.0.1:8080/apex) и добавлять разработчиков и пользователей, потом разработчики могут приниматься за дело... Всё как и должно быть.

В качестве замены встроенного приложения для администрирования в XE можно прочитать здесь список основных задач и способы их выполнения.

О JasperReports и их установке поговорим в следующей части.

Читать далее