Форум программистов, компьютерный форум, киберфорум
Oracle
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/119: Рейтинг темы: голосов - 119, средняя оценка - 4.78
64 / 64 / 12
Регистрация: 05.07.2010
Сообщений: 219
1

Можно ли удалить табличное пространство Undo?

31.01.2011, 20:36. Показов 22370. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Можно ли удалить табличное пространство UNDO?
К каким последствиям теоретически это может привести?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.01.2011, 20:36
Ответы с готовыми решениями:

Табличное пространство Oracle
Доброго времени суток! Пожалуйста подскажите, как можно увеличить табличное пространство на...

Расширить табличное пространство
Всем привет. Суть такая, имеется пространство которое уже закончилось 32гигабайта, нужно расширить...

Калькулятор, как можно проверить ввод значения на табличное?
Добрый вечер. Я делаю калькулятор в Delphi, как можно проверить введённое значение на...

Как удалить незанятое пространство?
Написал в раздел XP, поскольку сам пока сижу на ней. Увеличивал свободное пространство из-под доса...

17
Эксперт JavaЭксперт С++
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
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
01.02.2011, 08:16 4
st_dent, возникает вопрос, чем оно вам мешает.

Цитата Сообщение от st_dent Посмотреть сообщение
А если создать новое, старое можно удалить?
Можно удалить, если не боитесь потерять данные или нарушить работу процедур/триггеров и т.д., только сначала надо создать и зарегистрировать новое пространство для вашей БД и пользователей
1
648 / 77 / 0
Регистрация: 23.01.2010
Сообщений: 193
01.02.2011, 09:59 5
Зачем вам нужно удалять undo?
Впринципе никто не мешает этого сделать, создайте новое undo, переключитесь на него, подождите пока данные в старом undo будут почищены (можно посмотреть, например, в dba_undo_extents). После этого удалите старое.

Добавлено через 6 минут
Цитата Сообщение от M128K145 Посмотреть сообщение
st_dentесли не боитесь потерять данные или нарушить работу процедур/триггеров и т.д.
Если в 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
Цитата Сообщение от Grossmeister Посмотреть сообщение
если undo сильно разрослось в результате каких-то операций и предполагается (как - это отдельная статья), что такой размер в будущем не понадобится, то можно создать новое Undo TS и переключиться на него путем установки указ. в п.3 параметра. При этом новые транзакции начнут использовать новое TS, но старое может еще некоторое время использоваться старыми.
Так и есть!
Это уже проделано.
Вопрос как раз в этом:
Цитата Сообщение от Grossmeister Посмотреть сообщение
Когда все старые "уйдут"
Как определить когда старое ТП перестает использоваться?
Из выше сказанного - старое ТП все-таки можно удалять, верно?

Добавлено через 4 минуты
Цитата Сообщение от dlinnbly Посмотреть сообщение
подождите пока данные в старом undo будут почищены (можно посмотреть, например, в dba_undo_extents)
На что конкретно смотреть в 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
Цитата Сообщение от st_dent Посмотреть сообщение
Grossmeister, а если рассматривать не простейший способ?
Тогда берешь том доки под названием Database Reference, находишь там описание view, которая dba_undo_extents, и, в частности, видишь, что там имеется колонка status
1
64 / 64 / 12
Регистрация: 05.07.2010
Сообщений: 219
01.02.2011, 13:05  [ТС] 11
Цитата Сообщение от Grossmeister Посмотреть сообщение
Тогда берешь том доки под названием Database Reference, находишь там описание view, которая dba_undo_extents, и, в частности, видишь, что там имеется колонка status
Делаю так:
SQL
1
2
SELECT TABLESPACE_NAME,STATUS,COUNT(*) 
FROM dba_undo_extents GROUP BY TABLESPACE_NAME,STATUS;
Получаю:
Код
TABLESPACE_NAME             STATUS    COUNT(*)               
UNDOTBS1                    EXPIRED     1814                   
UNDOTBS1                    UNEXPIRED   189                    
UNDOTBS2                    EXPIRED     18                     
UNDOTBS2                    UNEXPIRED   130                    

4 rows selected
UNDOTBS1 - это старое.
Я так понимаю, что не используется, так?
0
Модератор
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
01.02.2011, 14:21 12
Цитата Сообщение от st_dent Посмотреть сообщение
UNDOTBS1 - это старое.
Я так понимаю, что не используется, так?
Не совсем так.
Если статус 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 пока не удалял, новый назначил так
SQL
1
ALTER system SET UNDO_TABLESPACE=UNDOTBS2
но
ночью происходит холодный бэкап и после старта базы активным табличным пространством опять становится UNDOTBS1 то есть старое тп.
Почему так происходит и чем лечится?
0
Модератор
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
02.02.2011, 09:18 14
Цитата Сообщение от st_dent Посмотреть сообщение
ночью происходит холодный бэкап и после старта базы активным табличным пространством опять становится UNDOTBS1 то есть старое тп.
Почему так происходит и чем лечится?
Экземпляр, начиная с Ora 9, может использовать один из 2 видов файлов параметров: spfile<SID>.ora и pfile (init<SID>.ora). Если мы используем pfile (более старый вариант), то ALTER SYSTEM SET правит значение параметра только в памяти, а в файле надо править ручками (поскольку он обычный текстовый). Поскольку при старте экземпляра первым делом читается файл параметров и текущие значения устанавливаются оттуда. Если используется spfile, то команда может править в разных местах (по умолчанию и в памяти, и в файле). Для указания где править есть доп. опция
SQL
1
ALTER SYSTEM SET ...  SCOPE= { spfile | memory | BOTH }
Для того, чтобы узнать, какой файл использовался при старте, надо посмотреть параметр spfile (например, через v$parameter). Если значение пустое, использовался pfile.

Рекомендую почитать Administrators Guide, там это все прописано
1
64 / 64 / 12
Регистрация: 05.07.2010
Сообщений: 219
03.02.2011, 16:16  [ТС] 15
Grossmeister, спасибо, действительно используется pfile, поменял ручками.
Литературу изучаю, но у Oracle очень много различных гайдов, поэтому нужную информацию не всегда быстро удается выловить.
А как быть с этим:
Цитата Сообщение от st_dent Посмотреть сообщение
UNDO_RETENTION установлен на 1 час. Однако 189 блоков как были UNEXPIRED, так ими и остались...
?
Oracle стоит версии 9.2.0.1, у этой версии есть баг, связанный с не очищением занятых блоков(информация непроверенная). Как быть в этом случае?
0
Модератор
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
03.02.2011, 16:29 16
Цитата Сообщение от st_dent Посмотреть сообщение
Oracle стоит версии 9.2.0.1, у этой версии есть баг, связанный с не очищением занятых блоков(информация непроверенная). Как быть в этом случае?
Начальные версии релизов (в том числе и 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
Цитата Сообщение от Grossmeister Посмотреть сообщение
Oracle д.б. купленный и оплачена техподдержка
В этом и проблема. Планируется переход на десятку (насколько я понял, очень давно планируется), поэтому техподдержку уже не оплачиваем.
Я задавал свой вопрос на указанном вами сайте, но суть ответов свелась к одному - надо патчить
0
Модератор
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
03.02.2011, 16:44 18
Ну если сейчас переходить на новую версию, так Ora 11 уже вполне нормально работает
0
03.02.2011, 16:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.02.2011, 16:44
Помогаю со студенческими работами здесь

Как удалить их XML документа пространство имен?
Всем доброго дня!) Как удалить из приведенного ниже XML пространство имен? XDocument xdoc =...

Можно ли не использовать корневое пространство имен?
Я узнал о существовании корневого пространства имен когда начал использовать папку...

Можно ли прятать методы класса в пространство имен?
Здравствуйте! Понимаю, что вопрос немного странноват и туповат, но все же... Можно ли убрать...

Можно ли импортировать пространство имен Console, чтобы в коде уже не указывать
Простите за вопрос. К примеру можно ли это... using System; namespace HelloS { public...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru