Список персонализаций на форме OEBS

Получаем список персонализаций на форме OEBS.

SELECT form_name form,
       function_name Function,
       description description,
       sequence seq,
       trigger_event triggerevent,
       trigger_object triggerobject,
       condition condition,
       enabled
  FROM fnd_form_custom_rules
 ORDER BY form_name, function_name, sequence;
Categories: Oracle e-Business Suite, SQL Tags:

Список значений профиля для всех уровней использования

18 Май 2011 3 comments

Получаем список значений профиля на разных уровнях используя скрипт SQLPlus.

set long 10000
set pagesize 500
set linesize 160
column SHORT_NAME format a30
column NAME format a40
column LEVEL_SET format a15
column CONTEXT format a30
column VALUE format a40

select p.profile_option_name short_name,
       n.user_profile_option_name NAME,
       decode(v.level_id,
              10001,
              'Site',
              10002,
              'Application',
              10003,
              'Responsibility',
              10004,
              'User',
              10005,
              'Server',
              10006,
              'Org',
              10007,
              decode(to_char(v.level_value2),
                     '-1',
                     'Responsibility',
                     decode(to_char(v.level_value),
                            '-1',
                            'Server',
                            'Server+Resp')),
              'UnDef') level_set,
       decode(to_char(v.level_id),
              '10001',
              '',
              '10002',
              app.application_short_name,
              '10003',
              rsp.responsibility_key,
              '10004',
              usr.user_name,
              '10005',
              svr.node_name,
              '10006',
              org.name,
              '10007',
              decode(to_char(v.level_value2),
                     '-1',
                     rsp.responsibility_key,
                     decode(to_char(v.level_value),
                            '-1',
                            (select node_name
                               from fnd_nodes
                              where node_id = v.level_value2),
                            (select node_name
                               from fnd_nodes
                              where node_id = v.level_value2) || '-' ||
                            rsp.responsibility_key)),
              'UnDef') "CONTEXT",
       v.profile_option_value VALUE
  from fnd_profile_options       p,
       fnd_profile_option_values v,
       fnd_profile_options_tl    n,
       fnd_user                  usr,
       fnd_application           app,
       fnd_responsibility        rsp,
       fnd_nodes                 svr,
       hr_operating_units        org
 where p.profile_option_id = v.profile_option_id(+)
   and p.profile_option_name = n.profile_option_name
   and upper(p.profile_option_name) in
       (select profile_option_name
          from fnd_profile_options_tl
         where upper(user_profile_option_name) like upper('%&user_profile_name%'))
   and usr.user_id(+) = v.level_value
   and rsp.application_id(+) = v.level_value_application_id
   and rsp.responsibility_id(+) = v.level_value
   and app.application_id(+) = v.level_value
   and svr.node_id(+) = v.level_value
   and org.organization_id(+) = v.level_value
 order by short_name, user_profile_option_name, level_id, level_set;

-- пример вывода данных
SQL> 

SHORT_NAME       NAME                            LEVEL_SET       CONTEXT         VALUE
---------------- ------------------------------- --------------- --------------- -------
AFLOG_LEVEL      FND: Debug Log Level            Site                            6
AFLOG_LEVEL      FND: Debug Log Level            User            USERNAME1       6
AFLOG_LEVEL      FND: Debug Log Level            User            USERNAME2       1
AFLOG_LEVEL      БОП: уровень журнала отладки    Site                            6
AFLOG_LEVEL      БОП: уровень журнала отладки    User            USERNAME1       6
AFLOG_LEVEL      БОП: уровень журнала отладки    User            USERNAME2       1

6 rows selected
Categories: Oracle e-Business Suite, SQL Tags:

Большие объекты (LOB) в ORACLE

14 Апрель 2011 8 comments

Oracle 11G

Что такое LOB

Large Objects (LOB) это тип данных используемый для хранения больших объектов — различные форматы текстов, изображения, видео, звуковые файлы. Использование LOB для хранения данных позволяет эффективно манипулировать данными в приложении.

Компоненты LOB

LOB состоит из локатора и значения.

Локатор – это внутренний указатель на фактическое значение большого объекта.

Значение – это реальное содержимое объекта.

LOB хранит локатор в таблице и данные в различных сегментах, за исключением случая,  когда размер данных меньше 4000 байт.

Максимальный размер LOB составляет ( 4 GB (4 294 967 295 байт) — 1 ) *  (значение CHUNK parameter of LOB storage); размер может достигать до 128 терабайт.

Читать дальше про “Большие объекты (LOB) в ORACLE” »

Categories: SQL Tags:

Oracle Database 11g R2 XE Beta

12 Апрель 2011 1 комментарий

Появилась бесплатная версия Oracle Database 11g XE , пока доступная только для двух платформ: Linux x64 и Windows x86.
Все ограничения остались прежними кроме одного: размер БД может занимать 11Gb, а не 4Gb как в предыдущем релизе.

Документация
Скачать Oracle Database 11g R2 XE Beta

Categories: Новости Tags: ,

Workflow: Установка параметров для процедуры

Для установки нужных параметров при  вызове процедуры из workflow, используем следующий метод.

1) Перетягиваем нужный атрибут на функцию





2) Заходим в свойства функции, вкладка Node Attributes, и устанавливаем значение

3) Доступ к значению атрибута получаем следующим образом

...
    l_val := WF_ENGINE.GetActivityAttrText(itemtype => p_itemtype,
                                           itemkey  => p_itemkey,
                                           actid    => p_actid,
                                           aname    => 'XX_VAL1');
...

Result Cache

SQL Query Result Cache

Возможности Query Result Cache

  • Позволяет кэшировать результаты запросов, подзапросов.
  • Кэш совместно используется SQL операторами и сессиями пользователей.
  • Значительное ускорение операций чтения
  • Кэш обновляется при изменении таблиц, из которых получен кэшируемый результат
  • Result Cache для параметризованного запроса может переиспользоваться если запрос выполняется с теми же параметрами
  • Добавление RESULT_CACHE во вложенные представления отключает оптимизацию между внешним и вложенным представлением в целях максимального повторного использования результата из кэша

Кэширование отключено в случае

  • Временные или dictionary-таблицы
  • Недетерминированные PL/SQL функции
  • Использование CURRVAL и NEXTVAL
  • Недетерминированные SQL функции: sysdate, current_date и др.
  • Запрос основанный на согласованном чтение данных, которые старше чем последняя сохраненная версия, не будет кешироваться


Для явного указания, что запрос необходимо кэшировать используем хинт result_cache.

select /*+ RESULT_CACHE */
       p.prod_category,
       sum(s.amount_sold) revenue
  from products p, sales s
 where s.prod_id = p.prod_id
       and s.time_id between to_date('01-JAN-2006', 'dd-MON-yyyy')
                             to_date('31-DEC-2006', 'dd-MON-yyyy')
 group by rollup(p.prod_category);

------------------------------------------------------------------
| Id  | Operation                   | Name                       |
------------------------------------------------------------------
|   0 | SELECT STATEMENT            |                            |
|   1 |  RESULT CACHE               | fz6cm4jbpcwh48wcyk60m7qypu |
|   2 |   SORT GROUP BY ROLLUP      |                            |
|*  3 |    HASH JOIN                |                            |
|   4 |     PARTITION RANGE ITERATOR|                            |
|*  5 |      TABLE ACCESS FULL      | SALES                      |
|   6 |     VIEW                    | index$_join$_001           |
|*  7 |      HASH JOIN              |                            |
|   8 |       INDEX FAST FULL SCAN  | PRODUCTS_PK                |
|   9 |       INDEX FAST FULL SCAN  | PRODUCTS_PROD_CAT_IX       |
------------------------------------------------------------------

Читать дальше про “Result Cache” »

Categories: SQL Tags: ,

Unix команды

Основные unix команды, которые могут пригодиться в процессе работы.

Список команд

ls — Список файлов в текущей директории
pwd — Вывести путь к текущей директории
tee — Используюется для вывода данных на экран и в файл одновременно

cd [директория]— Сменить директорию
cp [что копировать][куда копировать] — Копировать файлы
mv [что перемещать][куда перемещать] — Переместить или переименовать файл
ln -s [на что сделать ссылку][имя ссылки] — Создать символическую ссылку
rm [файлы] — Удалить файлы
mkdir [директорию] — Создать новую директорию
rmdir [директорию] — Удалить пустую директорию
find -name «имя файла» — Найти файл с именем «имя файла» (ONLINE построитель FIND)
chmod [права доступа][файл] — Изменить права доступа файлов
tar — Предназначена для архивации груп файлов и каталогов
df — Список всех файловых систем по именам устройств, сообщает их размер, занятое и свободное пространство и точки монтирования

Обзор unix команд

vi filename — Вызов редактора vi для редактирования файла filename

vi — текстовый редактор командной строки. При запуске vi  просмотр и редактирование файла производится в текущем окне терминала.  Операции в vi осуществляются путем нажатия определенных клавиш или их комбинаций.

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

vi example_file.sh
Клавиши Действие
[i] Для перехода в режим вставки нажмите клавишу [i]. Это позволит вносить изменения в файл.
[Esc] Нажатие клавиши [Esc] в любое время отключает режим вставки и включает нормальный режим.
[w] Записывает в файл изменения. Перейдите в нормальный режим, нажмите [Shift]-[:], [w] и в завершение нажмите [Enter].
[q] Закрывает vi. Перейдите в нормальный режим, нажмите [Shift]-[:], [q] и в завершение нажмите [Enter].

В vi существует множество других операций. Для этого введите в командной строке man vi.
Вы можете также почитать vim tutorial, введя в командной строке vimtutor.


Читать дальше про “Unix команды” »

Categories: Others Tags: ,

Вызов формы со страницы OAF

Для вызова формы со страницы OAF используем следующую конструкцию

javascript:launchForm('RF.jsp?function_id=...')

При использовании данного способа, открытие форм происходит в новом окне, аналогично Домашней страницы OEBS. При повторном переходе по ссылке, используются уже существующие окна.

Как создать URL для доступа к форме OEBS читаем здесь.

Categories: OA Framework Tags: , ,

Регистрация таблицы в OEBS

26 Февраль 2011 Нет комментариев

Для регистрации таблицы в OEBS, используем следующий скрипт.

DECLARE
  x_appl_short_name VARCHAR2(30) := 'APPL_NAME';
  x_appl_table_name VARCHAR2(30) := 'TABLE_NAME';
BEGIN
  --ad_dd.delete_table(x_appl_short_name, x_appl_table_name);
  ad_dd.register_table(x_appl_short_name, x_appl_table_name, 'T');
  FOR cur_sh IN ( SELECT * FROM dba_tab_columns t
                  WHERE t.OWNER = x_appl_short_name
                        AND t.TABLE_NAME = x_appl_table_name
                ) LOOP
      AD_DD.delete_column(x_appl_short_name, x_appl_table_name, cur_sh.column_name);
      AD_DD.REGISTER_COLUMN ( x_appl_short_name,
                              x_appl_table_name,
                              cur_sh.column_name,
                              cur_sh.column_id,
                              cur_sh.data_type,
                              cur_sh.data_length,
                              cur_sh.nullable,
                              'N' );
  END LOOP;
END;
/
Справка. Просмотреть таблицу в OEBS мы можем через полномочия Application Developer.
Меню «Application — Database — Table«

Массив переменной длины (VARRAY)

15 Февраль 2011 Нет комментариев

Массив переменной длины

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

  • Размер всегда ограничен и массив не может быть разреженным.
  • Максимальное количество элементов указывается при определении типа.
  • Могут использоваться как в PL\SQL так и в таблицах.
  • Порядок элементов при сохранение и извлечении, в отличии от вложенных таблиц, сохраняется.
  • Индекс — положительное число от 1 до 2,147,483,647
  • Нельзя удалить произвольный элемент массива

 

Использование массива переменной длины в SQL

Создаем тип

CREATE TYPE XX_TYPE_ORDERS IS VARRAY(5) OF VARCHAR2(100);

Создаем таблицу

CREATE TABLE XX_ORDERS (ORDER_ID NUMBER,ORDER_NAME XX_TYPE_ORDERS);

Вставляем строки в таблицу

INSERT INTO XX_ORDERS VALUES (1, XX_TYPE_ORDERS('Order 1','Order 2','Order 3'));
INSERT INTO XX_ORDERS VALUES (2, XX_TYPE_ORDERS('Order 21','Order 22','Order 23'));

Читать дальше про “Массив переменной длины (VARRAY)” »

Categories: oracle, SQL Tags: