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

Откуда: Москва-Лимассол
Сообщений: 268
Кончилось место на ФС.
Очередной умник удалил часть файлов БД руками, чтобы почистить место.
БД в NOARCHIVELOG. Бэкапов - нет. Это пилот у заказчика. Заказчик сам пытался его обслуживать. (Теперь вроде как он уже созрел на поддержку).
Оперативные данные вставляются в ежедневные тейблспейсы. Т.е все нужные таблицы партиционированы. Партиции всех таблиц за один день хранятся в отдельном тейблспейсе.
Человек удалил часть файлов за октябрь, ноябрь, и полностью июль, август, сентябрь.
Базу несколько раз пытались перегрузить после этого, естественно она не открывалась. После этого отдали мне.
Эти файлы я перевел в OFFLINE FOR DROP. И после смог открыть базу.
Есть еще справочники - хранятся в отдельном тейблспейсе, constraints, текстовые индексы есть.

при попытке удалить объекты из бд из тех файлов, что удалены, возникает ошибка:
SQL> ALTER TABLE OBJECT drop partition OBJ_PART_2011_07_25 update indexes;
ALTER TABLE IWTM.OBJECT drop partition OBJ_PART_2011_07_25 update indexes
*
ERROR at line 1:
ORA-00376: file 6 cannot be read at this time
ORA-01110: data file 6: '/u01/IWTM_2011_07_25_1.dbf'

самого файла нет
SQL> !ls -l /u01/IWTM_2011_07_25_1.dbf
ls: /u01/IWTM_2011_07_25_1.dbf: No such file or directory


Другие, которые не удалены читаются нормально:
SQL> select count(*) from object partition(OBJ_PART_2011_11_29);

COUNT(*)
----------
80320


есть ли какой-то способ удалить объекты из таблиц уже удаленных файлов?
Переливать в новую схему - геморно. В новой схеме будут свои sequences, свои constraints.
5 дек 11, 13:39    [11706537]     Ответить | Цитировать Сообщить модератору
 Re: Очередной умник удалил часть файлов БД руками  [new]
pravednik
Member

Откуда: Jacksonville, FL
Сообщений: 16268
maxski
есть ли какой-то способ удалить объекты из таблиц уже удаленных файлов?

Как таковых, объектов уже нет. Так что удалять фактически уже нечего.
То есть, по нормальному ответ - нет.
Если через ж-у, то руками копаться в словаре, подчищая его.
5 дек 11, 13:43    [11706585]     Ответить | Цитировать Сообщить модератору
 Re: Очередной умник удалил часть файлов БД руками  [new]
Сергей Арсеньев
Member

Откуда:
Сообщений: 4118
pravednik
Если через ж-у, то руками копаться в словаре, подчищая его.

М.б. проще перенести на новую базу то, что осталось?
5 дек 11, 13:46    [11706615]     Ответить | Цитировать Сообщить модератору
 Re: Очередной умник удалил часть файлов БД руками  [new]
DВА
Member

Откуда:
Сообщений: 5439
exchange partitions работает?
5 дек 11, 13:57    [11706703]     Ответить | Цитировать Сообщить модератору
 Re: Очередной умник удалил часть файлов БД руками  [new]
maxski
Member

Откуда: Москва-Лимассол
Сообщений: 268
чтобы все корректно вставлялось в новую схему (новую БД). Нужно запустить набор скриптов. Которые создают нужные таблицы, индексы, констрейнты, пакеты и т.д. Там есть всякие зависимости. Просто так не перелить. Нужно править sequences, чтоб стартовали с другого диапазона, чтобы потом ключи не конфликтовали.
как я себе вижу:
1) создать новую БД и чистую схему, и направить вставку в эту новую схему. При этом оставить старую для чтения. Но чтение не получается, так как интерфейс GUI ссылается на удаленные объекты и не может отобразить никакой информации. Т.е старая бд будет бесполезна пока не подчистить эти удаленные объекты из словаря.
2) в идеале, корректно подчистить информацию об уже удаленных объектах.

Заказчик (важный) просит сохранить данные сколько можно.
5 дек 11, 14:06    [11706802]     Ответить | Цитировать Сообщить модератору
 Re: Очередной умник удалил часть файлов БД руками  [new]
maxski
Member

Откуда: Москва-Лимассол
Сообщений: 268
попробую руками exchange partition,
хотя у нас есть такая процедурка для архивирования старых данных - эта процедурка работает через exchange partition - обломилась.
5 дек 11, 14:08    [11706822]     Ответить | Цитировать Сообщить модератору
 Re: Очередной умник удалил часть файлов БД руками  [new]
maxski
Member

Откуда: Москва-Лимассол
Сообщений: 268
Упс! Сработало! :)
1* create table my_test1 as select * from object partition (OBJ_PART_2011_11_29) where rownum < 1
SQL> /

Table created.

SQL> alter table object exchange partition OBJ_PART_2011_07_25 with table my_test1 excluding indexes without validation;

Table altered.

буду двигаться в этом направлении :)
5 дек 11, 14:16    [11706898]     Ответить | Цитировать Сообщить модератору
 Re: Очередной умник удалил часть файлов БД руками  [new]
maxski
Member

Откуда: Москва-Лимассол
Сообщений: 268
1) сгенерил несколько "простыней" скриптов для каждой таблицы (20 штук):
create table my_test as select * from ...
alter table ... exchange partition ... with table my_test excluding indexes without validation;
drop table my_test;
...
всего почти 5 тыс строчек

2)далее
alter table ... drop partition ... update indexes;
...
более 1500 строчек

3)далее удалил текстовые индексы ( благо их не много - всего 6);

4)далее проребилдил партиции индексов в другой тейблспейс - скрипт около 5 тыс строчек

5)далее удалил тейблспейсы (тоже скриптом).

6) Далее создал текстовые индексы.
7)Пофиксил один справочник. Там список тейблспейсов для "подключения"/"отключения" партиций.

Все сделал скриптами.
Итого 13 часов ручной работы.
6 дек 11, 16:30    [11714558]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить