Месячный Архив: Ноябрь 2017

Analyses and Dashboards Linux Publisher

Минутка с Linux и решение проблемы кириллических символов в OBIEE 12

Вот зря, зря я до сих пор не сходил на курс УЦ РДТЕХ Unix and Linux Essentials, ведь тогда найденное в интернете решение проблемы кириллических шрифтов в отчетах Oracle BI Analyses (в части выгрузки отчетов в формат PDF) и BI Publisher действительно заняло бы минуту. Но middleware-сервер оказался оснащен довольно скудно, поэтому, в отсутствии полезной утилиты Midnight Commander, пришлось вспоминать азы операций с файлами и директориями в командной строке. С помощью коллеги справились. Ведь решение просто предполагало скопировать недостающие шрифты из одной папки в другую (абсолютный путь к инсталляции Oracle Middleware на вашем сервере может быть другим)

[oracle@obiee12]$ cd /u00/app/oracle/Oracle/Middleware/Oracle_Home/bi/common/
[oracle@obiee12 common]$ mkdir fonts
[oracle@obiee12 common]$ cd /u00/app/oracle/Oracle/Middleware/Oracle_Home/oracle_common/internal/fonts/
[oracle@obiee12 fonts]$ ls
128R00.TTF  ADUOKB.ttf   ADUOTCB.ttf   ALBANWTK.ttf  B39R00.TTF
ADUOB.ttf   ADUOK.ttf    ADUOTC.ttf    ALBANWTS.ttf  MICR____.TTF
ADUOJB.ttf  ADUOSCB.ttf  ADUO.ttf      ALBANWTT.ttf  UPCR00.TTF
ADUOJ.ttf   ADUOSC.ttf   ALBANWTJ.ttf  ALBANYWT.ttf
[oracle@obiee12 fonts]$ cp *.ttf /u00/app/oracle/Oracle/Middleware/Oracle_Home/bi/common/fonts

Не обязательно быть крутым админом, чтобы быть программистом, но азы операций в командной строке, будь то Windows Shell или Linux (Unix), обязательно пригодятся! Ну и искусство поиска решений проблем в интернете тоже никто не отменял.

Oracle SQL and PL/SQL

Полезный DUAL

Псевдотаблица DUAL с единственным полем DUMMY и единственной строкой, содержащей «X» в качестве этого самого DUMMY, это просто бесценное изобретение инженеров Oracle, нелогично звучащая, но на самом деле изначально в ней было 2 строки. При помощи инструкции CONNECT BY из единственной строки DUAL получаются самые разные кортежи данных. Аналоги существуют во многих базах данных, ну, скажем так, не обязательно существуют, но могут быть созданы. К примеру, при переносе АПК «Нострадамус» (ныне — «ПрограмБанк.БизнесАнализ») на рельсы СУБД Firebird была искусственно создана таблица DUAL (позже — процедура селектного типа), в которую включили ряд вычисляемых столбцов по аналогии с Oracle, например, SYSDATE (для запросов SELECT SYSDATE FROM DUAL и ряда схожих).

В ходе разработки на Oracle DUAL проявляет себя в совершенно разных ипостасях. Например, запрос

SELECT * FROM DUAL WHERE TO_NUMBER('A') = 1
позволит определить номер (ORA-1722) и название оракловой ошибки invalid number, по аналогии в предикате можно определить ряд других ошибок преобразования типов, арифметики, логических операций.

SELECT NVL(MAX(DUMMY), '-') FROM DUAL WHERE 1 = 0
— запрос, демонстрирующий логику неявного GROUP BY.

SELECT LAST_DAY(DATE '2017-11-20') AS NOVEMBER_LAST_DAY FROM DUAL
— легко отлаживать функции даты-времени, CASE-конструкции и вообще любые системные или самописные функции, а также их вариации, за исключением попадающих под ограничения ANSI SQL — т.е. без использования типично PL/SQL типов вроде BOOLEAN или с OUT-параметрами.

И эти несколько запросов — лишь результат моего труда за два дня. Причем несколько куда более простых или зависимых от конкретной схемы запросов сюда не включил. Пользуйтесь DUAL, и будет Вам счастье!