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

Откуда:
Сообщений: 44
Добрый день.
Используется oracle 8.1
Я случайно удалил таблицу, требуется восстановить данные.
К счастью непосредственно перед удалением был произведен холодный бэкап (база остановлена - файлы скопированы)
Для начала хочу прояснить следующие вопросы:
1. Как я знаю, в 10 оракле есть такая гтука как recyclebin, позволяющая восстановить данные из удаленной таблицы. Есть ли в 8 версии аналог? Как им пользоваться?
2. Если все таки использовать холодный бэкап - я знаю, в каком именно таблеспэйсе находилась эта таблица. Восможно ли ограничиться восстановлением одного таблеспэйса.

Надеюсь на вашу поддержку. Прошу максимально подробно описать путь решения проблемы - ибо в Oracle неопытен.
19 сен 07, 19:45    [4690704]     Ответить | Цитировать Сообщить модератору
 Re: Удалил таблицу((  [new]
_fast=true
Member

Откуда: x$ksppi
Сообщений: 205
Ответы:
1. Нет. Такая фишка появилась только в 10-ке.
2. Опять нет. У тебя проблема логическая. Если ты попытаешься восстановить только файлы одного табличного пространства (подразумевается режим archivelog), то у тебя оно восстановится на момент "сейчас", т.е. нужная таблица опять же будет удалена.

Варианты решения:
1. Восстанавливать из бекапа всю БД на момент времени до удаления таблицы (неполное восстановление). Но все последние изменения будут потеряны.
2. Из бекапа где-то в сторонке поднять отдельную бд опять же на момент времени до удаления таблицы и с помощью утилит exp/imp восстановить данную таблицу в исходной БД.

Второй вариант чуть посложнее, но потерь при нем меньше.
19 сен 07, 19:55    [4690733]     Ответить | Цитировать Сообщить модератору
 Re: Удалил таблицу((  [new]
Lunaire
Member

Откуда:
Сообщений: 44
1. у меня no archivelog

2. Уже имеется база, практически идентичная по конфигурации.
Если поднимать бэкап на отдельной базе - "логические моменты" не важны. Главное восстановить данные из конкретной таблицы. Вообще теоретически возможно вернуть только 1 табличное пространство? Просто чтобы из него экспортировать таблицу, работы на нем реальной вестись не будет.
19 сен 07, 20:03    [4690749]     Ответить | Цитировать Сообщить модератору
 Re: Удалил таблицу((  [new]
Sevick
Member

Откуда: из-за компа
Сообщений: 833
Lunaire
1. у меня no archivelog


Включить архивлог и счтать что никто этого не слышал/не видел (особенно начальство -)

Lunaire

2. Уже имеется база, практически идентичная по конфигурации.
Если поднимать бэкап на отдельной базе - "логические моменты" не важны. Главное восстановить данные из конкретной таблицы. Вообще теоретически возможно вернуть только 1 табличное пространство? Просто чтобы из него экспортировать таблицу, работы на нем реальной вестись не будет.


гм. куда восстанавливать холодный backup - вам виднее.
1 tablespace из холодного backup прикрутить к существующей базе не получится (или поправьте меня)
после восстановления - exp это таблицы и imp ее в рабочую базу
19 сен 07, 20:13    [4690789]     Ответить | Цитировать Сообщить модератору
 Re: Удалил таблицу((  [new]
_fast=true
Member

Откуда: x$ksppi
Сообщений: 205
Lunaire
2. Уже имеется база, практически идентичная по конфигурации.
Если поднимать бэкап на отдельной базе - "логические моменты" не важны. Главное восстановить данные из конкретной таблицы. Вообще теоретически возможно вернуть только 1 табличное пространство? Просто чтобы из него экспортировать таблицу, работы на нем реальной вестись не будет.

Теоретически возможно все, но в данном случае это не имеет практического смысла
Если у тебя холодный бекап был сделан перед самым удалением таблицы, то главное, для тебя решить - нужны ли тебе какие-то изменения в бд, произошедшие после удаления данной таблицы. Если не нужны, то выбирай решение 1 (см. выше)
Если нужны, то восстанавливай отдельно всю бд. И экспортируй свою табличку. В чем проблема - база большая?
19 сен 07, 20:21    [4690817]     Ответить | Цитировать Сообщить модератору
 Re: Удалил таблицу((  [new]
Lunaire
Member

Откуда:
Сообщений: 44
Да, база большая. Время поджимает.
_fast=true
Теоретически возможно все, но в данном случае это не имеет практического смысла

Почему? Если возможно, то как? Практический смысл для меня сейчас один - вернуть строки из этой таблицы как можно быстрей.

Если возможно восстановить только один tablespace - пожалуйста, объясните как.
После бэкапа никаких изменений в базе не было.
Вообще есть принципиальное различие между восстановлением всей базы и отдельного таблеспейса?

Каковы мои действия?
1. Остановить базу
2. Скопировать файлы из бэкапа
3. SQL> recover database;
так? или туплю?
19 сен 07, 20:36    [4690849]     Ответить | Цитировать Сообщить модератору
 Re: Удалил таблицу((  [new]
marguren
Member

Откуда:
Сообщений: 1256
yет, для неполного бекапа (то есть, до момента (date, scr) удаления таблицы) вам нужем RMAN, а не SQL*Plus.
19 сен 07, 20:40    [4690854]     Ответить | Цитировать Сообщить модератору
 Re: Удалил таблицу((  [new]
marguren
Member

Откуда:
Сообщений: 1256
черт, неполного восстановления имею в виду
19 сен 07, 20:40    [4690855]     Ответить | Цитировать Сообщить модератору
 Re: Удалил таблицу((  [new]
Lunaire
Member

Откуда:
Сообщений: 44
если не сложно - напишите нужные комманды
19 сен 07, 20:42    [4690860]     Ответить | Цитировать Сообщить модератору
 Re: Удалил таблицу((  [new]
marguren
Member

Откуда:
Сообщений: 1256
ой, ну если в оракле не очень опытны, мобыть лучче кого позвать? а то ведь не лютики собараете - restore&recovery серьезное дело.

в двух словах так:

SQL>startup mount

c:\> set NLS_DATE_FORMAT=DD-MON-YYYY HH24:MI:SS

RMAN>run
{
set until time 'день-месяц-год час-за 5 минут-сек до того, как снесли табл';
restore database;
recover database;
}
RMAN> alter database open resetlogs;
19 сен 07, 20:50    [4690883]     Ответить | Цитировать Сообщить модератору
 Re: Удалил таблицу((  [new]
Lunaire
Member

Откуда:
Сообщений: 44
у меня не resetlogs
поэтому восстановление до точки во времени проводить не могу, так?
бэкап у меня - скопированные ОС файлы, поэтому restore в rman мне ни к чему, так?
восстановить БД надо на момент копии, без наката логов

исходя из этого, правильна ли моя стратегия?
1. стоп базы
2. копирую вручную нужные файлы
3.

SQL>recover database until cancel;
cancel

SQL> alter database open resetlogs;

или все-таки через RMAN надо?
19 сен 07, 20:59    [4690895]     Ответить | Цитировать Сообщить модератору
 Re: Удалил таблицу((  [new]
_fast=true
Member

Откуда: x$ksppi
Сообщений: 205
Lunaire
После бэкапа никаких изменений в базе не было.
Вообще есть принципиальное различие между восстановлением всей базы и отдельного таблеспейса?

Каковы мои действия?
1. Остановить базу
2. Скопировать файлы из бэкапа
3. SQL> recover database;
так? или туплю?

Бекап как делал - просто средствами ОС скопировал все файлы при остановленном экземпляре?

Если да, то
1. Остановить базу
1а. Тут я бы смувил куда-нибудь текущие файлы бд -- если доверяешь своему бекапу и не любишь подстелать соломку, можешь данный пункт пропустить
2. Скопировать файлы из бэкапа
3. Startup

Если с бекапом все хорошо, бд должна открыться.
19 сен 07, 21:01    [4690898]     Ответить | Цитировать Сообщить модератору
 Re: Удалил таблицу((  [new]
_fast=true
Member

Откуда: x$ksppi
Сообщений: 205
Lunaire
у меня не resetlogs
поэтому восстановление до точки во времени проводить не могу, так?

Что значит "не resetlogs" ? Если имел в виду noarchivelog, то так.
Lunaire
бэкап у меня - скопированные ОС файлы, поэтому restore в rman мне ни к чему, так?

rman в сад

Lunaire
восстановить БД надо на момент копии, без наката логов

исходя из этого, правильна ли моя стратегия?
1. стоп базы
2. копирую вручную нужные файлы
3.

SQL>recover database until cancel;
cancel

SQL> alter database open resetlogs;

Написал выше

Lunaire
или все-таки через RMAN надо?

Написал выше
19 сен 07, 21:06    [4690910]     Ответить | Цитировать Сообщить модератору
 Re: Удалил таблицу((  [new]
Lunaire
Member

Откуда:
Сообщений: 44
Да, именно так и скопировал файлы
Просто startup, без recovery? Без проблем запустится?
хорошо
но вот, я попробовал на виртуальной машине после удаления таблицы вернуть только файл, в котором она лежит. для меня это актуально.
при попытке открыть базу получил
ora-1113
типа, file needs media recovery
в этом случае что делать?

recover until cancel
cancel
alter database open resetlogs
так?
19 сен 07, 21:08    [4690914]     Ответить | Цитировать Сообщить модератору
 Re: Удалил таблицу((  [new]
marguren
Member

Откуда:
Сообщений: 1256
у вас какая-то каша, я мало что понимаю.
база не может быть resetlogs или noresetlogs - это средство открытия базы, когда переключаешь логи (ах, черт, забыла, что у вас неаркайв).
в любом случае, until cancel невозможно сделать в sql. вы путаете мух с коклетами. если был холодный бекап, тогда просто подставьте файлы и откройте базу. по идее, должно сработать.

но я бы позвала кого-нить, если база рабочая, а не тестовая.
19 сен 07, 21:09    [4690915]     Ответить | Цитировать Сообщить модератору
 Re: Удалил таблицу((  [new]
marguren
Member

Откуда:
Сообщений: 1256
Lunaire , не файл, где табла живет, а весь холодный бекап подсуньте.
19 сен 07, 21:11    [4690921]     Ответить | Цитировать Сообщить модератору
 Re: Удалил таблицу((  [new]
Lunaire
Member

Откуда:
Сообщений: 44
да, опечатался. no archivelog
повторяю вопрос про восстановление отдельного файла

но вот, я попробовал на виртуальной машине после удаления таблицы вернуть только файл, в котором она лежит. для меня это актуально.
при попытке открыть базу получил
ora-1113
типа, file needs media recovery
в этом случае что делать?
19 сен 07, 21:12    [4690923]     Ответить | Цитировать Сообщить модератору
 Re: Удалил таблицу((  [new]
marguren
Member

Откуда:
Сообщений: 1256
повторяю ответ:
автор
Lunaire , не файл, где табла живет, а весь холодный бекап подсуньте.
19 сен 07, 21:13    [4690924]     Ответить | Цитировать Сообщить модератору
 Re: Удалил таблицу((  [new]
_fast=true
Member

Откуда: x$ksppi
Сообщений: 205
marguren
в любом случае, until cancel невозможно сделать в sql. вы путаете мух с коклетами. если был холодный бекап, тогда просто подставьте файлы и откройте базу. по идее, должно сработать.

Мля, видит бог я долго терпел

Наслаждайтесь ;-)

SQL> startup mount
ORACLE instance started.

Total System Global Area  135340020 bytes
Fixed Size                   454644 bytes
Variable Size             109051904 bytes
Database Buffers           25165824 bytes
Redo Buffers                 667648 bytes
Database mounted.
SQL> recover database until cancel;
Media recovery complete.
SQL> alter database open noresetlogs;

Database altered.

SQL>

p.s. может не надо про мух с котлетами, а? :)
19 сен 07, 21:14    [4690930]     Ответить | Цитировать Сообщить модератору
 Re: Удалил таблицу((  [new]
Lunaire
Member

Откуда:
Сообщений: 44
Спасибо!
Я правильно понял, что последний скрипт позволяет обойтись восстановлением только одного файла, где лежит таблица?
19 сен 07, 21:17    [4690938]     Ответить | Цитировать Сообщить модератору
 Re: Удалил таблицу((  [new]
marguren
Member

Откуда:
Сообщений: 1256
фига се!
а мужики-то не знали!

спосибо.

зы: боше не буду :-(
19 сен 07, 21:20    [4690942]     Ответить | Цитировать Сообщить модератору
 Re: Удалил таблицу((  [new]
_fast=true
Member

Откуда: x$ksppi
Сообщений: 205
Lunaire
Спасибо!
Я правильно понял, что последний скрипт позволяет обойтись восстановлением только одного файла, где лежит таблица?

Нет, неправильно
Это не тебе ответ был, а девушке под ником marguren.

з.ы. я же тебе говорил уже много раз - восстанавливай из бекапа всю базу, за то время, которое мы здесь общаемся, уже наверняка успел бы :)
19 сен 07, 21:23    [4690945]     Ответить | Цитировать Сообщить модератору
 Re: Удалил таблицу((  [new]
marguren
Member

Откуда:
Сообщений: 1256
ггг, хоршо хоть, не только я торможу %-))
19 сен 07, 21:25    [4690948]     Ответить | Цитировать Сообщить модератору
 Re: Удалил таблицу((  [new]
_fast=true
Member

Откуда: x$ksppi
Сообщений: 205
marguren
фига се!
а мужики-то не знали!

пагубное влияние рмана? ;-)
19 сен 07, 21:26    [4690951]     Ответить | Цитировать Сообщить модератору
 Re: Удалил таблицу((  [new]
marguren
Member

Откуда:
Сообщений: 1256
почему пагубное? я его просто люблю очень :-)
в жизни в голову не приходило использовать recovery в sql+.
наоборот (некоторые сиквельные команды в рмане) знаю, что работают, а так не пробовала. спасибо ешшо раз.

автор, сорри за дезу, видите, тоже с вами учусь :-)

зы:ну как там дела-то? вы теробайты штоли ворочаете?
19 сен 07, 21:31    [4690959]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Oracle Ответить