Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 не могу убрать старое UNDO, Oracle продолжает его использовать  [new]
SilentMage
Member

Откуда: Пермский край
Сообщений: 18
здравствуйте!
после нескольких дней поиска в инете решил все-таки создать тему.
Oracle 10.2.0.3 на линуксе x64
undo_management	AUTO
undo_tablespace UNDOTBS2
undo_retention 1814400
полгода назад переносил UNDO TBS на другой раздел. толком не разобравшись, создал новый UNDO (ну инфа в инете неудачная попалась, и в доках глядел вначале только обычные тейблспейсы, да и просто не хотелось допоздна ждать возможности остановить сервер на полчаса)
вроде ничего страшного, выключил retention guarantee на старом, все сегменты давно уже expired и offline (полгода прошло), в оффлайн весь тейблспейс уходит без проблем, однако
через некоторое время после его отключения при попытке скомпилировать какой-нибудь пакет возникает ошибка:
ORA-00604: ошибка на рекурсивном SQL-уровне 1
ORA-00376: в данный момент файл 2 не может быть прочитан
ORA-01110: файл данных 2: '/u01/app/oracle/oradata/base/undotbs01.dbf'

в awr-отчетах иногда бывает до сотни операций чтения/записи (в новом undotbs2 - десятки тысяч, заполнен он на 75%)

статус экстентов:
select tablespace_name, status, count(*) 
  from dba_undo_extents 
 group by tablespace_name, status

UNDOTBS1	EXPIRED	12487
UNDOTBS2 ACTIVE 122
UNDOTBS2 EXPIRED 70
UNDOTBS2 UNEXPIRED 21870

собственно вопросы: почему оракл продолжает использовать неактивный UNDO TBS и как заставить его отказаться от этой идеи?
20 июл 15, 09:36    [17911373]     Ответить | Цитировать Сообщить модератору
 Re: не могу убрать старое UNDO, Oracle продолжает его использовать  [new]
KyRo
Member

Откуда: г.Киев
Сообщений: 361
Думаю тут ты найдешь как отключить и потом удалить старый undo
http://docs.oracle.com/cd/B19306_01/server.102/b14231/undo.htm
20 июл 15, 10:37    [17911638]     Ответить | Цитировать Сообщить модератору
 Re: не могу убрать старое UNDO, Oracle продолжает его использовать  [new]
SilentMage
Member

Откуда: Пермский край
Сообщений: 18
доку эту я уже вдоль и поперек изучил, решения не вижу...
отключить и удалить его я могу и прямо сейчас, только вот база через некоторое время работает перестанет :(
20 июл 15, 10:51    [17911699]     Ответить | Цитировать Сообщить модератору
 Re: не могу убрать старое UNDO, Oracle продолжает его использовать  [new]
KyRo
Member

Откуда: г.Киев
Сообщений: 361
Если корректно отключить его то по идее не должно быть проблем с работоспособностью базы. На всякий случай отключи его на какое то время и если не чего не случится то удаляй.
Лучше конечно проделать это на какой то тестовой среде.

Посмотри так же нет ли чего то у тебя в UNDO что не относится к UNDO. Может таблицу какую то , кто то создал в данном TS.
20 июл 15, 11:05    [17911747]     Ответить | Цитировать Сообщить модератору
 Re: не могу убрать старое UNDO, Oracle продолжает его использовать  [new]
s_v_a
Member

Откуда: Екатеринбург
Сообщений: 214
SilentMage,
этот экземпляр за полгода ни разу не перезапускали?
20 июл 15, 11:14    [17911779]     Ответить | Цитировать Сообщить модератору
 Re: не могу убрать старое UNDO, Oracle продолжает его использовать  [new]
SilentMage
Member

Откуда: Пермский край
Сообщений: 18
в UNDO нельзя создавать таблицы, но даже если бы и можно было - нет там ничего, кроме 122 _SYSSMU объектов
много раз уже отключал на некоторое время, но потом программисты правят очередной пакет и приходится включать, иначе не компилится!
20 июл 15, 11:15    [17911784]     Ответить | Цитировать Сообщить модератору
 Re: не могу убрать старое UNDO, Oracle продолжает его использовать  [new]
SilentMage
Member

Откуда: Пермский край
Сообщений: 18
s_v_a,
перезапускал пару раз, последний раз седня утром) отключив перед этим undo... после рестарта все так же, приходится включать...
20 июл 15, 11:17    [17911789]     Ответить | Цитировать Сообщить модератору
 Re: не могу убрать старое UNDO, Oracle продолжает его использовать  [new]
li_malina
Member

Откуда:
Сообщений: 413
SilentMage,

А не связано ли это как-то с flashback?
20 июл 15, 12:14    [17912127]     Ответить | Цитировать Сообщить модератору
 Re: не могу убрать старое UNDO, Oracle продолжает его использовать  [new]
Viewer
Member

Откуда: Самара
Сообщений: 5369
SilentMage, чего то ты всё же недоговариваешь, imho.
Попробуй, например, по шагам http://neeraj-dba.blogspot.ru/2011/05/how-to-drop-undo-tablespace.html, сохраняя скриншоты для протокола.
И если ... собери всё сделанное в кучу, по примеру статьи. Потом приаатачишь вложением для рассмотрения общественностью...
20 июл 15, 12:14    [17912130]     Ответить | Цитировать Сообщить модератору
 Re: не могу убрать старое UNDO, Oracle продолжает его использовать  [new]
SilentMage
Member

Откуда: Пермский край
Сообщений: 18
li_malina
А не связано ли это как-то с flashback?

переключив базу на новое анду (полгода назад), я уменьшал undo retention почти до нуля, чтоб побыстрее очистить старое... не помогло.

Viewer
на боевой базе создавать третье анду для экспериментов что-то не хочется... (к тому же первые два весят по 50 гб)
если смотреть по твоей ссылке, то я все 5 шагов проделал давно и успешно, ну только тбс не дропнул, а в офлайн перевожу:
alter tablespace undotbs1 offline - проходит нормально, проблемы начинаются позже.
20 июл 15, 14:08    [17912885]     Ответить | Цитировать Сообщить модератору
 Re: не могу убрать старое UNDO, Oracle продолжает его использовать  [new]
li_malina
Member

Откуда:
Сообщений: 413
SilentMage,

Да я просто предположила.Если у вас 2 undo то насколько я помню выбирается доступное или то которое прописано в init.ora или если вы переключали с одного на другое командой alter system set undo_tablespace=UNDO1 scope=both sid='*';.Если все это у вас было сделано то ошибки быть не должно.а она возникает при компиляции пакетов.Вот когда пакет компилируется если включен flashback,то при необходимости можно вернуть старое состояние пакета.А flashback в своей работе использует undo
20 июл 15, 16:18    [17913677]     Ответить | Цитировать Сообщить модератору
 Re: не могу убрать старое UNDO, Oracle продолжает его использовать  [new]
SilentMage
Member

Откуда: Пермский край
Сообщений: 18
все правильно. но, согласно всем документациям, один инстанс в данный момент может и должен писать только в одно UNDO, которое указано в параметре БД undo_tablespace. к другим же UNDO он теоретически может обращаться только при флешбек-запросе и при наличии там unexpired блоков.
в гриде может все и не так просто, но у меня не грид...
заглядываю иногда в V$BH, там бывает до нескольких сотен блоков из старого UNDO... что за фигня?
21 июл 15, 09:36    [17915494]     Ответить | Цитировать Сообщить модератору
 Re: не могу убрать старое UNDO, Oracle продолжает его использовать  [new]
li_malina
Member

Откуда:
Сообщений: 413
SilentMage,

А у вас не RAC?Если RAC то для каждой инстанции должен ьыть свой UNDO
21 июл 15, 10:34    [17915822]     Ответить | Цитировать Сообщить модератору
 Re: не могу убрать старое UNDO, Oracle продолжает его использовать  [new]
SilentMage
Member

Откуда: Пермский край
Сообщений: 18
li_malina,
ну я про это и написал (под гридом я подразумевал кластер)
21 июл 15, 13:38    [17916807]     Ответить | Цитировать Сообщить модератору
 Re: не могу убрать старое UNDO, Oracle продолжает его использовать  [new]
li_malina
Member

Откуда:
Сообщений: 413
SilentMage,
Так поэтому у Вас и проблемы в RAC обязательно для всех инстанций должен использоваться один spfile (общий на 2 инстанции и в нем должно быть определено какое undo для первой инстанции и какое для второй-
апример
имя инстанции1.undo_tablespace='UNDOTBS01'
имя инстанции2.undo_tablespace='UNDOTBS02'
а у Вас как?
21 июл 15, 14:18    [17917062]     Ответить | Цитировать Сообщить модератору
 Re: не могу убрать старое UNDO, Oracle продолжает его использовать  [new]
SilentMage
Member

Откуда: Пермский край
Сообщений: 18
li_malina,
я же написал выше, что у меня НЕ кластер:)
22 июл 15, 06:00    [17919566]     Ответить | Цитировать Сообщить модератору
 Re: не могу убрать старое UNDO, Oracle продолжает его использовать  [new]
Nobody1111
Guest
SilentMage, наверняка это баг. Патчсет-то у тебя не последний.
22 июл 15, 07:18    [17919631]     Ответить | Цитировать Сообщить модератору
 Re: не могу убрать старое UNDO, Oracle продолжает его использовать  [new]
SilentMage
Member

Откуда: Пермский край
Сообщений: 18
хм, может попробовать тогда сделать обратную процедуру? перенести в нужное место первый UNDO, переключиться на него и надеяться, что второй уже не будет так глючить?) буду пробовать...
22 июл 15, 07:44    [17919646]     Ответить | Цитировать Сообщить модератору
 Re: не могу убрать старое UNDO, Oracle продолжает его использовать  [new]
Nobody1111
Guest
SilentMage
хм, может попробовать тогда сделать обратную процедуру? перенести в нужное место первый UNDO, переключиться на него и надеяться, что второй уже не будет так глючить?) буду пробовать...


У меня на 11.2.0.4 при таких переключениях Оракл тоже начинал не по детски глючить, анду, с которого ушли, не хотел освобождаться ни за какой срок, правда, после перезапуска освобождался и удалялся без проблем.
22 июл 15, 15:17    [17921776]     Ответить | Цитировать Сообщить модератору
 Re: не могу убрать старое UNDO, Oracle продолжает его использовать  [new]
DВА
Member

Откуда:
Сообщений: 5439
SilentMage
собственно вопросы: почему оракл продолжает использовать неактивный UNDO TBS и как заставить его отказаться от этой идеи?


1.потому что встречает неочищенные блоки, в заголовках которых ссылки на старый андо, поскольку андо в словаре существует, то обязан проверить в нем состояние последней транзакции
2. drop tablespace. на нет и суда нет. нет табличного пространства, значит транзакция завершена и закомичена, никуда больше не лезем.
22 июл 15, 17:40    [17922641]     Ответить | Цитировать Сообщить модератору
 Re: не могу убрать старое UNDO, Oracle продолжает его использовать  [new]
SilentMage
Member

Откуда: Пермский край
Сообщений: 18
почитал про очистку блоков (http://my-oracle.it-blogs.com.ua/post-422.aspx)
видимо вручную их почистить проблематично? разве что сделать select * from *
я уже переключился обратно на первое анду, так что подожду, пока освободится второе, и рискну грохнуть)
23 июл 15, 13:25    [17925439]     Ответить | Цитировать Сообщить модератору
 Re: не могу убрать старое UNDO, Oracle продолжает его использовать  [new]
Байкальский поток от AG#
Guest
SilentMage,

елы-палы )))

вы хоть каталог /proc/ посмотрите че там за процессы держуть
23 июл 15, 16:07    [17926297]     Ответить | Цитировать Сообщить модератору
 Re: не могу убрать старое UNDO, Oracle продолжает его использовать  [new]
AG#.
Guest
SilentMage,
отложенный роллбык
а селектом не взведете параллель ? ;)
23 июл 15, 16:11    [17926330]     Ответить | Цитировать Сообщить модератору
 Re: не могу убрать старое UNDO, Oracle продолжает его использовать  [new]
Байкал AG
Guest
AG#.
SilentMage,
отложенный роллбык
а селектом не взведете параллель ? ;)


https://www.sql.ru/forum/1110323/ora-01548-active-rollback-segment
23 июл 15, 16:25    [17926434]     Ответить | Цитировать Сообщить модератору
 Re: не могу убрать старое UNDO, Oracle продолжает его использовать  [new]
релевантный поток
Guest
Байкальский поток от AG#
SilentMage,

елы-палы )))

вы хоть каталог /proc/ посмотрите че там за процессы держуть


потоков на Байкале втекает много...вытекает один резалт
23 июл 15, 16:37    [17926527]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Oracle Ответить