Список персонализаций на форме 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'));
Последние комментарии