oracle: ALTER TABLE … MOVE

18.11.2021
oracle: ALTER TABLE … MOVE
alter table MAGICASH5.ECFIL030 move lob (OUT_BLOB_LOCATOR) store as (tablespace MG_TABLE)
DECLARE
*
ERROR at line 1:
ORA-01578: ORACLE data block corrupted (file # 17, block # 187321)
ORA-26040: Data block was loaded using the NOLOGGING option
ORA-01110: data file 17: ‘C:\ORACLE\ORADATA\MAGICASH\MG_TABLE02.DBF’
ORA-06512: at line 210

Итак поехали

— создаём табличное пространство
CREATE TABLESPACE MG_TABLE_LOB
DATAFILE ‘ C:\ORACLE\ORADATA\MAGICASH\MG_TABLE_LOB.dbf’ SIZE 1000M AUTOEXTEND ON;
— проверяем в каком tablespace таблица до MOVE
select * from dba_segments where segment_name=’ ECFIL030 ‘;
select * from dba_tables where table_name=’ ECFIL030′;
— проверяем индексы
— check index status
select index_name,status from dba_indexes where table_name
in (‘ECFIL030′,’CDR_UNBILLED’,’CDR_DATA_DUC’,’CDR_BILLED’);
— check index status for partition
select index_name,partition_name,status from dba_ind_partitions
where partition_name like ‘T%’ ;
— перемещаем таблицу в другое tablespace
alter table MAGICASH5.ECFIL030 move tablespace MG_TABLE_LOB;
— если много таблиц, то можно сгенерить команды
select ‘alter table quest.’|| table_name || ‘ move;’ from dba_tables where owner=’QUEST’;
— проверяем в каком tablespace таблица после MOVE
select * from dba_segments where segment_name=’ECFIL030′;
select * from dba_tables where table_name=’ECFIL030′;
— пересоздаём индексы таблицы, если они там были
— в этом примере пересоздаём индексы и переносим их в другое табличное пространство
alter index MAGICASH5 .IND_ECFIL030_TYPE rebuild tablespace MG_TABLE_LOB online;
— если много таблиц, то можно сгенерить команды
select ‘alter index quest.’|| index_name || ‘ rebuild online;’ from dba_indexes where owner=’QUEST’;
— проверяем индексы
select index_name,status from dba_indexes where table_name=’ECFIL030′;
посмотреть сегмент
select segment_name, segment_type, bytes
from dba_segments
where segment_name = ‘SYS_LOB0000030667C00043$$’;
select table_name, column_name, segment_name, index_name
from dba_lobs
where segment_name = ‘SYS_LOB0000030667C00043$$’;
select index_name,status from dba_indexes where table_name
in (‘ECFIL030′,’CDR_UNBILLED’,’CDR_DATA_DUC’,’CDR_BILLED’);
select * from dba_segments where segment_name=’ECFIL030′;
select * from dba_tables where table_name=’ECFIL030′;
select index_name,status from dba_indexes where table_name=’ECFIL030′;
Менеджер
Екатерина
Ведущий специалист
Консультация специалиста
Наш менеджер перезвонит вам в течении 20 минут

Менеджер
Анастасия
Эксперт
+7 (917) 159-30-11
Оставить заявку
Наш специалист свяжется с вами в течении 20 минут

Менеджер
Хорошова Анастасия
Сметчик
+7 000-00-99
Заказать расчет
Бесплатный расчет сметы в течении одного дня