Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Установка Discoverer Catalog / 7 сообщений из 7, страница 1 из 1
11.04.2006, 11:33
    #33657765
Goster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка Discoverer Catalog
Нашел на форуме замечательную статью, как запускать Discoverer без лишней инфраструктуры. Это дейчтвительно очень полечно. Но вот возникает вопрос: как установить Discoverer Catalog без использования AS? Т.е. необходим скрипт для установки Disco Catalog. Как его выделить?
...
Рейтинг: 0 / 0
11.04.2006, 12:39
    #33658024
Goster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка Discoverer Catalog
К сожалению, все к чему я пришел это файл
<BIHome>\sysman\webapps\emd\ias\discoverer\d40_install.uix

В котором есть такие строчки
<event name="SubmitInstall">
<instance class="oracle.disco.oem.controller.EventHandlersFactory"
method="getDiscoEventHandler"/>
</event>

При просмотре исходников страницы создания Discoverer Catalog, а точнее ее последней стадии, я обнаружил такую вещь:
<a ref="/emd/console/ias/discoverer/d4o_install3$bjSt=5fdf03c5$ctxType1=oracle*_ias$target=BIinst.oraserver*_Discoverer$type=oracle*_discoverer$ctxName1=BIinst.oraserver?event=SubmitInstall"><img src="/emd/cabo/images/cache/en/bYesmron.gif" title="Yes"....>

В Java я не сиден, но здесь, видимо, вызывается некоторое событие, обрабатываемое oracle.disco.oem.controller.EventHandlersFactory.
Только что дальше???
...
Рейтинг: 0 / 0
12.04.2006, 13:10
    #33661008
Goster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка Discoverer Catalog
Я разобрался с этим вопросом. Мало ли кому это понадобится, я напишу каким образом это реализовать. Архив с результирующими скриптами приложен. Основной скрипт - d4oinstall.sql. В нем необходимо указать пользователя с правами DBA, пароли и сервер.

Как я уже писал, в файле BIHome>\sysman\webapps\emd\ias\discoverer\d40_install.uix я нашел следующие строчки.
<event name="SubmitInstall">
<instance class="oracle.disco.oem.controller.EventHandlersFactory"
method="getDiscoEventHandler"/>
</event>

Потом смотрим Business Intelligence Installation Guide и находим там рубрику 4.4.2.1.3 How to migrate an existing Discoverer Catalog to Oracle Database 10g Enterprise Edition Release 2.
В ней написано:
Locate the d4o.jar in the following directory.
BI_Home\sysman\webapps\emd\WEB-INF\lib

Таким образом находим директорию, где хранятся jar'ы которыми пользуется AS.
В этой папке потрошим все jar'ы, в названии которых упоминается disco или d4o. Таким образом находим файл
BI_Home\sysman\webapps\emd\WEB-INF\lib\disco_dsc.jar,
в котором как раз и расположен класс
oracle.disco.oem.controller.EventHandlersFactory, описанный в uix файле.
Распаковываем disco_dsc.jar куда нам удобно.
Заодно распаковываем d4o.jar. Потом понадобится.

Теперь качаем какой-нибудь java декомпилятор. Я использовал cavaj.
Наконец, открываем EventHandlersFactory.class декомпилятором. Смотрим какие handler'ы там используются. Нас интересует DiscoEventHandler. Его и расковыриваем. Там есть такой код:
Код: plaintext
Class c = Class.forName("oracle.disco.oem.workers." + eventName + "Worker");

То что нам нужно. Смотрим на uix файл и видим там
Код: plaintext
event name="SubmitInstall"
Опа!

Т.е. нам нужен файл oracle.disco.oem.workers.SubmitInstallWorker.
Есть такой файл! Расковыриваем.

Так тут есть такие вещи, как
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
    private static final String _HOST_PROPERTY = "host";
    private static final String _PORT_PROPERTY = "port";
    private static final String _SID_PROPERTY = "sid";
    private static final String _USER_PROPERTY = "user";
    private static final String _PWD_PROPERTY = "pwd";
    private static final String _D4OPWD_PROPERTY = "d4oPwd";
    private static final String _D4OPWD_CONFIRM_PROPERTY = "d4oPwdConfirm";
    private static final String _TABLESPACE_PROPERTY = "tableSpace";

Ничего не напоминает? =) Значит мы правильном пути.
Анализируем код и понимаем, что для нас здесь важно:

Код: plaintext
1.
D4OAdministratorImpl d4oAdm = new D4OAdministratorImpl();
d4oAdm.install(host, Integer.parseInt(port), sid, user, pwd, d4oPwd, tableSpace);

Смотрим на импорты
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
import java.util.ResourceBundle;
import oracle.cabo.servlet.BajaContext;
import oracle.cabo.servlet.Page;
import oracle.cabo.servlet.state.*;
import oracle.disco.oem.DiscoConstants;
import oracle.disco.oem.beans.DataBean;
import oracle.disco.oem.configuration.ConfigurationFactory;
import oracle.disco.oem.configuration.DiscoConfiguration;
import oracle.dss.d4o.administration.D4OAdministratorImpl;
import oracle.dss.util.DefaultErrorHandler;

oracle.dss.d4o.administration.D4OAdministratorImpl - это явно то что надо.

Помните, мы распаковали файл d4o.jar. Вот теперб он нам и пригодится.
Идем в директорию, куда мы выложили содержимое и ищем там D4OAdministratorImpl.class. Расковыриваем.

Смотрим первую же функцию install и находим подобный код:
Код: plaintext
1.
2.
_sql.runSQL("create user " + D4OUserName + " identified by " + s4);
_sql.runSQL("grant ALTER  SESSION to " + D4OUserName);
_sql.runSQL("grant CREATE SEQUENCE to " + D4OUserName);

Вау! Теперь аккуратно копируем весь этот код в текстовый файлик.

Далее видим такой код:
Код: plaintext
1.
2.
3.
InstallPersistence installpersistence = new InstallPersistence();
installpersistence.setVerbose(m_verbose);
installpersistence.setSystemFolderOn(false);
installpersistence.install(D4OUserName, s4, s, Integer.toString(i), s1, m_jdbcType, s5, s5, null, null);

Ищем InstallPersistence.class. По количеству параметров находи нужный install. Уверенно двигаемя по нему и находим
Код: plaintext
return install(_sql, s6, s7, as, as1);
Следуем туда.

Похоже, то, что надо.

Тут прежде всего обращаем внимание на строки:
Код: plaintext
1.
2.
3.
4.
5.
        GenerateDDL generateddl = new GenerateDDL();
        String as2[] = generateddl.getCommands(s, s1, as, as1, true);
        for(int k =  0 ; k < as2.length; k++)
        {
            runsql.runPLSQL(as2[k]);
        }

Да сколько можно?!?!
Стиснув зубы ищем GenerateDDL.class.
Здесь я сделал проще:
Просто создал свой java проект, где использовал несоклько модифицированный класс GenerateDDL. Замещаем функцию main на:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
        GenerateDDL gener = new GenerateDDL();
        String as2[] = gener.getCommands("USERS", "USERS" , null, null, true);
        FileOutputStream outStream;
        File filen;
            filen = new File("C:\\Persist.pls");
        try
        {
            filen.createNewFile();
            outStream = new FileOutputStream(filen);
            for(int i =  0 ; i < as2.length; ++i)
                outStream.write((as2[i] + "\n").getBytes());
            outStream.close();
        }
        catch(Exception e)
        {
            e.fillInStackTrace();
        }
"USERS" - замените на необходимое tablespace.

Так как нам нужен слегка другой формат, то нужно чуть-чуть модифицировать еще 2 функции:
в GetCommands() в первом цикле, сразу после внутренного цикла ставим
Код: plaintext
1.
2.
3.
if(!as2[i].endsWith(";") && as2[i].length() >  2 )
            {
                as2[i] += ";\n";
            }
Чуть далее замещаем код на
Код: plaintext
1.
2.
3.
if(!s2.trim().startsWith("--") && !s2.trim().toLowerCase().startsWith("show") && !s2.trim().toLowerCase().equals("") &&!s2.trim().toLowerCase().startsWith("rem"))
                {
                    vector.addElement(s2);
                }
Здесь просто убрано условие
s2.trim().toLowerCase().equals("/");
Т.к. символ "/" нам в скрипте необходим.

Усе. Теперm запускаем и получаем необходимый нам элемент.

Идем дальше по InstallPersistence.class. Там идет вызов различных скриптов. Добавляем в наш основной текстовый файлик строчки
Код: plaintext
@@имя_скрипта
.
Сначала добавляем строчку с именем скрипта, который мы сгенерировали самостоятельно, а потом уже все остальные.

Уфф. Вроде все. Теперь сваливаем все в одну папку.
Лично у меня сразу это не заработало. Возможно, я не указал каких параметров sqlplus'у. Чтобы заработало:
Удаляем из всех скриптов подобные строчки:
REM dbdrv: sql ~PROD ~PATH ~FILE none none none package &phase=plb \
REM dbdrv: checkfile:~PROD:~PATH:~FILE
И команды EXIT;

Уфф вроде все. Если будут ошибки, то просто надо помнить: после команды создания типа, должен идти символ "/";
Вроде в остальном все в порядке.

Ах да, чуть не забыл. Если у вас строгий администратор, то админскую часть скрипта стоит вынести в один блок. Сделать это не сложно.

Теперь запускаем sqlplus @d4oinstall.sql и наслаждаемся.
...
Рейтинг: 0 / 0
12.04.2006, 13:11
    #33661017
Goster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка Discoverer Catalog
Файл, конечно забыл =))
...
Рейтинг: 0 / 0
12.04.2006, 14:15
    #33661303
Birkhoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка Discoverer Catalog
Впечатляет :)
Только файлик похоже битый.
...
Рейтинг: 0 / 0
12.04.2006, 15:16
    #33661601
Alex_D
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка Discoverer Catalog
BirkhoffВпечатляет :)
Присоединяюсь! Выше всяких похвал.
Goster и DimaR - большое спасибо !!!

BirkhoffТолько файлик похоже битый.
А у меня нормально скачался.
...
Рейтинг: 0 / 0
12.04.2006, 15:42
    #33661716
Goster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка Discoverer Catalog
Файлик заархивирован WinRar 3.42. А с фалами WR >= 3.00 у многих проблемы. Вот еще раз выкладываю в ZIP'е.
...
Рейтинг: 0 / 0
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Установка Discoverer Catalog / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]