2013-04-12

Повторный импорт из gl_interface

Повторный импорт можно сделать скриптом: DECLARE req_num NUMBER; run_id NUMBER; BEGIN -- Указываем пользователя, от которого делается импорт fnd_global.APPS_INITIALIZE(user_id => 0 ,resp_id => 50301 ,resp_appl_id => 101); run_id:=gl_interface_control_pkg.get_unique_run_id; -- Важно указать английское название из gl_je_sources. Группу смотрим в gl_interface gl_interface_control_pkg.insert_row(2023, run_id, 'Transfer',--Тут английское 178697 /*group id*/); -- В gl_interface лежит русское имя source, надо переключить язык if FND_REQUEST.SET_OPTIONS(language => 'RUSSIAN') then req_num := fnd_request.submit_request( 'SQLGL' , 'GLLEZL' , 'Повторный импорт журнала' , NULL , FALSE , to_char(run_id) , 2023 , 'N' , NULL , NULL , 'N' , 'N' ); end if; END; / commit; После проверяем и постируем запрос ручками.

2013-04-11

Не виден пункт меню в web интерфейсе после добавления в OEBS

Если после добавления пункта меню его не видно в Web-интерфейсе, но видно в формсах, то надо почистить кеш: Functional administrator - Core Services - Caching framework Найти и очистить 2 компонента: MENU_ID_CACHE, MENU_INFO_CACHE

2013-01-22

Выбираем колонки в ls -l

ls -l | tr -s " "| cut -f1,3,8 -d" " total -rw-r--r-- root 09:22 -rw-r--r-- root 08:54 -rw-r--r-- root 09:24 drwxrwxr-x apptst 19:09 drwxrwxrwx oratst 14:30 -rw-r--r-- root 09:20

2012-10-17

OUI java runtime environment not found

OUI не использует переменные окружения, а использует указанные в файле oraparam.ini. При возникновении ошибки java runtime environment not found исправить переменную в этом файле.

Форматирование ошибки

В when others для логгирования ошибки использовать:
dbms_utility.format_error_stack || dbms_utility.format_error_backtrace

2012-09-13

Особенности привязки отчетов к Concurrent

concurrent.short_name = data definition.code

Форматирование чисел в BI Publisher

По мотивам sql.ru
Задача: отформатировать отчет BI Publisher, что бы тысячи разделялись пробелами. Материалы к размышлениям: Документация
Проблемы: описанным в документации методом в режиме предпросмотра отчета из Word разделитель был или никакой или запятая.
The grouping separator symbol used will be determined at runtime based on template locale.
Как задать template locale в ворде так и не нашел (хотя искал не очень долго). При печати их XML Publisher это (судя по всему) задается при регистрации шаблона. Но очень хотелось получить сформатированный отчет прямо в Ворде.

Решение: найдено в ссылке выше. Добавляем текстовое поле, куда вставляем <xsl:decimal -format="-format" decimal-separator="," grouping-separator=" " name="RUS_FORMAT" xdofo:ctx="begin"> Число, которое надо вывести форматированным, выводим так: <?format-number(LBO," ##0,00", "RUS_FORMAT")?> Еще один способ форматирования чисел <?xdoxslt:format_number(SALDO, 2, ' ', ',', $_XDOLOCALE)?>

2012-09-04

Добавление агента ODI в автозапуск Win

Начиная с 11 версии вместо человеческого добавления в качестве Win-сервиса, необходимо добавлять агента в opmn. Сам opmn устанавливался вместе с Hyperion, сервис был запущен. Предпринятые шаги:

1. Конфигурируем файл odiparams.bat.
  • Там нет ничего сложного, кроме процедуры encode для кодирования пароля от схемы master rep базы данных ODI. 
  • Случайно поменял и ODI_SUPERVISOR_ENCODED_PASS, но вроде ничего страшного не произошло. 
  • В качестве java home выбираем jdk вместо jrockit ODI_JAVA_HOME=C:\oracle\Middleware\jdk160_21 
2. Пробуем запустить агента через бат файл и из студии тестируем, что он работает.
3. Конфигурируем файл agentcreate.properties. Тут есть небольшая тонкость для win: или указываем нормальные слеши, или экранируем их. Порт JMX=PORTNO + 1000. Содержание файла такое:
ORACLE_ODI_HOME=C:\\oracle\\ODI
INSTANCE_HOME=C:\\oracle\\Middleware\\epmsystemWin\\httpConfig\\ohs
COMPONENT_TYPE=odiagent
COMPONENT_NAME=oraclediagent
ODI_MASTER_DRIVER=oracle.jdbc.OracleDriver
ODI_MASTER_URL=jdbc:oracle:thin:@192.168.0.189:1521:hyp
ODI_MASTER_USER=odi_masterrep
ODI_MASTER_ENCODED_PASS=hZyXmvEifIF.gucldqHYcy
ODI_SECU_WORK_REPO=WREP1
ODI_SUPERVISOR_ENCODED_PASS=ccfH9gtdg9lHsjtHT8mTQkGTnn
PORTNO=20910
JAVA_HOME=C:\\oracle\\Middleware\\jdk160_21
ORACLE_OPMN_HOME=C:\\oracle\\Middleware\\ohs
JMXPORTNO=21910
Хеши паролей скопированы из odiparams.bat

4. Конфигурируем odi_opmn_addagent.bat
if "%ODI_HOME%" == "" set ODI_HOME=C:\oracle\ODI
REM call "%ODI_HOME%\bin\odiparams.bat"

if "%OPMN_HOME%" == "" set OPMN_HOME=C:\oracle\Middleware\ohs
if "%INSTANCE_HOME%" == "" set INSTANCE_HOME=C:\oracle\Middleware\epmsystemWin\httpConfig\ohs

set CLASSPATH=C:\oracle\ODI\oracledi\agent\lib\odi-standalone-agent.jar;%OPMN_HOME%\opmn\lib\opmneditor.jar;C:\oracle\ODI\setup\manual\oracledi-sdk\oracle.odi-sdk-jse_11.1.1.jar
Судя по всему, переменные тут нужны только для того, что бы правильно выставить CLASSPATH, который в итоге я прописал руками

5. Добавляем инфу об агенте в opmn.xml указанного нами INSTANCE_HOME. Команда
odi_opmn_addagent.bat "agentcreate.properties".
6. Запускаем (если не запущен) нашего агента
opmnctl startproc ias-component=oraclediagent

7. Если что-то не заработало -- вычищаем агента. Для этого правим файл odi_opmn_deleteagent.bat По-моему тема таже самая -- правильно выставить CLASSPATH. что можно сделать и ручками
if "%OPMN_HOME%" == "" set OPMN_HOME=C:\oracle\Middleware\ohs
if [%3]==[] goto SYNTAXERROR
if not [%4]==[] goto SYNTAXERROR

set CLASSPATH=C:\oracle\ODI\oracledi\agent\lib\odi-standalone-agent.jar;%OPMN_HOME%\opmn\lib\opmneditor.jar;C:\oracle\ODI\setup\manual\oracledi-sdk\oracle.odi-sdk-jse_11.1.1.jar
Запускаем удаление
odi_opmn_deleteagent.bat "C:\\oracle\\Middleware\\epmsystemWin\\httpConfig\\ohs" "C:\oracle\Middleware\ohs" "oraclediagent"
Не проверял, надо ли тут экранировать косые, делал так, что бы заработало.

2012-09-03

Ошибки в oracle reports formula columns

При использовании в отчете formula column отчет все время выкидывал ошибку
REP-1401: 'cf_ounr_captionformula': Fatal PL/SQL error occurred.

1. В функциях отчета можно включить логгирование функцией SRW.MESSAGE(999, 'test')
2. При использовании текстовых formula column надо быть повнимательнее со свойством width :)

2012-08-31

dbms_stats.gather_table_stats ORA-20000: Unable to analyze TABLE, insufficient privileges or does not exist

exec dbms_stats.gather_table_stats('DWH', 'T') begin dbms_stats.gather_table_stats('DWH', 'T'); end; ORA-20000: Unable to analyze TABLE "DWH"."T", insufficient privileges or does not exist ORA-06512: at "SYS.DBMS_STATS", line 13046 ORA-06512: at "SYS.DBMS_STATS", line 13076 ORA-06512: at line 2
Проверьте, что табличное пространство TEMP
1. Существует
2. Ему есть куда расширяться

2012-08-29

Linux: /etc/hosts не используется

Если в домене кривые DNS сервера, а файл /etc/hosts правильно заполнен, но не используется, то надо поменять порядок разрешения. Для этого в файл /etc/host.conf включить строку
# Lookup names in host file and then check DNS order bind,hosts

2012-07-12

Включение аудита подключений

show parameter audit_trail alter system set audit_trail=DB scope=spfile; shut immediate startup audit connect; connect good_user/good_pass connect bad_user/bad_pass connect / as sysdba noaudit connect; select * from sys.aud$

2012-06-19

Клонирование базы при помощи RMAN

1. Завести в tnsnames.ora и listener.ora записи для базы получателя. LISTENER = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME=db2) (ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1) (SID_NAME=db2) ) ) ADR_BASE_LISTENER = /home/oracle/app/oracle
2. Проверить, что источник находится в archivelog mode и имеется хотя бы один лог
3. Получателя в режим nomount
4.rman nocatalog target sys/pass@db1 auxiliary sys/pass@db2 RUN { SET NEWNAME FOR DATABASE TO '/home/oracle/oradata/db2/%b'; DUPLICATE TARGET DATABASE TO db2 FROM ACTIVE DATABASE LOGFILE GROUP 1 ('/home/oracle/oradata/db2/redo01.log') SIZE 50M REUSE, GROUP 2 ('/home/oracle/oradata/db2/redo02.log') SIZE 50M REUSE; }

2012-04-16

Отличная статья по управлению

Отличная статья по управлению потоками в производстве.

Избранное

Андрей Орлов в «Записках автоматизатора» предложил простое эмпирическое правило: «Если программист стал незаменимым, немедленно увольте его».
Предложение вполне имеет смысл. Незаменимый сотрудник вполне может иметь высочайшую локальную производительность, но его незаменимость слишком сильно дестабилизирует поток.

2012-03-24

Научись быть счастливым

Жизнь слишком коротка, что бы делать только то, что мы должны; ее едва-едва хватает на то, чтобы делать то, что хочется

2012-03-12

Поиск блокировок строк при помощи логмайнера.

В статье описано, как при помощи логмайнера найти SQL, который блокирует сессию с подставленными внутрь bind-переменными.

Может быть так же полезна и для изучения Logminer