Список персонализаций на форме 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;
Список значений профиля для всех уровней использования
Получаем список значений профиля на разных уровнях используя скрипт 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
Большие объекты (LOB) в ORACLE
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 терабайт.

Oracle Database 11g R2 XE Beta
Появилась бесплатная версия Oracle Database 11g XE , пока доступная только для двух платформ: Linux x64 и Windows x86.
Все ограничения остались прежними кроме одного: размер БД может занимать 11Gb, а не 4Gb как в предыдущем релизе.
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 |
------------------------------------------------------------------
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 example_file.sh
| Клавиши | Действие |
| [i] | Для перехода в режим вставки нажмите клавишу [i]. Это позволит вносить изменения в файл. |
| [Esc] | Нажатие клавиши [Esc] в любое время отключает режим вставки и включает нормальный режим. |
| [w] | Записывает в файл изменения. Перейдите в нормальный режим, нажмите [Shift]-[:], [w] и в завершение нажмите [Enter]. |
| [q] | Закрывает vi. Перейдите в нормальный режим, нажмите [Shift]-[:], [q] и в завершение нажмите [Enter]. |
В vi существует множество других операций. Для этого введите в командной строке man vi.
Вы можете также почитать vim tutorial, введя в командной строке vimtutor.
►
Вызов формы со страницы OAF
Для вызова формы со страницы OAF используем следующую конструкцию
javascript:launchForm('RF.jsp?function_id=...')
При использовании данного способа, открытие форм происходит в новом окне, аналогично Домашней страницы OEBS. При повторном переходе по ссылке, используются уже существующие окна.
Как создать URL для доступа к форме OEBS читаем здесь.

Регистрация таблицы в OEBS
Для регистрации таблицы в 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;
/
Меню «Application — Database — Table«

Массив переменной длины (VARRAY)
Массив переменной длины
Подобно двум другим типам коллекций, массивы переменной длины являются одномерными коллекциями, состоящими из однородных элементов.
- Размер всегда ограничен и массив не может быть разреженным.
- Максимальное количество элементов указывается при определении типа.
- Могут использоваться как в 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'));

Последние комментарии