64 / 64 / 12
Регистрация: 05.07.2010
Сообщений: 219
|
|
1 | |
Можно ли удалить табличное пространство Undo?31.01.2011, 20:36. Показов 22370. Ответов 17
Метки нет (Все метки)
0
|
31.01.2011, 20:36 | |
Ответы с готовыми решениями:
17
Табличное пространство Oracle Расширить табличное пространство Калькулятор, как можно проверить ввод значения на табличное? Как удалить незанятое пространство? |
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
|
|
31.01.2011, 23:04 | 2 |
st_dent, кто создал этот тейблспейс? У вас может просто не стартовать БД и все
0
|
64 / 64 / 12
Регистрация: 05.07.2010
Сообщений: 219
|
|
01.02.2011, 06:45 [ТС] | 3 |
M128K145, ТП было создано при создании базы.
А если создать новое, старое можно удалить?
0
|
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
|
|
01.02.2011, 08:16 | 4 |
st_dent, возникает вопрос, чем оно вам мешает.
Можно удалить, если не боитесь потерять данные или нарушить работу процедур/триггеров и т.д., только сначала надо создать и зарегистрировать новое пространство для вашей БД и пользователей
1
|
648 / 77 / 0
Регистрация: 23.01.2010
Сообщений: 193
|
|
01.02.2011, 09:59 | 5 |
Зачем вам нужно удалять undo?
Впринципе никто не мешает этого сделать, создайте новое undo, переключитесь на него, подождите пока данные в старом undo будут почищены (можно посмотреть, например, в dba_undo_extents). После этого удалите старое. Добавлено через 6 минут Если в undo ещё есть блоки необходимые для незакоммиченных транзакций, то Oracle не даст удалить это пространство, так что корректность работы не должна быть нарушена, теоритически.
1
|
Модератор
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
|
|
01.02.2011, 10:22 | 6 |
1. совсем без undo БД работать не может
2. undo tablespace появилось, начиная с Oracle 9, совместно с undo_management=auto (это параметр БД). До того использовались rollback segments (их можно использовать и сейчас, если переключиться в undo_management=manual, но необходимость в этом возникает весьма редко) 3. в БД может быть несколько undo TS, но текущее указывается параметром undo_tablespace 4. если undo сильно разрослось в результате каких-то операций и предполагается (как - это отдельная статья), что такой размер в будущем не понадобится, то можно создать новое Undo TS и переключиться на него путем установки указ. в п.3 параметра. При этом новые транзакции начнут использовать новое TS, но старое может еще некоторое время использоваться старыми. Когда все старые "уйдут", то старое TS можно грохнуть
1
|
64 / 64 / 12
Регистрация: 05.07.2010
Сообщений: 219
|
|
01.02.2011, 10:45 [ТС] | 7 |
Так и есть!
Это уже проделано. Вопрос как раз в этом: Как определить когда старое ТП перестает использоваться? Из выше сказанного - старое ТП все-таки можно удалять, верно? Добавлено через 4 минуты На что конкретно смотреть в dba_undo_extents?
0
|
Модератор
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
|
|
01.02.2011, 10:46 | 8 |
Как уже сказали выше, Oracle не даст удалить старое UNDO, пока оно хоть кем-то используется. Так что в простейшем случае - просто давать команду на удаление с некоторым интервалом
1
|
64 / 64 / 12
Регистрация: 05.07.2010
Сообщений: 219
|
|
01.02.2011, 10:49 [ТС] | 9 |
Grossmeister, а если рассматривать не простейший способ?
0
|
Модератор
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
|
|
01.02.2011, 10:59 | 10 |
Тогда берешь том доки под названием Database Reference, находишь там описание view, которая dba_undo_extents, и, в частности, видишь, что там имеется колонка status
1
|
64 / 64 / 12
Регистрация: 05.07.2010
Сообщений: 219
|
||||||
01.02.2011, 13:05 [ТС] | 11 | |||||
Делаю так:
Код
TABLESPACE_NAME STATUS COUNT(*) UNDOTBS1 EXPIRED 1814 UNDOTBS1 UNEXPIRED 189 UNDOTBS2 EXPIRED 18 UNDOTBS2 UNEXPIRED 130 4 rows selected Я так понимаю, что не используется, так?
0
|
Модератор
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
|
|
01.02.2011, 14:21 | 12 |
Не совсем так.
Если статус ACTIVE - используется активной транзакцией, если EXPIRED - инфа уже не нужна. Но при возникновении автом. управления UNDO появился параметр под названием UNDO_RETENTION. Он в секундах задает время, в течение которого undo-данные должны сохраняться после того, как создавшая их транзакция уже закончилась. Это может использоваться при длительных запросах (чтобы не получить ORA-1555) и для flashback query (и некоторых других flashback). Вот эти экстенты имеют статус UNEXPIERD и станут EXPIRED по истечении UNDO_RETENTION. Когда для старого UNDO останутся только EXPIRED - тогда уже можно его грохнуть
1
|
64 / 64 / 12
Регистрация: 05.07.2010
Сообщений: 219
|
||||||
02.02.2011, 08:59 [ТС] | 13 | |||||
Grossmeister, преогромное спасибо!
Добавлено через 7 часов 16 минут Grossmeister, хм... UNDO_RETENTION установлен на 1 час. Однако 189 блоков как были UNEXPIRED, так ими и остались... В чем м.б. причина? Добавлено через 10 часов 52 минуты Еще одна проблема возникла. Старый Undo пока не удалял, новый назначил так
ночью происходит холодный бэкап и после старта базы активным табличным пространством опять становится UNDOTBS1 то есть старое тп. Почему так происходит и чем лечится?
0
|
Модератор
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
|
||||||
02.02.2011, 09:18 | 14 | |||||
Экземпляр, начиная с Ora 9, может использовать один из 2 видов файлов параметров: spfile<SID>.ora и pfile (init<SID>.ora). Если мы используем pfile (более старый вариант), то ALTER SYSTEM SET правит значение параметра только в памяти, а в файле надо править ручками (поскольку он обычный текстовый). Поскольку при старте экземпляра первым делом читается файл параметров и текущие значения устанавливаются оттуда. Если используется spfile, то команда может править в разных местах (по умолчанию и в памяти, и в файле). Для указания где править есть доп. опция
Рекомендую почитать Administrators Guide, там это все прописано
1
|
64 / 64 / 12
Регистрация: 05.07.2010
Сообщений: 219
|
|
03.02.2011, 16:16 [ТС] | 15 |
Grossmeister, спасибо, действительно используется pfile, поменял ручками.
Литературу изучаю, но у Oracle очень много различных гайдов, поэтому нужную информацию не всегда быстро удается выловить. А как быть с этим: ? Oracle стоит версии 9.2.0.1, у этой версии есть баг, связанный с не очищением занятых блоков(информация непроверенная). Как быть в этом случае?
0
|
Модератор
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
|
|
03.02.2011, 16:29 | 16 |
Начальные версии релизов (в том числе и 9.2.0.1) рекомендуется использовать только для изучения или тестов, поскольку багов в них действительно хватает. Для продуктива их нужно безусловно патчить (для 9 последний релиз 9.2.0.8). Для скачки патчей и доступа к Metalink (там опубликованы баги, возможные workaround, можно завести SR - service request) Oracle д.б. купленный и оплачена техподдержка.
Конкретно про данный баг не скажу, не в курсе. Можешь попробовать просто периодически выдавать команду на удаление. Ну или сходи на sql.ru - там самый посещаемый русскоязычный форум по Oracle, может там чего накопаешь
1
|
64 / 64 / 12
Регистрация: 05.07.2010
Сообщений: 219
|
|
03.02.2011, 16:38 [ТС] | 17 |
В этом и проблема. Планируется переход на десятку (насколько я понял, очень давно планируется), поэтому техподдержку уже не оплачиваем.
Я задавал свой вопрос на указанном вами сайте, но суть ответов свелась к одному - надо патчить
0
|
Модератор
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
|
|
03.02.2011, 16:44 | 18 |
Ну если сейчас переходить на новую версию, так Ora 11 уже вполне нормально работает
0
|
03.02.2011, 16:44 | |
03.02.2011, 16:44 | |
Помогаю со студенческими работами здесь
18
Как удалить их XML документа пространство имен? Можно ли не использовать корневое пространство имен? Можно ли прятать методы класса в пространство имен? Можно ли импортировать пространство имен Console, чтобы в коде уже не указывать Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |