powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Работа с несколькими контекстами и другие сложности импорта схемы
14 сообщений из 14, страница 1 из 1
Работа с несколькими контекстами и другие сложности импорта схемы
    #39885699
Mladshiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Подскажите пожалуйста, как изящнее решить задачу.
Задача по сборке тестовой схемы. Сейчас реализована последовательным запуском из sql plus нескольких скриптов. Хочу перетащить весь алгоритм сборки в СУБД.

1. По расписанию запускается задание по SYS
авторDBMS_SCHEDULER.RUN_JOB( JOB_NAME => 'SYS.CREATE_STEND'); тут вопросов нет

2. Удаляется схема %DEV%. Делаю под SYS авторexec kill_drop_user(A_USER)
В старой реализации я дедал выборку всех объектов схемы и генерировал запрос на удаление всех объектов. Получалось быстрее. Но генерируя динамический запрос внутри СУБД, EXECUTE IMMEDIATE встречая объект, который нельзя удалить, прекращал работу и большая часть схемы оставалась целой. В старой реализации sqlplus тоже оставлял эти два объекта и ругался на них, но завершающий drop user cascade отрабатывал мгновенно, в отличии от новой реализации с кучей оставленных объектов.

3. Создается пользователь DEV. Запускаю под SYS статичный скрипт в 20 строк. Только имя пользователя и пароль передаю в него переменными.
авторEXECUTE IMMEDIATE 'CREATE USER '||A_USER||' PROFILE DEFAULT IDENTIFIED BY "'||A_PASS||'" ... ACCOUNT UNLOCK'; тут тоже проблем нет

4. Корректируется задание на импорт. argument_value => передаю имя новой схемы, где лежит дамп, вытаскиваю из таблицы объекты исключений и т.п.
авторargument_value => 'impdp SYSTEM/password REMAP_SCHEMA='||A_FROMUSER||':'||A_USER||' dumpfile=DATA_PUMP_DIR:'||A_FILE||'%U.dmp'...

5. Надо запустить настроенное задание на импорт данных impdp в контексте system. Как это сделать? прописывать impdp SYSTEM/Password в атрибуты задания имхо как то несекьюрно.

6. После импорта требуется скомпилировать инвалидные объекты в новой схеме DEV. Из под DEV видимо. Как запустить компиляцию в этом контексте?

7. с компиляцией явы отдельный вопрос, не связанный с контекстом. Динамическим запросом пытаюсь скомпилировать все инвалиды авторEXECUTE IMMEDIATE 'alter java class "'||a_objects||'" resolver ((* DEV)(* PUBLIC)) resolve'; получаю ORA-24344: success with compilation error и блок прерывает работу и все объекты INVALID. В старой реализации в sqlplus несколько объектов компилируются с ошибкой, но скрипт проходит по всем объектам выборки и основная масса работоспособна. Мне кажется похожая проблема описана в п.2

8. Собираем статистику снова под SYS
авторdbms_stats.gather_schema_stats (ownname=>A_USER, cascade=>true, estimate_percent=>null, degree=>32); Возможно сформулировал вопросы сумбурно. Готов уточнить. Может кто то подскажет хотя бы по одному из пунктов.
...
Рейтинг: 0 / 0
Работа с несколькими контекстами и другие сложности импорта схемы
    #39885706
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mladshiy
встречая объект, который нельзя удалить
Помимо, что определенный порядок действий и фильтр по (суб)типам объектов обеспечивает положительный результат, можно обрабатывать исключение и повторять. Впрочем, удаление пользователя более чистый вариант, так как удаляются еще и внешние хвосты.

Mladshiy
Надо запустить настроенное задание на импорт данных impdp в контексте system
Зачем именно system. И! - dbms_datapump не требует "прописывать" пароль.
Mladshiy
скомпилировать инвалидные объекты
dbms_utility
Mladshiy
Собираем статистику снова под SYS
Зачем?
...
Рейтинг: 0 / 0
Работа с несколькими контекстами и другие сложности импорта схемы
    #39885732
Mladshiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-2-
Mladshiy
встречая объект, который нельзя удалить
Помимо, что определенный порядок действий и фильтр по (суб)типам объектов обеспечивает положительный результат, можно обрабатывать исключение и повторять.

Вот с исключениями хотелось бы разобраться. У меня цикл в котором отрабатывается динамический запрос
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
    CURSOR ix IS
        SELECT object_name, DECODE( object_type, 'DATABASE LINK', 'DB_LINK', 'JOB', "...и так далее...") object_type, owner FROM sys.dba_objects WHERE owner IN ( in_username) AND  object_type IN ( 'TABLE','INDEX','SEQUENCE','"...и так далее..." )  ORDER BY object_type;
BEGIN
   FOR x IN ix LOOP
      EXECUTE IMMEDIATE ( 'drop ' || x.object_type || ' '|| x.owner|| '.' || x.object_name
   END LOOP;
END;
BEGIN
      EXECUTE IMMEDIATE 'DROP USER ' || in_username || ' CASCADE';
END;


как мне правильно отработать исключение, что бы была возможность возобновить или запустить заново удаление в случае ошибки? С другой стороны, если объект невозможно удалить, не хотелось бы получить вечный цикл.
Я понимаю, что kill_drop_user проще и качественнее, но опытным путем доказано, что у меня он отрабатывает вдвое дольше, чем удаление всех объектов, а потом каскадное удаление пользователя. В моем случае экономия времени вдвое.

-2-
dbms_datapump
омг, день прожит не зря, пошел курить мануал. Спасибо!

DBMS_UTILITY.COMPILE_SCHEMA('USER') в каком контексте надо запускать, разве не владельца схемы?

Mladshiy
Собираем статистику снова под SYS
Зачем?

На этот вопрос мой предшетсвенник ответил - "Так стенд работает быстрее". Поскольку я не участвую в тестировании, а только собираю стенды, проверить что именно быстрее работает, мне не удалось. Если будут рекомендации по простым действиям сравнительного анализа производительности (типа AWR до и после смотри сюда, тут циферка больше), буду очень признателен.
...
Рейтинг: 0 / 0
Работа с несколькими контекстами и другие сложности импорта схемы
    #39885733
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-
Впрочем, удаление пользователя более чистый вариант, так как удаляются еще и внешние хвосты.

Был как-то неописуемый случай.
Грохнули админы юзера каскадом.
Ну как грохнули... попытались.
А у юзера во владении AQ-шные очереди были.
Табличка-то грохнулась, а вот очередь без таблички грохаться что-то отказалась.
Плясали потом с бубнами :)
Правда, в 10g дело было, может, и поправили с тех пор, но зависимости - они такие зависимости...
...
Рейтинг: 0 / 0
Работа с несколькими контекстами и другие сложности импорта схемы
    #39885780
oragraf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mladshiy,

Ты велосипедостроитель года. Да еще и разраб начинающий. гугли liquibase
...
Рейтинг: 0 / 0
Работа с несколькими контекстами и другие сложности импорта схемы
    #39885822
Mladshiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
oragraf, спасибо. Радикальный подход и наверняка верное направление решения задачи в целом. Я обязательно попробую предложенную библиотеку и если не обнаружу существенных проблем, например увеличение времени сборки стенда, перейдем на ее использование. При беглом изучении я понял, что библиотека будет использовать штатные механизмы, и для написания нормального changeset мне все равно нужно решить большенство из описанных выше проблем.
...
Рейтинг: 0 / 0
Работа с несколькими контекстами и другие сложности импорта схемы
    #39885830
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mladshiy
Радикальный подход

Радикально - это просто поднимать под тестовые нужды снепшот-pdb.
...
Рейтинг: 0 / 0
Работа с несколькими контекстами и другие сложности импорта схемы
    #39885852
Mladshiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous,
кому как, для preprod вообще отдельную железку выделяют, а на нее так же надо реплицировать актуальные данные с продуктива. Чем же?
...
Рейтинг: 0 / 0
Работа с несколькими контекстами и другие сложности импорта схемы
    #39885855
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mladshiy
реплицировать актуальные данные с продуктива. Чем же?

OGG жеж...
...
Рейтинг: 0 / 0
Работа с несколькими контекстами и другие сложности импорта схемы
    #39885961
oragraf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous
Mladshiy
реплицировать актуальные данные с продуктива. Чем же?

OGG жеж...
Межгалактической платной ракетой по воробьям. expdp/impdp
...
Рейтинг: 0 / 0
Работа с несколькими контекстами и другие сложности импорта схемы
    #39885995
flexgen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mladshiy
... надо реплицировать актуальные данные с продуктива. Чем же?


На выбор:
1. RMAN duplicate
2. Экспорт/импорт при помощи DATAPUMP
3. Если нужно что бы данные постоянно обновлялись - EXPDP/IMPDP + GoldenGate
4. Transportable tablespace
...
Рейтинг: 0 / 0
Работа с несколькими контекстами и другие сложности импорта схемы
    #39886128
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oragraf
expdp/impdp

Прод проду, конечно, люпус, но на мелких инсталляциях редко заморачиваются отдельным железом по контурам тестирования...
...
Рейтинг: 0 / 0
Работа с несколькими контекстами и другие сложности импорта схемы
    #39886628
Mladshiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Скажу больше. Поскольку днем продуктив грузить негоже, а ночью туда лезут любопытные сборщики BI кубов, дампы для актуализации стендов я снимаю со standby. Перевожу его в режим Snapshot Standby и сливаю данные, затем возвращаю на стандартный Standby режим. В аналогичном режиме проводим финальные тесты. На 1-2 дня перевожу специальный standby сервер в snapshot режим. Затем возвращаю обратно. За несколько часов подтягиваются накопленные за эти дни логи и препрод снова готов к тестам.

Вчера покурил доки по OGG. Соглашусь, что это тяжелый и платный инструмент. Затруднительно будет обосновать его использование для вышеописанных задач.

RMAN duplicate мне не очевидны его преимущества перед exp/imp в вышеописанной задаче репликации данных на стенды. А гемор на переписывание алгоритма очевиден.

Transportable tablespace - можно в двух словах о преимуществах этого механизма всравнении с перечисленными?
...
Рейтинг: 0 / 0
Работа с несколькими контекстами и другие сложности импорта схемы
    #39886823
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mladshiy
курил доки по OGG. Соглашусь, что это тяжелый и платный инструмент.

Платный - да.
Тяжелый - нет.
Есть аналоги заподешевше, но с ними нагрузку не работал.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Работа с несколькими контекстами и другие сложности импорта схемы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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