Документ создан: 16.02.2010

Индексы

Пересоздать все UNUSABLE-индексы

set serveroutput on
begin
  for i in (select owner,index_name 
            from dba_indexes 
            where status = 'UNUSABLE' 
                  and index_name not like 'SYS_%')
  loop
    execute immediate 'alter index '||i.owner||'.'||i.index_name||' rebuild';
  end loop;
end;
/

Перенос определённого partitioned index в другое табличное пространство

set serveroutput on 
begin
  for i in (select index_owner,index_name, partition_name,tablespace_name,status 
            from DBA_IND_PARTITIONS 
            where index_name='FILEDS_INDX1_PAR' and tablespace_name='TS')
  loop
    execute immediate 'alter index '||i.index_owner||'.'
            ||i.index_name||' rebuild partition '||i.partition_name
            ||' tablespace TS_INDX';
  end loop;
end;
/

Связь таблиц в схеме

select ucc1.table_name
     , ucc1.column_name
     , ucc1.constraint_name
     , uc1.table_name master_table
     , uc1.constraint_name master_constraint_name
     , ucc2.column_name master_column_name
from user_cons_columns ucc1
   , user_cons_columns ucc2
   , user_constraints uc1
   , user_constraints uc2
where uc1.constraint_type='P'
  and ucc2.constraint_name = uc1.constraint_name
  and uc2.r_constraint_name = uc1.constraint_name
  and ucc1.constraint_name = uc2.constraint_name
order by ucc1.table_name;

Пересоздание связей

Сегментирование таблиц не может быть выполнено на существующей таблице. Для этого выполняется создание сегментированной таблицы схожей по структуре с исходной, но без данных. Для соблюдения целостности данных рекомендуется, перед переносом данных из исходной таблицы в сегментированную, переименовать исходную таблицу. В этом случае все связи автоматически перенастраиваются на переименованную таблицу и для восстановления связей с сегментированной таблицей их нужно пересоздать. Нижеприведённый запрос формирует строки удаления констрейнтов и создания новых.

select 'alter table '
            || ucc1.table_name
            || ' drop constraint '
            ||ucc1.constraint_name
            ||';'
            ||chr(10)
            ||
       'alter table '
            ||ucc1.table_name
            || ' add constraint '
            ||ucc1.constraint_name
            ||' foreign key ('||ucc1.column_name||') '
            ||'references <VALID_TABLE_NAME> ('||ucc2.column_name||')'
            || decode(uc2.delete_rule, 'NO ACTION', NULL,' on delete '||uc2.delete_rule)
            ||' ;'
from user_cons_columns ucc1
   , user_cons_columns ucc2
   , user_constraints uc1
   , user_constraints uc2
where uc1.constraint_type='P'
  and uc1.table_name = '<VALID_TABLE_NAME>'
  and ucc2.constraint_name = uc1.constraint_name
  and uc2.r_constraint_name = uc1.constraint_name
  and ucc1.constraint_name = uc2.constraint_name
order by ucc1.table_name;
 
Recent changes RSS feed Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki Donate