Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как восстановить битый блок (индекс) на standby в SE One. dbms_repair в mount работает? / 25 сообщений из 35, страница 1 из 2
12.12.2012, 11:20:40
    #38075363
Как восстановить битый блок (индекс) на standby в SE One. dbms_repair в mount работает?
11.2.0.1, SE One
физический стендбай, в маунте.

Узнал что битый блок относится к индексу.
blockrecover в SE не работает.

вопрос по dbms_repair. Можно ли в mount использовать dbms_repair для пропуска неиспользуемого индекса?
...
Рейтинг: 0 / 0
12.12.2012, 12:22:06
    #38075533
Как восстановить битый блок (индекс) на standby в SE One. dbms_repair в mount работает?
Извините за глупые вопросы, но меня смущает это:
Код: plsql
1.
2.
После создания таблицы repair_table пакет DBMS_REPAIR можно запускать.
В эту таблицу будет заноситься информация обо всех повреждённых данных.


заноситься = писать в таблицу, а у меня StandBy в mount и в ReadOnly!

получается для standby в SE One данная фича бесполезна?
...
Рейтинг: 0 / 0
12.12.2012, 12:24:32
    #38075542
pravednik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить битый блок (индекс) на standby в SE One. dbms_repair в mount работает?
dbms_repair_in_mountМожно ли в mount использовать dbms_repair для пропуска неиспользуемого индекса?
у вас в маунте даже пакета dbms_repair не будет )

Что с этим индексом на продуктиве ?
...
Рейтинг: 0 / 0
12.12.2012, 14:33:53
    #38075814
Как восстановить битый блок (индекс) на standby в SE One. dbms_repair в mount работает?
pravednikdbms_repair_in_mountМожно ли в mount использовать dbms_repair для пропуска неиспользуемого индекса?
у вас в маунте даже пакета dbms_repair не будет )

Что с этим индексом на продуктиве ?

Индекс на рабочей БД есть. Стендбай физический.
При этом backup validate database ошибок не выдаёт на рабочем. А на StandBy выдаёт.

как быть и кто виноват?
...
Рейтинг: 0 / 0
12.12.2012, 14:48:19
    #38075851
pravednik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить битый блок (индекс) на standby в SE One. dbms_repair в mount работает?
dbms_repair_in_mountИндекс на рабочей БД есть.
Понятно, что есть. С ним все нормально ?
...
Рейтинг: 0 / 0
12.12.2012, 14:51:51
    #38075865
Как восстановить битый блок (индекс) на standby в SE One. dbms_repair в mount работает?
pravednikdbms_repair_in_mountИндекс на рабочей БД есть.
Понятно, что есть. С ним все нормально ?

а как я узнаю всё нормально или не всё нормально?
backup validate database ошибок НЕ выдаёт, в alert_log рабочей БД ошибки не вижу,
жалоб от пользователей тоже.
...
Рейтинг: 0 / 0
12.12.2012, 15:08:41
    #38075892
ASpens
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить битый блок (индекс) на standby в SE One. dbms_repair в mount работает?
dbms_repair_in_mountа как я узнаю всё нормально или не всё нормально?

А если на таблицу, по которой построен этот индекс, натравить:
Код: sql
1.
analyze table <schema>.<table> validate structure cascade online;


?
...
Рейтинг: 0 / 0
12.12.2012, 16:13:36
    #38076054
ЭтоЙа
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить битый блок (индекс) на standby в SE One. dbms_repair в mount работает?
ASpens,
если на источнике индекс целый, дык скопируй файл от туде в бэкап моде и делов то...
...
Рейтинг: 0 / 0
13.12.2012, 00:36:03
    #38076870
Как восстановить битый блок (индекс) на standby в SE One. dbms_repair в mount работает?
ЭтоЙаASpens,
если на источнике индекс целый, дык скопируй файл от туде в бэкап моде и делов то...
я так и думал поступить, но у меня табличное пространство большое, к которому принадлежит датафайл.
боюсь мне придётся не только этот один датафайл копировать, а сперва создать управляющий файл для стендбая:
Код: plsql
1.
alter database create standby controlfile as 'path\name01.ctl';


а затем перенести все датафайлы из табличного пространства, а это 350 Гб данных.

если создать управляющий файл и перенести только один датафайл, могут быть проблемы?
например, в новом управляющем файле будет отсутствовать информация о старых датафайлах.
ведь мы перенесём только один новый датафайл, а остальные переносить не будем.
...
Рейтинг: 0 / 0
13.12.2012, 00:46:03
    #38076879
pravednik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить битый блок (индекс) на standby в SE One. dbms_repair в mount работает?
dbms_repair_in_mountбоюсь мне придётся не только этот один датафайл копировать
Битые блоки индекса живут в нескольких датафайлах ?

dbms_repair_in_mountнапример, в новом управляющем файле будет отсутствовать информация о старых датафайлах.
ведь мы перенесём только один новый датафайл, а остальные переносить не будем.
С чего вдруг там не будет информации о "старых датафайлах" ?
...
Рейтинг: 0 / 0
13.12.2012, 00:57:37
    #38076888
Как восстановить битый блок (индекс) на standby в SE One. dbms_repair в mount работает?
pravednikdbms_repair_in_mountбоюсь мне придётся не только этот один датафайл копировать
Битые блоки индекса живут в нескольких датафайлах ?

dbms_repair_in_mountнапример, в новом управляющем файле будет отсутствовать информация о старых датафайлах.
ведь мы перенесём только один новый датафайл, а остальные переносить не будем.
С чего вдруг там не будет информации о "старых датафайлах" ?
ок. тогда последовательность такая ?

Код: plsql
1.
2.
3.
4.
5.
6.
1. alter database create standby controlfile as 'path\name01.ctl';
2. переименовываем name01.ctl в name02.ctl
3. alter tablespace tbs_01 begin backup;
4. копирование управляющих и одного битого датафайла на стенбай.
5. отслеживание undo tbs.
6.  alter tablespace tbs_01 end backup;
...
Рейтинг: 0 / 0
13.12.2012, 01:56:40
    #38076908
Как восстановить битый блок (индекс) на standby в SE One. dbms_repair в mount работает?
ребята, спасибо большое, все ок!

у меня осталось несколько к вам вопросов:

1. как быть когда битый блок будет на рабочей БД, а не на стендбай?
сможем ли мы ту же операцию проделать? т.е. в обратном направлении?

2. что делать если битый блок относится к системной таблице?
с помощью dbms_repair его починить нельзя.
...
Рейтинг: 0 / 0
13.12.2012, 02:14:55
    #38076913
Как восстановить битый блок (индекс) на standby в SE One. dbms_repair в mount работает?
рано я что-то обрадовался. то сперва oracle говорил что у меня индекс битый в файле данных 2.
файл данных два скопировал на стендбай. накат архивлогов пошёл, вроде было всё ок, теперь
oracle ругается на другой датафайл.

я не понимаю причины. возможно диск сбоит на стендбае?
...
Рейтинг: 0 / 0
13.12.2012, 08:32:23
    #38076984
BadRobot
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить битый блок (индекс) на standby в SE One. dbms_repair в mount работает?
dbms_repair_in_mount,
Ну тут логи ОС нужно смотреть уже.
А на боевой force logging включен?
Вроде если не включен, то операции с nologging не передаются на standby и, соответственно, вызывают там коррупнутые блоки.
...
Рейтинг: 0 / 0
13.12.2012, 11:41:47
    #38077262
Как восстановить битый блок (индекс) на standby в SE One. dbms_repair в mount работает?
BadRobotdbms_repair_in_mount,
Ну тут логи ОС нужно смотреть уже.
А на боевой force logging включен?
Вроде если не включен, то операции с nologging не передаются на standby и, соответственно, вызывают там коррупнутые блоки.
force logging включён!

У меня проблема такая: как выяснилось, Oracle ругается на ВСЕ датафайлы из табличного пространства.
Табличное пространство состоит из 10 датафайлов по 32 Гб.
На стендбае сперва появилась ошибка: что датафайл 5 содержит ошибку, коррумпированный блок.

Я воспользовался советом, который мне дали на этом форуме, скопировал датафайл 5 на стендбай.
Вроде всё ок было, я уже начал радоваться, как возникла такая же ошибка с датафайлом 2.
Я и его подобным образом скопировал на стендбай. Затем сбои в датафайле 3. Затем в датафайле 7.

Вчера проверял основную и резервную бд на наличие ошибок с помощью backup validate database
и на рабочей ошибок вообще не нашлось, а на стендбае были, но в одном датафайле.

я не пойму в чём дело. Запускал из Toad проверку таблицы, где битые индексы, проверка показала всё ок:
Normal, Successful Completion

Код: plsql
1.
2.
3.
SQL> analyze table c_dictionary validate structure cascade online;

Table analyzed.



а как далее из sqlplus посмотреть результат?
...
Рейтинг: 0 / 0
13.12.2012, 12:36:18
    #38077420
Как восстановить битый блок (индекс) на standby в SE One. dbms_repair в mount работает?
подскажите, пожалуйста, как посмотреть результат после


Код: plsql
1.
2.
3.
SQL> analyze table c_dictionary validate structure cascade online;

Table analyzed.


?
...
Рейтинг: 0 / 0
13.12.2012, 13:30:11
    #38077568
Как восстановить битый блок (индекс) на standby в SE One. dbms_repair в mount работает?
нашёл ответ на свой вопрос:

The ANALYZE command can be used to verify each data block in the analyzed object.
If any corruption is detected rows are added to the INVALID_ROWS table.

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
-- Create the INVALID_ROWS table
SQL> @C:\Oracle\901\rdbms\admin\UTLVALID.SQL

-- Validate the table structure.
SQL> ANALYZE TABLE scott.emp VALIDATE STRUCTURE;

-- Validate the table structure along with all it's indexes.
SQL> ANALYZE TABLE scott.emp VALIDATE STRUCTURE CASCADE;

-- Validate the index structure.
SQL> ANALYZE INDEX scott.pk_emp VALIDATE STRUCTURE;
...
Рейтинг: 0 / 0
13.12.2012, 15:44:57
    #38077972
Как восстановить битый блок (индекс) на standby в SE One. dbms_repair в mount работает?
pravednikdbms_repair_in_mountИндекс на рабочей БД есть.
Понятно, что есть. С ним все нормально ?

на рабочем с этой таблицей и индексом всё нормально! или можно сказать так:
в таблице invalid_rows записей нет.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SQL> @C:\Oracle\product\11.2.0\dbhome_1\RDBMS\ADMIN\utlvalid.sql

Table created.

SQL> analyze table prv validate structure cascade online;

Table analyzed.

SQL> select * from invalid_rows;

no rows selected



pravednik , какой можно сделать вывод? что сбой в дисковой системе на стендбае?
если на рабочей всё ок, а на стендбае нет.
...
Рейтинг: 0 / 0
13.12.2012, 15:59:27
    #38078030
pravednik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить битый блок (индекс) на standby в SE One. dbms_repair в mount работает?
dbms_repair_in_mountчто сбой в дисковой системе на стендбае?
Скорее всего
...
Рейтинг: 0 / 0
13.12.2012, 16:18:19
    #38078080
dba123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить битый блок (индекс) на standby в SE One. dbms_repair в mount работает?
dbms_repair_in_mount
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SQL> @C:\Oracle\product\11.2.0\dbhome_1\RDBMS\ADMIN\utlvalid.sql

Table created.

SQL> analyze table prv validate structure cascade online;

Table analyzed.

SQL> select * from invalid_rows;

no rows selected

если у вас есть стэнбай, то об этой табличке необходимо заранее позоботиться
измените скрипт на
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
create global temporary table INVALID_ROWS (
  owner_name         varchar2(30),
  table_name         varchar2(30),
  partition_name     varchar2(30),
  subpartition_name  varchar2(30),
  head_rowid         rowid,
  analyze_timestamp  date
) on commit preserve rows;

теперь после наката изменений, на стендбае в режиме RO можно запускать analyze
(TEMPORARY TABLESPACE должна быть lmt)
...
Рейтинг: 0 / 0
13.12.2012, 19:03:39
    #38078385
Как восстановить битый блок (индекс) на standby в SE One. dbms_repair в mount работает?
dba123 : спасибо большое!
а могли бы пояснить, что значит lmt?
авторTEMPORARY TABLESPACE должна быть lmt
...
Рейтинг: 0 / 0
13.12.2012, 19:07:08
    #38078392
Как восстановить битый блок (индекс) на standby в SE One. dbms_repair в mount работает?
dba123:

Данный скрипт
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
create global temporary table INVALID_ROWS (
  owner_name         varchar2(30),
  table_name         varchar2(30),
  partition_name     varchar2(30),
  subpartition_name  varchar2(30),
  head_rowid         rowid,
  analyze_timestamp  date
) on commit preserve rows;


я только на продуктиве запускаю?

или его можно и на стендбае запустить?

просто подумал, что если только на продуктиве скрипт запустить, то табличка с архивлогами
перекочует на стендбай.
...
Рейтинг: 0 / 0
14.12.2012, 08:33:11
    #38078859
dba123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить битый блок (индекс) на standby в SE One. dbms_repair в mount работает?
dbms_repair_in_mount,

запускать на промышленной
lmt - tablesapce with local management of extents (на это можно не смотреть, других сейчас надеюсь и не бывает)
накатываете журналы на резервную, поднимаете ее в RO и проверяете свои сегменты
не забудьте, что эта таблица временная, поэтому в скрипте указывайте spool в файл
...
Рейтинг: 0 / 0
14.12.2012, 11:48:40
    #38079120
Как восстановить битый блок (индекс) на standby в SE One. dbms_repair в mount работает?
dba123dbms_repair_in_mount,

запускать на промышленной
lmt - tablesapce with local management of extents (на это можно не смотреть, других сейчас надеюсь и не бывает)
накатываете журналы на резервную, поднимаете ее в RO и проверяете свои сегменты
не забудьте, что эта таблица временная, поэтому в скрипте указывайте spool в файл

проверьте, пожалуйста:

на StandBY:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
shu immediate;
startup open read only;
analyze table prv validate structure cascade online;
set lines 130;
spool c:\invalid_rows\invalid_rows.log
select * from invalid_rows;
spool off;



так?
...
Рейтинг: 0 / 0
14.12.2012, 11:52:29
    #38079133
Как восстановить битый блок (индекс) на standby в SE One. dbms_repair в mount работает?
наверное так:
Код: plsql
1.
2.
3.
4.
spool c:\invalid_rows\invalid_rows.log
analyze table prv validate structure cascade online;
select * from invalid_rows;
spool off;



spool ставим ПЕРЕД командой analyze table, а не после её. Да?
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как восстановить битый блок (индекс) на standby в SE One. dbms_repair в mount работает? / 25 сообщений из 35, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]