Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Как удалить нерабочую репликацию  [new]
sLim80
Member

Откуда:
Сообщений: 21
Между тремя серверами была настроена репликация.
Сервер (основной, который был definition site) умер, пришлось переносить
базу из дампа на другой сервер (новый). Всё это заняло продолжительное время.

За это время на двух оставшихся серверах убили полностью репликацию и пересобрали
по новой, потому что нужна была срочная синхронизация данных (один из двух серверов
стал defifnition site).

В итоге запустив новый сервер с восстановленной базой видна старая репликация, через
Enterprise Manager Console видны все группы, мастер сайты, но все элементы не активные,
невозможно удалить ни мастер сайты, ни таблицы, ни сами группы (проверял пользователями REPADMIN и SYS).

Через запросы (DBMS пакеты) при попытке удалить группы сыпятся ошибки и виснет PL/SQL Developer.

Необходимо удалить все следы старой репликации, и присоединить новый сервер (уже как master site) к работающей схеме
из двух серверов.

Подскажите, есть ли радикальный метод всё это зачистить, может быть вся информация о репликации хранится
в какой-нибудь схеме и можно её целиком удалить, потом пересоздать вручную, не используя старый дамп?
2 май 13, 11:01    [14253935]     Ответить | Цитировать Сообщить модератору
 Re: Как удалить нерабочую репликацию  [new]
Кристобаль Хозевич
Member

Откуда: тутошний
Сообщений: 250
sLim80
Через запросы (DBMS пакеты) при попытке удалить группы сыпятся ошибки и виснет PL/SQL Developer.

Показывай.
2 май 13, 22:36    [14254961]     Ответить | Цитировать Сообщить модератору
 Re: Как удалить нерабочую репликацию  [new]
sLim80
Member

Откуда:
Сообщений: 21
Думал может глюки после импорта, пожтому удалял пользователя REPADMIN, пересоздавал его, давай ему права на репликацию коммандами:
BEGIN
DBMS_REPCAT_AUTH.GRANT_SURROGATE_REPCAT('REPADMIN');
END;

BEGIN
DBMS_REPCAT_ADMIN.GRANT_ADMIN_REPGROUP('REPADMIN');
END;
Плюс гранты все накатывал (те же что были в старой базе)

Но безрезультатно, в Enterprise Manager Console все кнопки неактивны, но во всех группах стоит статус Running.

Через PL/SQL Developer даю комманду остановить репликацию или убить группу WORK:

begin
DBMS_REPCAT.SUSPEND_MASTER_ACTIVITY('WORK');
end;

begin
DBMS_REPCAT.DROP_MASTER_REPGROUP('WORK',false,false);
end;

Сыпет ошибки (скрин в атаче).

Гуглил, ничего подобного не нашёл, Oracle 11g стоит, стандартная установка (такая же как и на других серверах)
Пакеты, пэкэджи все есть.

К сообщению приложен файл. Размер - 44Kb
4 май 13, 17:35    [14258144]     Ответить | Цитировать Сообщить модератору
 Re: Как удалить нерабочую репликацию  [new]
pechatnik
Member

Откуда: now RF
Сообщений: 5
попробуй тут почитать, хоть и старое
https://www.sql.ru/forum/204566/ora-23375-advanced-replication
http://www.orafaq.com/forum/t/27632/0/
http://surachartopun.com/2009/11/invalid-objects-on-sys-and-ora-04063.html
http://www.all-oracle.ru/content/view/?part=1&id=50
5 май 13, 11:52    [14259484]     Ответить | Цитировать Сообщить модератору
 Re: Как удалить нерабочую репликацию  [new]
sLim80
Member

Откуда:
Сообщений: 21
Спасибо большое за ссылки.
Дело было не в репликации, а в инвалидных объектах.
В PL\SQL из меню запустил "Tool\Compile Invalid Objects", увидел все объекты,
которые не смогли откомпилироваться автоматически, поисправлял ошибки
(пришлось создать таблицы SYSTEM.DEF$_AQCALL и SYSTEM.DEF$_AQERROR)
и всё что мне надо было перекомпилировал.
После этого получилось удалить все старые объекты через DROP_MASTER_REPGROUP.

Ошибки на этом не кончились :), пришлось ещё ручками зачищать таблицу
SYSTEM.REPCAT$_REPCOLUMN и столкнулся с другими ошибками, но это уже
другая история, буду гуглить по каждой индивидульно разбираться пока не добью
всё как надо.
5 май 13, 16:39    [14259849]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить