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

Откуда: Санкт-Петербург
Сообщений: 45
Ситуация как мне кажется достаточно не тривиальная. Но сначала все по порядку. Есть база данных, бэкапы которой мне необходимо делать ежедневно. Используя написанные раннее скрипты все делается должным образом, но для того, чтобы удалялись старые бэкапы в Oracle 8.1.7 я всегда использовал скрипт rman1.sh. А он в свою очередь требует, чтобы вывод команды report obsolete указывал на существующие файлы бэкапов. Обычно записи об экспериментах проводимых раннее (с отдельными датафайлами с контролфайлами и тому подобное), что было лишним, я просто убирал используя команды change datafilecopy ... uncatalog. Но тут в названии одного из файлов присутствовал символ перевода строки, соответственно ввести его как я не старался мне не удавалось в rmanе, а по номеру он его не хотел удалять. Потом я нашел в целевой базе и recovery базе записи содержащие искомые строки и исправил их, надеясь что мне удастся их удалить. Теперь характер ошибки поменялся:

RMAN> change controlfilecopy '/export/home/oracle/testdb_standby.ctl' uncatalog;

RMAN-03022: compiling command: change
RMAN-03026: error recovery releasing channel resources
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure during compilation of command
RMAN-03013: command type: change
RMAN-06003: ORACLE error from target database: ORA-19633: controlfile record 17 is out of sync with recovery catalog
ORA-06512: at "SYS.DBMS_BACKUP_RESTORE", line 1591
ORA-06512: at line 1
RMAN-06097: text of failing SQL statement: begin sys . dbms_backup_restore . deleteDataFileCopy ( recid => :recid , stamp => :stamp , fname => :fname , dfnumber => :dfnumber , resetlogs_change => :rstscn:rstscn_i , creation_change => :crescn , checkpoint_change => :ckpscn:ckpscn_i , blksize => :blksize , no_delete => :no_delete ) ; end ;
RMAN-06099: error occurred in source file: krmk.pc, line: 13917
22 авг 05, 17:35    [1807920]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка удаления старого бэкапа контролфайла.  [new]
plant
Member

Откуда: Санкт-Петербург
Сообщений: 45
Неужели совершенно никаких мыслей нет по этому поводу?
25 авг 05, 13:10    [1816873]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка удаления старого бэкапа контролфайла.  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18483
resync catalog ?
26 авг 05, 02:06    [1818998]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка удаления старого бэкапа контролфайла.  [new]
plant
Member

Откуда: Санкт-Петербург
Сообщений: 45
К сожалению это не помогает:

RMAN> resync catalog;

RMAN-03022: compiling command: resync
RMAN-03023: executing command: resync
RMAN-08002: starting full resync of recovery catalog
RMAN-08004: full resync complete

RMAN> change controlfilecopy '/export/home/oracle/testdb_standby.ctl' uncatalog;

RMAN-03022: compiling command: change
RMAN-03026: error recovery releasing channel resources
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure during compilation of command
RMAN-03013: command type: change
RMAN-06003: ORACLE error from target database: ORA-19633: controlfile record 17 is out of sync with recovery catalog
ORA-06512: at "SYS.DBMS_BACKUP_RESTORE", line 1591
ORA-06512: at line 1
RMAN-06097: text of failing SQL statement: begin sys . dbms_backup_restore . deleteDataFileCopy ( recid => :recid , stamp => :stamp , fname => :fname , dfnumber => :dfnumber , resetlogs_change => :rstscn:rstscn_i , creation_change => :crescn , checkpoint_change => :ckpscn:ckpscn_i , blksize => :blksize , no_delete => :no_delete ) ; end ;
RMAN-06099: error occurred in source file: krmk.pc, line: 13917
26 авг 05, 08:47    [1819155]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка удаления старого бэкапа контролфайла.  [new]
mutate
Member

Откуда:
Сообщений: 155
наверняка эму необходимо только наличие файла
/export/home/oracle/testdb_standby.ctl
созадай там текстовый файл и сделай uncatalog
а потом resync......
26 авг 05, 11:10    [1819692]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка удаления старого бэкапа контролфайла.  [new]
plant
Member

Откуда: Санкт-Петербург
Сообщений: 45
Проблема в том, что файл существует, причем он тот - старый с enteroм, который я переименовал:

bash-2.03$ ls -l /export/home/oracle/testdb_standby.ctl
-rw-r----- 1 oracle dba 43114496 Dec 31 2003 /export/home/oracle/testdb_standby.ctl
26 авг 05, 11:31    [1819812]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка удаления старого бэкапа контролфайла.  [new]
mutate
Member

Откуда:
Сообщений: 155
ха ха ... вот именно с ентером!
а ищет он файл без ентера..

сделай так:
переименуй файл с ентером в файл без ентера.

вот создаем файлец:
alpha-new:jet>touch "testdb_standby.ctl
> "

файлец создан
alpha-new:jet>ls -l | grep testdb
-rw-r--r-- 1 oracle dba 0 Aug 26 14:13 testdb_standby.ctl

теперь в bash можешь пользоваться кнопокой tab
набирай rm testdb жми tab высветится имя,а дальше

alpha-new:jet>mv 'testdb_standby.ctl
' testdb_standby.ctl

усе
26 авг 05, 12:08    [1819982]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка удаления старого бэкапа контролфайла.  [new]
Ааз
Member

Откуда: Москва/Протвино
Сообщений: 4274
plant
Потом я нашел в целевой базе и recovery базе записи содержащие искомые строки и исправил их, надеясь что мне удастся их удалить.
Следует читать - попортил recovery catalog. update'ами/delete'ами?
Кстати, а в target database чем правил? dbms_backup_restore?

Короче, почему бы тебе не пересоздать упр.файл? Сделай болванку через ALTER DATABASE BACKUP CONTROLFILE TO TRACE, убери мусор из .trc...

Всего
26 авг 05, 13:19    [1820410]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка удаления старого бэкапа контролфайла.  [new]
plant
Member

Откуда: Санкт-Петербург
Сообщений: 45
Видимо меня неправильно поняли, либо я не ясно выразился. Был файл с ентером я его переименовал в файл без ентера, а затем отредактировал запись в базе, чтобы тоже не было ентера. То есть рекомендуемые Вами действия я уже выполнил. Файл на диске так же переименован как и запись в базе, которую я с мог найти. Вероятно есть еще какие-то записи, о которых мне не известно: либо в рековери каталоге, либо в целевой базе.
26 авг 05, 13:20    [1820415]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка удаления старого бэкапа контролфайла.  [new]
plant
Member

Откуда: Санкт-Петербург
Сообщений: 45
Именно в dbms_backup_restore и правил с помощью TOADa. А чего я добьюсь пересозданием контролфайлы 2 летней давности?
26 авг 05, 13:25    [1820440]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка удаления старого бэкапа контролфайла.  [new]
Ааз
Member

Откуда: Москва/Протвино
Сообщений: 4274
plant
Именно в dbms_backup_restore и правил с помощью TOADa. А чего я добьюсь пересозданием контролфайлы 2 летней давности?
Не понял? Ты добьешься того, что в новом файле не будет никакой инфы ни о каких бэкапах. Так что твой uncatalog пройдет.
26 авг 05, 13:57    [1820610]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка удаления старого бэкапа контролфайла.  [new]
plant
Member

Откуда: Санкт-Петербург
Сообщений: 45
У меня используется recovery catalog, в котором кроме этой базы еще 4 есть, не хотелось бы заново создавать рековери базу.
26 авг 05, 14:10    [1820680]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка удаления старого бэкапа контролфайла.  [new]
mutate
Member

Откуда:
Сообщений: 155
предлагаю вернуть все обратно.. нихай этот перевод строки будет присутствовать.
проще я думаю рману передать "нужное" имя файла с переводом строки, чем ковырять каталог и ничего не сломать.
26 авг 05, 14:28    [1820766]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка удаления старого бэкапа контролфайла.  [new]
plant
Member

Откуда: Санкт-Петербург
Сообщений: 45
А как передать неверное имя если rman все время ошибку выводит. Когда пишешь с ентером, то видимо думает, что ты ошибся и интерпретирует как нормальное имя без ентера в названии файла.
Вообщем как будто по кругу ходишь. Но попробовать обратно вернуть все таки нужно.
26 авг 05, 14:40    [1820843]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка удаления старого бэкапа контролфайла.  [new]
plant
Member

Откуда: Санкт-Петербург
Сообщений: 45
Вернул обратно записи о неправильном имени файла:
RMAN> report obsolete;

RMAN-03022: compiling command: report
Report of obsolete backups and copies
Type Key Completion Time Filename/Handle
-------------------- ------ ------------------ --------------------
Datafile Copy 188915 31-DEC-03 /export/home/oracle/testdb
_standby.ctl

При вводе по тупому повторяя ентер в середине файла:

RMAN> change controlfilecopy '/export/home/oracle/testdb
2> _standby.ctl' uncatalog;

RMAN-03022: compiling command: change
RMAN-03026: error recovery releasing channel resources
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure during compilation of command
RMAN-03013: command type: change
RMAN-06004: ORACLE error from recovery catalog database: RMAN-20220: controlfile copy not found in the recovery catalog
RMAN-06090: error while looking up controlfile copy: /export/home/oracle/testdb_standby.ctl

Пытался ввести Ctrl+J интерпретирует как ентер, Alt+1+3 тоже самое. Есть ли еще какие-нибудь способы передать rmanу ентер в середине файла?
29 авг 05, 11:47    [1824467]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка удаления старого бэкапа контролфайла.  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18483
Попробуй
change controlfilecopy 188915 uncatalog;
29 авг 05, 12:13    [1824642]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка удаления старого бэкапа контролфайла.  [new]
plant
Member

Откуда: Санкт-Петербург
Сообщений: 45
Не получилось :-)

RMAN> change controlfilecopy 188915 uncatalog;

RMAN-03022: compiling command: change
RMAN-03026: error recovery releasing channel resources
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure during compilation of command
RMAN-03013: command type: change
RMAN-06014: command not implemented yet: controlfilecopy by key

RMAN>
29 авг 05, 12:34    [1824776]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка удаления старого бэкапа контролфайла.  [new]
plant
Member

Откуда: Санкт-Петербург
Сообщений: 45
Интересно почему по key не получилось удалить запись ведь в доке так и указано, что есть и такая возможность. Может быть только у меня не удается по каким либо внешним причинам.
29 авг 05, 12:42    [1824829]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка удаления старого бэкапа контролфайла.  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18483
Not implemented yet - проблемы в Oracle

А по TAG-у не пробовал?
30 авг 05, 02:00    [1827101]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка удаления старого бэкапа контролфайла.  [new]
plant
Member

Откуда: Санкт-Петербург
Сообщений: 45
Я так понимаю, чтобы использовать tag нужно было его при создании бэкапа указывать. А что за проблемы с Oracle?
30 авг 05, 10:07    [1827450]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка удаления старого бэкапа контролфайла.  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18483
Вячеслав Любомудров
Not implemented yet - проблемы в Oracle
Перевести не пробовал?


ТАКИ Я ЕГО ДОБИЛ (Oracle 8.1.7.4)
[oracle@lvl oracle]$ rman target / nocatalog

Recovery Manager: Release 8.1.7.4.0 - Production

RMAN-06005: connected to target database: FBSD (DBID=3353557142)
RMAN-06009: using target database controlfile instead of recovery catalog

RMAN> list copy of controlfile;

RMAN-03022: compiling command: list

List of Controlfile Copies
Key     S Completion time Ckp SCN    Ckp time        Name
------- - --------------- ---------- --------------- ------
4       A 30.08.05 18:17:10 5103119    30.08.05 17:54:05 /tmp/aa


Теперь под сисом в другом окошке
fbsd> select recid, stamp, substr(name, 1, 20) fname, file#, resetlogs_change#,
  2           creation_change#, checkpoint_change#, block_size
  3  from v$datafile_copy
  4  where recid = 4;

     RECID      STAMP FNAME                     FILE# RESETLOGS_CHANGE# CREATION_CHANGE# CHECKPOINT_CHANGE# BLOCK_SIZE
---------- ---------- -------------------- ---------- ----------------- ---------------- ------------------ ----------
         4  567713830 /tmp/aa                       0           4961608                0            5103119       8192

fbsd> exec dbms_backup_restore.deleteDataFileCopy(4, 567713830, '/tmp/aa', 0, 4961608, 0, 5103119, 8192, 1 /* Uncatalog */ )

PL/SQL procedure successfully completed.

И проверяем
RMAN> list copy of controlfile;

RMAN-03022: compiling command: list

RMAN>
Это без каталога

Получить имя файлика с переводом строки мне не удалось. Но я так понимаю, достаточно вытащить его в переменную и передавать ее в вызов процедуры
30 авг 05, 11:39    [1827891]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка удаления старого бэкапа контролфайла.  [new]
plant
Member

Откуда: Санкт-Петербург
Сообщений: 45
Огромное спасибо, Вячеслав Любомудров. С Вашей помощью мне удалось решить эту проблему.

SQL> exec dbms_backup_restore.deleteDataFileCopy(17, 514219886,'/export/home/oracle/testdb'||chr(10)||'_standby.ctl',0,1,0,465073334,8192,1)

PL/SQL procedure successfully completed.
30 авг 05, 15:15    [1829108]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка удаления старого бэкапа контролфайла.  [new]
Ааз
Member

Откуда: Москва/Протвино
Сообщений: 4274
plant
SQL> exec dbms_backup_restore.deleteDataFileCopy(17, 514219886,'/export/home/oracle/testdb'||chr(10)||'_standby.ctl',0,1,0,465073334,8192,1)
Ну наконец-то совместными усилиями ;-)... Старею, что ли. Даже в голову не пришло chr(10) присоветовать... Мдяяя

Всего
30 авг 05, 15:24    [1829146]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Ошибка удаления старого бэкапа контролфайла.  [new]
expimp
Member

Откуда:
Сообщений: 573
Столкнувшись с такой же проблемой решил ее проще. Вместо key подставил имя.

RMAN> change controlfilecopy '/storage5320/backup/prod/backup_control.ctl' delete;

Do you really want to delete the above objects (enter YES or NO)? YES

RMAN>
26 июл 07, 16:01    [4440617]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка удаления старого бэкапа контролфайла.  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18483
Гы
Тут проблема была не в синтаксисе, а в chr(10)
27 июл 07, 03:48    [4442968]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить