вторник, 2 августа 2011 г.

Краткая концепция Oracle Fusion Applications

  Oracle Fusion Applications - это новое поколение систем масштаба предприятия от компании Oracle, основанное на технологиях Oracle Fusion Middleware 11g и функциональности Oracle e-Business Suite и поглощенных ранее компаний J.D.Edwards, PeopleSoft и Siebel.

Основные приложения и модули входящие в состав Fusion Applications 11.1.1.5:

Архитектура Oracle Fusion Applications:
Fusion Applications представляет трёхуровневую архитектуру:
  1. Oracle Database;
  2. Oracle Fusion Middleware;
  3. Приложения Oracle Fusion Applications (Oracle Fusion Applications Product Families).


Oracle Fusion Applications построены на основе технологий Oracle Fusion Middleware и являются Java Enterprise Edition / ADF-приложениями развернутыми на сервере приложений WebLogic, а в базе данных хранится вся информация.
Каждое приложение (CRM,HCM, Projects и т.п.) представляет собой:
  • одну или несколько схем в базе данных;
  • одно или несколько Java Enterprise Edition / ADF-приложений и ADF Business Service-ов;
  • один или несколько композитных SOA-процессов.

Компоненты Fusion Middleware можно разделить на два типа:
  • Компоненты FMW используемые в Fusion Applications;
  • Инфраструктурные компоненты Fusion Applications.

К инфраструктурным компонентам относятся:
  • Enterprise Scheduling Service (ESS)
    Внутренний планировщик задач в Fusion Applications.
    Выполняет аналогичные операции, как диспетчер запросов (Concurrent Manager) в Oracle e-Business Suite 11i/R12.
  • Approval Management Service (AMS)
    Сервис согласований с пользователем (human workflow) на основе технологии FMW Human Tasks.
  • Oracle Enterprise Crawl and Search Framework
    Эта функциональность обеспечивается интегрированным в инфраструктуру Oracle Fusion Applications продуктом Oracle Secure Enterprise Search (SES).

К компонентам FWM относятся:
  • Oracle WebLogic
    Сервер приложений соответствующий стандартам Java EE 5.0, который является инфраструктурным компонентов для следующих компонентов.
  • Application Developer Framework (ADF)
    Представляет собой фреймворк построенный на основе Java Server Faces (JSF), предоставляющий возможности связывания сервисов с компонентами пользовательского интерфеса на основе декларативного подхода ('Drug and drop' в среде разработки Oracle JDeveloper). Для разработки бизнес-сервисов обеспечивающих декларативный доступ к реляционным базам данных используются бизнес-компоненты Oracle ADF (ADF Business Components) соответствующие спецификации JSR-227, с помощью которых можно реализовать собственную бизнес-функциональность, бизнес-правила, разграничение доступа к данным и т.п.
  • Компоненты Oracle SOA Suite:
    • BPEL
      Представляет собой сервер выполнения бизнес-процессов на языке BPEL 1.1/2.0 и взаимодействие с расширениями Oracle, такими как адаптеры.
    • Mediator
      Сервисная шина, которая в SOA Suite 10g называлась Oracle ESB. Предоставляет все основные возможности систем ESB - динамический роутинг, трансфирмации, валидации данных и т.п.
    • Human Tasks
      Представяет собой технологию управления жизненным циклом задач пользователей основанную на ADF.
    • Business Rules
      Простой и гибкий механизм бизнес-правил интегрированный в инфраструктуру SOA.
  • WebCenter
    Комплекс продуктов для создания порталов с функциональностью Enterprise 2.0 (имеется ввиду встроеные компоненты по взаимодействию со службами обмена сообщениями, блоги, wiki, тэги, форумы, социальные сети и т.д.) на основе SCA. Технологически это набор интегрированных приложений построенных на основе Oracle WebCenter Framework, который является расширением ADF.
  • Enterprise Content Management
    Система управления контентом обеспечивающая хранение и управление жизненным циклом документов и приложений(аттачментов). Технически представляет собой интегрированные Java EE/ADF-приложения развернутые на сервере приложений, а весь контент физически хранится в базе данных.
  • Business Intelligence
    Платформа Oracle Business Intelligence предоставляет широкий спектр современных инструментов бизнес-анализа: интерактивные информационные панели, подсистему отчетности, средства исполнения нерегламентированных запросов, механизм уведомлений, элементы "мобильной аналитики" и др.
  • Data Integrator
    Основная роль данного продукта в Fusion Applications - это синхронизация данных. Oracle Data Integrator представляет собой развитое средство ETL, базирующееся на SOA-архитектуре.

Скачать Oracle Fusion Applications можно с E-Delivery:

четверг, 28 июля 2011 г.

Конвертирование образа виртуальной машины Oracle VM в VMware

Описание: конвертирования виртуальной машины с операционной системой Linux из Oracle VM (или Xen)-образа в VMware.
Сокращение: ОВМ - образ виртуальной машины, ВМ - виртуальная машина.
  1. Сделать резервную копию ОВМ (в формате Xen или Oracle VM).
  2. Запустить ОВМ.
  3. Проверить используется ли ядро ОС с поддержкой Xen.
    Для этого выполните команду:
     $ uname -r  
     2.6.18-238.9.1.0.1.el5PAE  
    
    Если в результате выполнения команды нет слова xen, то ядро без поддержки Xen. Пример варианта с ядром Xen:
     $ uname -r  
     2.6.18-238.9.1.0.1.el5xen  
    
  4. Если используется ядро с Xen, то надо переключить в загрузчике ОС на загрузку с другого ядра без Xen-а. Если используется загрузчик Grub, то надо отредактировать следующий файл:
     $ vi /boot/grub/grub.conf  
    
    В данном файле надо изменить загружаемое ядро по-умолчанию изменив значение поля default (нумерация начинается с 0). Например:
     # grub.conf generated by anaconda  
     #  
     # Note that you do not have to rerun grub after making changes to this file  
     # NOTICE: You have a /boot partition. This means that  
     #     all kernel and initrd paths are relative to /boot/, eg.  
     #     root (hd0,0)  
     #     kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00  
     #     initrd /initrd-version.img  
     #boot=/dev/sda  
     default=1  
     timeout=5  
     splashimage=(hd0,0)/grub/splash.xpm.gz  
     hiddenmenu  
     title Oracle Linux Server (2.6.18-238.9.1.0.1.el5debug)  
         root (hd0,0)  
         kernel /vmlinuz-2.6.18-238.9.1.0.1.el5debug ro root=/dev/VolGroup00/LogVol00 rhgb quiet  
         initrd /initrd-2.6.18-238.9.1.0.1.el5debug.img  
     title Oracle Linux Server (2.6.18-238.9.1.0.1.el5PAE)  
         root (hd0,0)  
         kernel /vmlinuz-2.6.18-238.9.1.0.1.el5PAE ro root=/dev/VolGroup00/LogVol00 rhgb quiet  
         initrd /initrd-2.6.18-238.9.1.0.1.el5PAE.img  
     title Oracle Linux Server (2.6.18-238.9.1.0.1.el5xen)  
         root (hd0,0)  
         kernel /xen.gz-2.6.18-238.9.1.0.1.el5  
         module /vmlinuz-2.6.18-238.9.1.0.1.el5xen ro root=/dev/VolGroup00/LogVol00 rhgb quiet  
         module /initrd-2.6.18-238.9.1.0.1.el5xen.img  
     title Oracle Linux Server (2.6.18-238.9.1.0.1.el5)  
         root (hd0,0)  
         kernel /vmlinuz-2.6.18-238.9.1.0.1.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet  
         initrd /initrd-2.6.18-238.9.1.0.1.el5.img  
    
  5. Выключить ВМ.
  6. Выполнить конвертирование образа(-ов) виртуального жесткого диска с помощью qemu-img (скачать можно отсюда ):
     $ qemu-img convert system.img -O vmdk system.vmdk
    
    Вместо выделенного красным подставить имя файла из которого конвертировать и имя файла в который конвертировать.
  7. Создать новую ВМ в Vmware Player (или Server, Workstation, Fusion), но при создании не создавать новый виртуальный жесткий диск (или диски, если их несколько), а выбрать - использовать существующий, где указать тип устройства - IDE (значение по-умолчанию - SCSI).
  8. Готово.

Если требуется дальнейшее конвертирование в Vmware ESX, то можно использовать Vmware Converter.

среда, 20 июля 2011 г.

Массовая отмена параллельных запросов (concurrent request) в Oracle e-Business Suite R12

Предыстория: в очереди к стандартному диспетчеру запросов было более 485тыс. одинаковых ресурсоёмких запросов. Возникла необходимость отменить их выполнение...

  1. Остановить appsTier (или как-минимум Concurrent Manager);
  2. Подключиться в базе данных пользователем apps
    1. Выполнить следующий SELECT:
       SELECT a.request_id,  
        a.oracle_process_id "SPID" ,  
        q.concurrent_queue_name ,  
        fu.user_name ,  
        fu.user_id ,  
        c.concurrent_program_id,  
        c.concurrent_program_name  
        || ': '  
        || ctl.user_concurrent_program_name concurrent_request,  
        a.description ,  
        a.ARGUMENT_TEXT ,  
        b.node_name ,  
        b.db_instance ,  
        a.logfile_name ,  
        a.logfile_node_name ,  
        a.outfile_name ,  
        a.phase_code,  
        a.status_code,  
        actual_start_date ,  
        actual_completion_date ,  
        ROUND((NVL(actual_completion_date,sysdate)  
             -actual_start_date)*1440,2) mins ,   
        ROUND((actual_completion_date   
           - requested_start_date),2) * 24 duration_in_hours  
       FROM APPLSYS.fnd_Concurrent_requests a,  
        APPLSYS.fnd_concurrent_processes b ,  
        applsys.fnd_concurrent_queues q ,  
        APPLSYS.fnd_concurrent_programs c ,  
        APPLSYS.fnd_concurrent_programs_tl ctl ,  
        apps.fnd_user fu  
       WHERE a.controlling_manager  = b.concurrent_process_id  
       AND a.concurrent_program_id  = c.concurrent_program_id  
       AND a.program_application_id = c.application_id  
       AND a.phase_code <> 'C'  
       AND b.queue_application_id = q.application_id  
       AND b.concurrent_queue_id = q.concurrent_queue_id  
       AND ctl.concurrent_program_id = c.concurrent_program_id  
       AND a.requested_by = fu.user_id  
       AND ctl.language = 'US'  
       ORDER BY a.actual_start_date DESC  
      
      По результатам выписываем user_id (по имени пользователя) и concurrent_program_id (по названию запроса) для отмены.
    2. Выполнить следующий UPDATE:
       UPDATE FND_CONCURRENT_REQUESTS c  
       SET c.phase_code = 'C', c.status_code = 'D'  
       WHERE c.phase_code in ('R','P')   
       AND c.requested_by = 1428
       AND c.concurrent_program_id = 57368
       AND TO_DATE(c.request_date) >=
           TO_DATE('19-07-2011','DD-MM-YYYY')  
      
      Пояснение: подставляем значения user_id и concurrent_program_id из предыдущего SELECT-а и дату в соответсвии с той когда были созданы параллельные запросы (вместо помеченных красным).
    3. Зафиксировать изменения (COMMIT)
  3. Запустить appsTier.

Полезная ссылка: расшифровка значений status_code и phase_code таблицы FND_CONCURRENT_REQUESTS

пятница, 1 июля 2011 г.

Старт Admin и Managed-серверов с использованием Node Manager и WLST

Допущение: Node Manager сконфигурирован. Конфигурирование Node Manager описана здесь
  1. Запускаем Node Manager:
     $  nohup $MIDDLEWARE_HOME/wlserver_10.3/server/bin/startNodeManager.sh &  
    
  2. Открыть консоль и выполнить:
     $  $MIDDLEWARE_HOME/wlserver_10.3/common/bin/wlst.sh  
    
  3. Приконнектиться к Node Manager с помощью nmConnect(). Например:
     wls:/offline> nmConnect('weblogic','welcome1','localhost','5556','soa_domain')
    
    где weblogic - имя администратора WebLogic Server;
        welcome1 - пароль администратора WebLogic Server;
        localhost - имя хоста на котором запущен NodeManager;
        5556 - порт хоста на котором запущен NodeManager;
        soa_domain - имя домена.
  4. Стартовать AdminServer с помощью nmStart(). Например:
     wls:/nm/soa_domain> nmStart('AdminServer')  
    
  5. Стартовать ManagedServer с помощью nmStart(). Например SOA Server:
     wls:/nm/soa_domain> nmStart('soa_server1')  
    
  6. Выйти из консоли.
     wls:/nm/soa_domain> exit()  
    

четверг, 30 июня 2011 г.

Расшифровка пароля пользователя Apps в Oracle e-Business Suite R12.1.1

Допущения:
1. Пароль пользователя apps не известен.
2. Есть доступ к dbTier пользователем с привилегиями SYSDBA или DBA.


Последовательность шагов:
1. Сменить пароль пользователя apps на любой другой.
2. Залогиниться пользователем apps и выполнить следующее:
 CREATE OR REPLACE PACKAGE get_pwd AS   
 FUNCTION decrypt ( KEY IN VARCHAR2,VALUE IN VARCHAR2  
 )  
 RETURN VARCHAR2;  
 END get_pwd;  
 /  
 CREATE OR REPLACE PACKAGE BODY get_pwd AS  
 FUNCTION decrypt (KEY IN VARCHAR2,VALUE IN VARCHAR2  
 )  
 RETURN VARCHAR2  
 AS LANGUAGE JAVA  
 NAME 'oracle.apps.fnd.security.WebSessionManagerProc.decrypt  
 (java.lang.String,java.lang.String) return java.lang.String';  
 END get_pwd;  
 /  
3. Далее выполнить(пользователем apps):
 SELECT (SELECT get_pwd.decrypt(FND_WEB_SEC.GET_GUEST_USERNAME_PWD,   
 usertable.encrypted_foundation_password)FROM DUAL) AS apps_password  
 FROM fnd_user usertable  
 WHERE usertable.user_name = 
   (SELECT substr(FND_WEB_SEC.GET_GUEST_USERNAME_PWD,  
     1,instr(FND_WEB_SEC.GET_GUEST_USERNAME_PWD,'/')-1) from dual)  
4. Сменить пароль пользователя apps на результат выполнения запроса ш.3.