|
Работа с несколькими контекстами и другие сложности импорта схемы
|
|||
---|---|---|---|
#18+
Добрый день. Подскажите пожалуйста, как изящнее решить задачу. Задача по сборке тестовой схемы. Сейчас реализована последовательным запуском из 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); Возможно сформулировал вопросы сумбурно. Готов уточнить. Может кто то подскажет хотя бы по одному из пунктов. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2019, 12:39 |
|
Работа с несколькими контекстами и другие сложности импорта схемы
|
|||
---|---|---|---|
#18+
Mladshiy встречая объект, который нельзя удалить Mladshiy Надо запустить настроенное задание на импорт данных impdp в контексте system Mladshiy скомпилировать инвалидные объекты Mladshiy Собираем статистику снова под SYS ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2019, 12:54 |
|
Работа с несколькими контекстами и другие сложности импорта схемы
|
|||
---|---|---|---|
#18+
-2- Mladshiy встречая объект, который нельзя удалить Вот с исключениями хотелось бы разобраться. У меня цикл в котором отрабатывается динамический запрос Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
как мне правильно отработать исключение, что бы была возможность возобновить или запустить заново удаление в случае ошибки? С другой стороны, если объект невозможно удалить, не хотелось бы получить вечный цикл. Я понимаю, что kill_drop_user проще и качественнее, но опытным путем доказано, что у меня он отрабатывает вдвое дольше, чем удаление всех объектов, а потом каскадное удаление пользователя. В моем случае экономия времени вдвое. -2- dbms_datapump DBMS_UTILITY.COMPILE_SCHEMA('USER') в каком контексте надо запускать, разве не владельца схемы? Mladshiy Собираем статистику снова под SYS Зачем? На этот вопрос мой предшетсвенник ответил - "Так стенд работает быстрее". Поскольку я не участвую в тестировании, а только собираю стенды, проверить что именно быстрее работает, мне не удалось. Если будут рекомендации по простым действиям сравнительного анализа производительности (типа AWR до и после смотри сюда, тут циферка больше), буду очень признателен. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2019, 13:43 |
|
Работа с несколькими контекстами и другие сложности импорта схемы
|
|||
---|---|---|---|
#18+
-2- Впрочем, удаление пользователя более чистый вариант, так как удаляются еще и внешние хвосты. Был как-то неописуемый случай. Грохнули админы юзера каскадом. Ну как грохнули... попытались. А у юзера во владении AQ-шные очереди были. Табличка-то грохнулась, а вот очередь без таблички грохаться что-то отказалась. Плясали потом с бубнами :) Правда, в 10g дело было, может, и поправили с тех пор, но зависимости - они такие зависимости... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2019, 13:44 |
|
Работа с несколькими контекстами и другие сложности импорта схемы
|
|||
---|---|---|---|
#18+
Mladshiy, Ты велосипедостроитель года. Да еще и разраб начинающий. гугли liquibase ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2019, 14:40 |
|
Работа с несколькими контекстами и другие сложности импорта схемы
|
|||
---|---|---|---|
#18+
oragraf, спасибо. Радикальный подход и наверняка верное направление решения задачи в целом. Я обязательно попробую предложенную библиотеку и если не обнаружу существенных проблем, например увеличение времени сборки стенда, перейдем на ее использование. При беглом изучении я понял, что библиотека будет использовать штатные механизмы, и для написания нормального changeset мне все равно нужно решить большенство из описанных выше проблем. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2019, 15:35 |
|
Работа с несколькими контекстами и другие сложности импорта схемы
|
|||
---|---|---|---|
#18+
Mladshiy Радикальный подход Радикально - это просто поднимать под тестовые нужды снепшот-pdb. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2019, 15:42 |
|
Работа с несколькими контекстами и другие сложности импорта схемы
|
|||
---|---|---|---|
#18+
andrey_anonymous, кому как, для preprod вообще отдельную железку выделяют, а на нее так же надо реплицировать актуальные данные с продуктива. Чем же? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2019, 16:22 |
|
Работа с несколькими контекстами и другие сложности импорта схемы
|
|||
---|---|---|---|
#18+
Mladshiy реплицировать актуальные данные с продуктива. Чем же? OGG жеж... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2019, 16:24 |
|
Работа с несколькими контекстами и другие сложности импорта схемы
|
|||
---|---|---|---|
#18+
andrey_anonymous Mladshiy реплицировать актуальные данные с продуктива. Чем же? OGG жеж... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2019, 19:20 |
|
Работа с несколькими контекстами и другие сложности импорта схемы
|
|||
---|---|---|---|
#18+
Mladshiy ... надо реплицировать актуальные данные с продуктива. Чем же? На выбор: 1. RMAN duplicate 2. Экспорт/импорт при помощи DATAPUMP 3. Если нужно что бы данные постоянно обновлялись - EXPDP/IMPDP + GoldenGate 4. Transportable tablespace ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2019, 23:16 |
|
Работа с несколькими контекстами и другие сложности импорта схемы
|
|||
---|---|---|---|
#18+
oragraf expdp/impdp Прод проду, конечно, люпус, но на мелких инсталляциях редко заморачиваются отдельным железом по контурам тестирования... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2019, 11:27 |
|
Работа с несколькими контекстами и другие сложности импорта схемы
|
|||
---|---|---|---|
#18+
Скажу больше. Поскольку днем продуктив грузить негоже, а ночью туда лезут любопытные сборщики BI кубов, дампы для актуализации стендов я снимаю со standby. Перевожу его в режим Snapshot Standby и сливаю данные, затем возвращаю на стандартный Standby режим. В аналогичном режиме проводим финальные тесты. На 1-2 дня перевожу специальный standby сервер в snapshot режим. Затем возвращаю обратно. За несколько часов подтягиваются накопленные за эти дни логи и препрод снова готов к тестам. Вчера покурил доки по OGG. Соглашусь, что это тяжелый и платный инструмент. Затруднительно будет обосновать его использование для вышеописанных задач. RMAN duplicate мне не очевидны его преимущества перед exp/imp в вышеописанной задаче репликации данных на стенды. А гемор на переписывание алгоритма очевиден. Transportable tablespace - можно в двух словах о преимуществах этого механизма всравнении с перечисленными? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2019, 10:16 |
|
|
start [/forum/topic.php?fid=52&msg=39885822&tid=1881889]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
56ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 164ms |
0 / 0 |