пятница, 1 августа 2008 г.

Недокументированная опция для статических LOV

Согласно документации, статический список значений (STATIC, STATIC2) определяется следующим образом:


STATIC[2]:Display Value[;Return Value],Display Value[;Return Value]

То есть, получается, чтобы вывести Display Value в котором содержалась бы запятая - невозможно. Однако, как выяснилось, это не совсем так...

Оказывается для STATIC, STATIC2 есть недокументированная опция! (Спасибо за это Patrick Wolf). Недокументированная опция выглядит следующим образом:

STATIC[2](lov-entries-sep,display-return-sep):Display Value[Return Value]Display Value[Return Value]

То есть, чтобы вывести Display Value с запятой, можно, например, определить LOV следующим образом:

STATIC2(;,=):Показывать, но не учитывать=1; Учытвать, но не показывать=2;

Подробнее...

четверг, 28 февраля 2008 г.

apex.oracle.com обновился до версии 3.1

Официальный общедоступный тестовый инстанс Oracle Application Express был обновлен до версии 3.1. Очевидно, что скоро новая версия Apex будет доступна для загрузки.
Те,кто не подписывался на пробную версию Apex 3.1 (evaluation version) или ничего еще не читал, то с новыми фичами можно ознакомиться в статье "Release 3.1 New Features Sample Application".

Подробнее...

среда, 16 января 2008 г.

Компиляция TOra в Debian

TOra - расшифровывается как "Toolkit For Oracle" и представляет из себя IDE для таких СУБД как Oracle, MySQL, PostgreSQL. На данный момент является одной из трех полноценных Oracle IDE под Linux (остальные две - это "SQL Developer" от Oracle и "Aqua Data Studio" от AquaFold). Концептуальное отличие - язык программирования исходного кода: "SQL Developer", "Aqua Data Studio" - Java, "TOra" - C++.

На днях пришлось собирать ее из исходных кодов, так как по лицензионным причинам, в стандартной сборке TOra из репозитария Debian GNU/Linux не включена поддержка Oracle.

Все работы велись в Debian Lenny:
$ uname -a
Linux Debian4Test 2.6.22-3-686 #1 SMP Mon Nov 12 08:32:57 UTC 2007 i686 GNU/Linux


Версия TOra:
$ ls -l /usr/src/tora-1.3.22/
-rw-r--r-- 1 root src 3496227 2008-01-15 18:19 tora-1.3.22.tar.gz


Итак... поехали...

  1. Получение Oracle Instant Client
  2. Скачиваем следующие пакеты:
    Или, как вариант, можно скачать соответствующие *.rpm пакеты с сайта Oracle и с помощью утилиты "alien" преобразовать их в *.deb.

  3. Установка Oracle Instant Client

  4. $ sudo dpkg -i oracle-instantclient-basic_10.2.0.3-2_i386.deb
    $ sudo dpkg -i oracle-instantclient-devel_10.2.0.3-2_i386.deb
    $ sudo dpkg -i oracle-instantclient-sqlplus_10.2.0.3-2_i386.deb


    Проверяем, куда был установлен клиент Oracle:
    $ whereis oracle
    oracle: /usr/lib/oracle /usr/include/oracle /usr/share/oracle


  5. Создание файла TNSNAMES.ORA
  6. Создаем файл /usr/lib/oracle/tnsnames.ora и заполняем его необходимыми данными для соединения с экземплярами БД Oracle.

  7. Настройка кэша динамических библиотек
  8. В файл /etc/ld.so.conf добавляем следующую строку:
    /usr/lib/oracle/10.2.0.3/client/lib

    После чего перегружаем кэш:
    $ sudo ldconfig

  9. Настройка переменных окружения
  10. Добавляем следующие строки в файл /etc/profile:
    LD_LIBRARY_PATH=/usr/lib/oracle/10.2.0.3/client/lib:$LD_LIBRARY_PATH
    TNS_ADMIN=/usr/lib/oracle
    export LD_LIBRARY_PATH TNS_ADMIN


  11. Получение и распаковка исходных кодов TOra
  12. Исходный код можно загрузить с оф. сайта:
    $ sudo mkdir /usr/src/tora
    $ cd /usr/src/tora
    $ wget http://switch.dl.sourceforge.net/sourceforge/tora/tora-1.3.22.tar.gz
    $ sudo tar zxvf tora-1.3.22.tar.gz


  13. Подготовка к пересборке TOra
  14. Устанавливаем необходимые модули:
    $ sudo aptitude install g++ gcc autoconf automake flex zlib1g-dev docbook-xsl
    $ sudo aptitude install libqt3-mt-dev libqt3-compat-headers


  15. Сборка TOra
  16. Переходим в директорию с исходным кодом и выполняем конфигурацию:
    $ cd /usr/src/tora/tora-1.3.22/
    $ ./configure --with-oracle=$ORACLE_HOME --with-oci-version=10G CC=gcc-4.2 --without-kde --with-xinerama


    В результате последней операции получаем сообщение об ошибке:
    ...
    checking whether uic supports -nounload ... yes
    checking if STL implementation is SGI like... yes
    checking for oracle... checking oci works... yes
    checking for qscintilla... configure: error: Couldn't compile a simple QScintilla application. See config.log or specify its location with --with-qscintilla-includes
    make: *** [configure-stamp] Ошибка 1


    То есть, в системе не оказалось пакета "libqscintilla-dev". Скачиваем его и повторяем попытки компиляции:
    $ wget http://ftp.pl.debian.org/debian/pool/main/q/qscintilla/libqscintilla-dev_1.7.1-2_all.deb
    $ sudo dpkg -i libqscintilla-dev_1.7.1-2_all.deb
    $ ./configure --with-oracle=$ORACLE_HOME --with-oci-version=10G CC=gcc-2.95 --without-kde --with-xinerama
    $ make
    $ sudo make install

    На этот раз ошибок не появилось.

  17. Запуск TOra
  18. Проверяем, где располагается TOra:
    $ whereis tora
    tora: /usr/bin/tora /usr/lib/tora /usr/local/tora /usr/share/tora /usr/share/man/man1/tora.1.gz


    Запускаем IDE:
    /usr/bin/tora


Подробнее...

понедельник, 24 декабря 2007 г.

Официальный перевод "Apex. Sizing Up Performance"

Около полугода назад я делал перевод статьи по оптимизации производительность Apex приложений - "Sizing Up Performance":


Теперь же есть возможность оценить ее официальный перевод :), ознакомиться с которым можно в декабрьском номере русской версии Oracle Magazine - "Оценка производительности".
Читаем, сравниваем....

Подробнее...

суббота, 22 декабря 2007 г.

Нужна ли сертификация по APEX?

David Peake, менеджер проекта APEX, активно прорабатывает вопрос создания программы сертификации по Oracle Application Express. И в настоящий момент проводит опрос о необходимость такого курса вообще.

Опрос состоит из нескольких экранов по 3-5 вопросов. Суть вопросов: направление проф. деятельности, используете ли APEX и в каком качестве и мнение насчет необходимости сертификации по APEX.

Исследование будет проводится до середины января 2008. Так что если есть желание оставить свое мнение - не откладывайте - времени осталось не много... ибо скоро НГ!!!
PS: с наступающими праздниками!!!

Подробнее...

вторник, 4 декабря 2007 г.

Запросы для получения ряда чисел

В некоторых случаях бывает необходимо получить последовательность чисел от N до M (в последнее время что-то уж очень часто возникает такая необходимость :). Дабы самому не забыть решил перечислить известные мне способы:

-- Самый простой
Select Rownum
From User_Objects
Where Rownum <= 25;

-- Кол-во единичек в CUBE - степень двойки
Select Rownum
From (Select 1 From Dual Group By Cube(1, 1, 1, 1, 1))
Where Rownum <= 25;

-- С использованием иерархичного запроса
Select Level
From Dual
Connect By Level <= 25;

-- Только для 10 версии и выше
Select y from dual
model
dimension by (1 as x) measures (1 as y)
rules iterate (25) (y[iteration_number + 1] = iteration_number + 1);


Есть есть еще какие-либо решения - будет интересно посмотреть...

Подробнее...

пятница, 23 ноября 2007 г.

APEX 3.1 доступен для тестирования

Буквально на днях команда Oracle Application Express анонсировала версию 3.1 для beta тестирования. Для того, чтобы получить доступ к тестовому инстансу, необходимо всего лишь зарегистрироваться.

Основная новинка - это интерактивные отчеты (Interactive Report Regions). Уже есть даже демонстрационная страничка от Dimitri Gielis - пример Interactive Report Regions.

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

Список новых фич:


  • Application Builder

    • Interactive Report Regions

    • Templates

      • Improve Searching of templates

      • Replace Templates

      • Publish Templates

      • Bulk Unsubscribe of templates

      • 2 New Themes

    • Wizards

      • Allow for early exit when creating HTML region

      • Create Interactive Report Wizard

      • Remove 32k limit on Create Application on a Spreadsheet

    • Addition of Application Groups

    • Simplification of Page Group pages

    • Addition of Application Date Format

    • Support for Declarative Media Type

    • Can view existence of run-only application (but cannot edit them)

    • Display Application Name in App Builder footer

  • Workspace Administration

    • Workspace-specific Builder Notifications

  • Runtime Installation

  • APIs

    • Augment APEX_MAIL API to support adding attachments to e-mails

Подробнее...

понедельник, 1 октября 2007 г.

Вывод ревизии subversion в приложениях Apex.

Как уже упоминалось ранее, зачастую приложение разворачивается на нескольких площадках. Соответственно, вполне логична ситуация, когда на двух и более площадках будут находиться различные версии одного и того же приложения. Поэтому достаточно часто в GUI выводят этот самый номер версии и, как правило, весь этот GUI распространяется по площадкам с помощью системы управлениями версиями Subversion.

Далее будет рассматриваться ситуация, когда приложение Oracle Application Express находится под управлением системы контроля версиями Subversion и стоит задача вывести в интерфейс номер svn-ревизии приложения.

Теория
Суть решения заключается в использовании одной из функциональностей Subversion - Keyword Substitution, которая позволяет при сохранении изменений выполнять замены ключевых слов. То есть, в файле, находящемся под управлением Subversion, может выводиться информация о дате или авторе изменения, о номере ревизии и т.д.).

Решение поставленной задачи состоит из нескольких этапов:


  1. Объявить строку замены (Substitution String) в apex-приложении

  2. Изменить шаблон приложения таким образом, чтобы использовалась новая строка подстановки

  3. Включить функциональность Keyword Substitution для файла приложения в Subversion


Практика. Определение строки замены
Для того чтобы определить свою собственную строку замены, необходимо перейти в "Shared Components -> Application -> Definition":


где перейти в раздел "Substitutions" и добавить новую строку замены, например SVN_REV (значение этой строки важно и изменять его не следует - "$Rev $". Это связано с особенностями работы Subversion - см. документацию по Subversion. Keyword Substitution):


Теперь, если посмотреть файл экспорта приложения (как это сделать описывалось ранее), то можно увидеть приблизительно такие строки (можно найти поиском по фразе "svn"):

p_substitution_string_01 => 'SVN_REV',
p_substitution_value_01 => '$Rev: $',

То есть, значение строки подстановки в файле экспорта лежит в открытом виде, которое можно изменять как угодно. Это нам пригодиться.

Практика. Изменение шаблона
Для того чтобы вывести номер версии в GUI, необходимо изменить шаблон, который отвечает за общий вид формы. Для чего необходимо перейти в "Shared Components -> User Interface -> Templates" и выбрать шаблон страницы:




После этого, необходимо прописать в шаблоне созданную ранее строку подстановки "SVN_REV", например так:


Теперь при работе приложения в нижнем левом углу будет следующая картина:


Практика. Включение Keyword Substitution
Основная часть работы уже сделана. осталась малость - включить функцию "Keyword Substitution" для файла, в котором располагается описание нашего приложения. Допустим, файл нашего приложения называется "apex_app.sql". Тогда включение будет выглядеть так:

drive:\path\to\svn\repository\svn propset svn:keywords "Date Revision Author" apex_app.sql

Вот и все. Теперь при каждом сохранении очередной версии файла apex-приложения будет вместо "$Rev $" прописываться актуальная версия файла в Subversion-репозитариии. То есть, в каждом файле приложения будет лежать строка подстановки с актуальной версией файла.
То есть, картинка в левом нижнем углу должна быть приблизительно такой:


Таким же образом можно выводить и последнего автора изменений или дату последнего сохранения в репозитарии.

ps: прошу прощения за столь значительную задержку в публикациях, ибо после сезона отпусков случился аврал :(, что отрицательно сказалось на количестве свободных минут.

Подробнее...

понедельник, 23 июля 2007 г.

Изменения DBMS_SQL в Oracle 11g

Как уже говорилось ранее, объявлено о выходе новой версии Oracle. Соответственно, в сети появляется все больше и больше информации о нововведениях, идущих в одиннадцатой версии. Так, блуждая по сети, совершенно случайно наткнулся на новость о некоторых изменениях в спецификации пакета dbms_sql.
В небольшой заметке "Oracle 11G: describing a refcursor" говорится о двух новых методах пакета dbms_sql:

  • to_cursor_number, который преобразует refcursor в "dbms_sql cursor"(тот, что возвращает dbms_sql.open_cursor)

  • to_refcursor, который выполняет обратное преобразование, то есть, преобразует "dbms_sql cursor" в refcursor

Таким образом, теперь можно совместно использовать пакет dbms_sql и переменные типа Ref Cursor.

Подробнее...

среда, 11 июля 2007 г.

Релиз Oracle 11g

Свершилось! Состоялся релиз одиннадцатой версии Oracle. Соответственно, на OTN появилось много нового... Появилось много различных обзоров, среди которых стоит в первую очередь обратить внимание на:


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

Подробнее...