find ./test -type f -mtime +10 | xargs gtar --remove-files -zcf test.gz
2012-10-26
Linux архивирование логов с удалением
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
Форматирование чисел в BI Publisher
По мотивам sql.ru
Задача: отформатировать отчет BI Publisher, что бы тысячи разделялись пробелами. Материалы к размышлениям: Документация
Проблемы: описанным в документации методом в режиме предпросмотра отчета из Word разделитель был или никакой или запятая.
Решение: найдено в ссылке выше. Добавляем текстовое поле, куда вставляем
Задача: отформатировать отчет 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.
3. Конфигурируем файл agentcreate.properties. Тут есть небольшая тонкость для win: или указываем нормальные слеши, или экранируем их. Порт JMX=PORTNO + 1000. Содержание файла такое:
4. Конфигурируем odi_opmn_addagent.bat
5. Добавляем инфу об агенте в opmn.xml указанного нами INSTANCE_HOME. Команда
odi_opmn_addagent.bat "agentcreate.properties".
6. Запускаем (если не запущен) нашего агента
7. Если что-то не заработало -- вычищаем агента. Для этого правим файл odi_opmn_deleteagent.bat По-моему тема таже самая -- правильно выставить CLASSPATH. что можно сделать и ручками
1. Конфигурируем файл odiparams.bat.
- Там нет ничего сложного, кроме процедуры encode для кодирования пароля от схемы master rep базы данных ODI.
- Случайно поменял и ODI_SUPERVISOR_ENCODED_PASS, но вроде ничего страшного не произошло.
- В качестве java home выбираем jdk вместо jrockit ODI_JAVA_HOME=C:\oracle\Middleware\jdk160_21
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.bat4. Конфигурируем 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 отчет все время выкидывал ошибку
1. В функциях отчета можно включить логгирование функцией SRW.MESSAGE(999, 'test')
2. При использовании текстовых formula column надо быть повнимательнее со свойством width :)
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 записи для базы получателя.
2. Проверить, что источник находится в archivelog mode и имеется хотя бы один лог
3. Получателя в режим nomount
4.
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/oracle2. Проверить, что источник находится в 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-06-05
Полезные команды Linux
Количество файлов в папке
find . -type f | wc -l
Список файлов в tar.gz архиве tar -ztvf arch
2012-04-16
Отличная статья по управлению
Отличная статья по управлению потоками в производстве.
Избранное
Андрей Орлов в «Записках автоматизатора» предложил простое эмпирическое правило: «Если программист стал незаменимым, немедленно увольте его».
Предложение вполне имеет смысл. Незаменимый сотрудник вполне может иметь высочайшую локальную производительность, но его незаменимость слишком сильно дестабилизирует поток.
Избранное
Андрей Орлов в «Записках автоматизатора» предложил простое эмпирическое правило: «Если программист стал незаменимым, немедленно увольте его».
Предложение вполне имеет смысл. Незаменимый сотрудник вполне может иметь высочайшую локальную производительность, но его незаменимость слишком сильно дестабилизирует поток.
2012-04-10
2012-03-24
Научись быть счастливым
Жизнь слишком коротка, что бы делать только то, что мы должны; ее едва-едва хватает на то, чтобы делать то, что хочется
2012-03-12
Поиск блокировок строк при помощи логмайнера.
В статье описано, как при помощи логмайнера найти SQL, который блокирует сессию с подставленными внутрь bind-переменными.
Может быть так же полезна и для изучения Logminer
Может быть так же полезна и для изучения Logminer
2012-03-09
Еще немного о .bash_profile
В статье Тима Холла еще немного о файлах .bash_profile, .bashrc. Первый обычно используется для установки переменных, во втором различные алиасы и функции.
2012-02-25
2012-01-25
Коллекции в SQL
Как в SQL можно работать с коллекциями
1. CARDINALITY(x) = COUNT
2. SET(x) = DISTINCT
3. x MULTISET UNION DISTINCT y = UNION
4. x MULTISET UNION y = UNION ALL
5. x MULTISET UNION ALL y = UNION ALL
6. x MULTISET INTERSECT y = INTERSECT
7. x MULTISET INTERSECT DISTINCT y
8. x MULTISET EXCEPT y = MINUS
9. x MULTISET EXCEPT DISTINCT y
Например
10. POWERMULTISET -- работает как CUBE для коллекций, создает всевозможные наборы из элементов
11. POWERMULTISET_BY_CARDINALITY -- тоже, что и POWERMULTISET, но возвращаются строки с заданным количеством элементов
1. CARDINALITY(x) = COUNT
2. SET(x) = DISTINCT
3. x MULTISET UNION DISTINCT y = UNION
4. x MULTISET UNION y = UNION ALL
5. x MULTISET UNION ALL y = UNION ALL
6. x MULTISET INTERSECT y = INTERSECT
7. x MULTISET INTERSECT DISTINCT y
8. x MULTISET EXCEPT y = MINUS
9. x MULTISET EXCEPT DISTINCT y
Например
WITH tax AS (
SELECT 13 a FROM dual UNION ALL
SELECT 35 a FROM dual)
SELECT x MULTISET UNION x
FROM (
SELECT cast(collect(a) AS sps.tpt_number) x, 1 flag FROM tax UNION ALL
SELECT cast(collect(a) AS sps.tpt_number) x, 2 flag FROM tax WHERE ROWNUM > 1
) t
WHERE CARDINALITY(t.x) > 0;10. POWERMULTISET -- работает как CUBE для коллекций, создает всевозможные наборы из элементов
SELECT *
FROM TABLE(POWERMULTISET(tpt_number(1, 2, 3)));11. POWERMULTISET_BY_CARDINALITY -- тоже, что и POWERMULTISET, но возвращаются строки с заданным количеством элементов
SELECT *
FROM TABLE(POWERMULTISET_BY_CARDINALITY(tpt_number(1, 2, 3), 2));
2012-01-21
Ошибка ORA-01031 при подключении с сервера
При подключении с сервера строкой
Проверить
1. Пользователь, под которым запускаем SQL*Plus входит в группу DBA для Unix-систем или ORA_DBA для Windows
2. На сервере в файле sqlnet.ora содержится строка
Если такая ошибка выдается при подключении через Listener (т.е. с указанием @имя_базы), то вполне вероятно, что причина в password-файле.
sqlplus / as sysdba выдается ошибка:ORA-01031: insufficient privilegesПроверить
1. Пользователь, под которым запускаем SQL*Plus входит в группу DBA для Unix-систем или ORA_DBA для Windows
2. На сервере в файле sqlnet.ora содержится строка
SQLNET.AUTHENTICATION_SERVICES= (NTS) для Windows и SQLNET.AUTHENTICATION_SERVICES= (ALL) для UnixЕсли такая ошибка выдается при подключении через Listener (т.е. с указанием @имя_базы), то вполне вероятно, что причина в password-файле.
Подписаться на:
Сообщения (Atom)