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

Откуда:
Сообщений: 594
Хочу избавиться от логически корруптных блоков в них.
Собствеено проблема в огромном колличестве пртиций нпример:
в таблице SAPBW4"."/BIC/FIMP_TCPPA~09 800 партиций как мне перебрать все их?

alter index "SAPBW4"."/BIC/FIMP_TCPPA~09" REBUILD PARTITION "/BIC/FIMP_TCPPA0000000233";
10 июн 08, 11:07    [5785953]     Ответить | Цитировать Сообщить модератору
 Re: Как перестроить все партиционные индексы  [new]
__mike__
Member

Откуда: Белгород
Сообщений: 553
как один из методов - создать скрипт - что-то вроде этого
select 'alter index '||index_name||' rebuild partition '||partition_name||';'
from user_ind_partitions;
10 июн 08, 11:33    [5786200]     Ответить | Цитировать Сообщить модератору
 Re: Как перестроить все партиционные индексы  [new]
Corner
Member

Откуда:
Сообщений: 1270
SELECT 'ALTER INDEX '||P.INDEX_OWNER||'.'||P.INDEX_NAME||' REBUILD PARTITION '||P.PARTITION_NAME||';' 
FROM DBA_IND_PARTITIONS P, DBA_INDEXES I
WHERE I.INDEX_NAME=P.INDEX_NAME
  AND I.OWNER=P.INDEX_OWNER
  AND I.TABLE_NAME='SAPBW4'
10 июн 08, 11:34    [5786213]     Ответить | Цитировать Сообщить модератору
 Re: Как перестроить все партиционные индексы  [new]
matveev
Member

Откуда:
Сообщений: 594
Спасибо, пробую
10 июн 08, 12:01    [5786422]     Ответить | Цитировать Сообщить модератору
 Re: Как перестроить все партиционные индексы  [new]
matveev
Member

Откуда:
Сообщений: 594
SQL> SELECT 'ALTER INDEX '||P.INDEX_OWNER||'.'||P.INDEX_NAME||' REBUILD PARTITION '||P.PARTITION_NAME||';'
FROM DBA_IND_PARTITIONS P, DBA_INDEXES I
WHERE I.INDEX_NAME=P.INDEX_NAME
AND I.OWNER=P.INDEX_OWNER
AND I.TABLE_NAME= '"/BIC/FIMP_TCPPA~09"'

no rows selected

А ведь есть в ней они... может связать с all_indexes?
10 июн 08, 12:08    [5786475]     Ответить | Цитировать Сообщить модератору
 Re: Как перестроить все партиционные индексы  [new]
__mike__
Member

Откуда: Белгород
Сообщений: 553
SELECT 'ALTER INDEX '||P.INDEX_OWNER||'.'||P.INDEX_NAME||' REBUILD PARTITION '||P.PARTITION_NAME||';'
FROM DBA_IND_PARTITIONS P, DBA_INDEXES I
WHERE I.INDEX_NAME=P.INDEX_NAME
  AND I.OWNER=P.INDEX_OWNER
AND I.TABLE_NAME= '"/BIC/FIMP_TCPPA~09"'


а у вас так называется таблица?
вам же Corner привел полный скрипт - copy&paste глючит?
10 июн 08, 12:36    [5786642]     Ответить | Цитировать Сообщить модератору
 Re: Как перестроить все партиционные индексы  [new]
matveev
Member

Откуда:
Сообщений: 594
Все сработало - подставлял имя индекса вместо таблицы

SELECT 'ALTER INDEX '||P.INDEX_OWNER||'.'||P.INDEX_NAME||' REBUILD PARTITION '||P.PARTITION_NAME||';'
FROM DBA_IND_PARTITIONS P, ALL_INDEXES I
WHERE I.INDEX_NAME=P.INDEX_NAME
AND I.OWNER=P.INDEX_OWNER
AND I.TABLE_NAME= '/BIC/FIMP_TCPPA';
10 июн 08, 12:39    [5786661]     Ответить | Цитировать Сообщить модератору
 Re: Как перестроить все партиционные индексы  [new]
matveev
Member

Откуда:
Сообщений: 594
Как определить к чему это относится к табл или индексу?
Как с эти бороться?

ALTER INDEX "SAPBW4"."/BIC/FIMP_TCPPA~01" REBUILD PARTITION "/BIC/FIMP_TCPPA0000000897"
*
ERROR at line 1:
ORA-01578: ORACLE data block corrupted (file # 32, block # 652265)
ORA-01110: data file 32: '/oracle/BW2/sapdata4/bw4_20/bw4.data20'
ORA-26040: Data block was loaded using the NOLOGGING option
10 июн 08, 14:34    [5787582]     Ответить | Цитировать Сообщить модератору
 Re: Как перестроить все партиционные индексы  [new]
Халдурды Амандурдыевич Бердыев
Member

Откуда: Киргизский тракторист
Сообщений: 149
matveev
Как определить к чему это относится к табл или индексу?
dba_extents, содержимое alert.log/trc-файла, дамп блока, v$bh и т.д.


matveev
Как с эти бороться?
ORA-26040: Data block was loaded using the NOLOGGING option
10 июн 08, 14:45    [5787692]     Ответить | Цитировать Сообщить модератору
 Re: Как перестроить все партиционные индексы  [new]
__mike__
Member

Откуда: Белгород
Сообщений: 553
Note:28814.1
10 июн 08, 14:47    [5787714]     Ответить | Цитировать Сообщить модератору
 Re: Как перестроить все партиционные индексы  [new]
matveev
Member

Откуда:
Сообщений: 594
ORA-26040: Data block was loaded using the NOLOGGING option
т.е. блоки восстановились?
10 июн 08, 14:51    [5787754]     Ответить | Цитировать Сообщить модератору
 Re: Как перестроить все партиционные индексы  [new]
matveev
Member

Откуда:
Сообщений: 594
По ноте 28814.1 я и делал rebuild
также // выполняю ноту 437306.1 пытаюсь заболнить блоки большой таблицей с последующим ее удалением
10 июн 08, 14:56    [5787795]     Ответить | Цитировать Сообщить модератору
 Re: Как перестроить все партиционные индексы  [new]
matveev
Member

Откуда:
Сообщений: 594
SQL> select owner,segment_name,segment_type, EXTENT_ID, BLOCK_ID from dba_extents where file_id=35 and 652265 between block_id and block_id+blocks;

OWNER
------------------------------
SEGMENT_NAME
--------------------------------------------------------------------------------
SEGMENT_TYPE EXTENT_ID BLOCK_ID
------------------ ---------- ----------
SAPBW4
RSDDSTATAGGRDEF~0
INDEX 1477 648969
10 июн 08, 14:57    [5787805]     Ответить | Цитировать Сообщить модератору
 Re: Как перестроить все партиционные индексы  [new]
rebindex
Guest
rebuild без опции online использует старый индекс. Поэтому делай или drop/create или rebuild online.
10 июн 08, 15:03    [5787854]     Ответить | Цитировать Сообщить модератору
 Re: Как перестроить все партиционные индексы  [new]
matveev
Member

Откуда:
Сообщений: 594
Мне базу перевести в noarchive mode?

Oracle Error : ORA-26040: Data block was loaded using the NOLOGGING option

Cause: Trying to access data in block that was loaded without * redo generation using the NOLOGGING/UNRECOVERABLE option

Action: Drop the object containing the block.

где вставлять NOLOGGING?
10 июн 08, 15:08    [5787901]     Ответить | Цитировать Сообщить модератору
 Re: Как перестроить все партиционные индексы  [new]
matveev
Member

Откуда:
Сообщений: 594
online помог спасибо!!

SELECT 'ALTER INDEX '||'"'||P.INDEX_OWNER||'"'||'.'||'"'||P.INDEX_NAME||'"'||' REBUILD PARTITION '||'"'||P.PARTITION_NAME||'"'||' online'||';' FROM DBA_IND_PARTITIONS P, ALL_INDEXES I WHERE I.INDEX_NAME=P.INDEX_NAME
AND I.OWNER=P.INDEX_OWNER
AND I.TABLE_NAME= '/BIC/FIMP_TCPPA'
10 июн 08, 15:30    [5788162]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить