Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak przenieść partycjonowaną tabelę z jednego obszaru tabel do drugiego w Oracle 11g?

Musisz wziąć pod uwagę również indeksy, które mogą zostać unieważnione - aby odpowiedzieć na pytanie dotyczące resetowania domyślnych obszarów tabel, myślę, że jest to pełny proces, który będziesz chciał zaimplementować:

1) Przenieś partycje (pętla PL/SQL zgodnie z odpowiedzią zürigschnäzlets)

Oto procedury, których używam w anonimowym opakowaniu bloków, które definiują a_tname, a_destTS, vTname i vTspName - powinny dać ci ogólną ideę:

procedure mvTabPart (a_tname in varchar2, a_destTS in varchar2) is
cursor pCur(vTname varchar2, vTspName varchar2) is
  select table_name, partition_name
  from user_tab_partitions
  where table_name = vTname
      and tablespace_name not like vTspName
  order by partition_position desc;
begin
for pRow in pCur(a_tname, a_destTS) loop
 sqlStmnt := 'alter table '||pRow.table_name||
             ' move partition '||pRow.partition_name||
             ' tablespace '||a_destTS;
execute immediate sqlStmnt;
end loop;
end mvTabPart;

2) Ustaw domyślną przestrzeń tabel partycji, aby były tam tworzone nowe partycje:

Procedura
    procedure setDefTabPart (a_tname in varchar2, a_destTS in varchar2) is
    cursor tCur(vTname varchar2) is
      select table_name
      from user_part_tables
      where table_name = vTname;
    begin
    for tRow in tCur(a_tname) loop
     sqlStmnt := 'alter table '||tRow.table_name||
                 ' modify default attributes '||
                 ' tablespace '||a_destTS;
    execute immediate sqlStmnt;
    end loop;
end setDefNdxPart;

3) Ustaw domyślny obszar tabel partycji indeksu, aby nowe partycje indeksu (jeśli istnieją) były tworzone tam, gdzie chcesz:

procedure setDefNdxPart (a_tname in varchar2, a_destTS in varchar2) is
cursor iCur(vTname varchar2) is
  select index_name
  from user_part_indexes
  where index_name in (select index_name
             from user_indexes where table_name = vTname);
begin
for iRow in iCur(a_tname) loop
 sqlStmnt := 'alter index '||iRow.index_name||
             ' modify default attributes '||
             ' tablespace '||a_destTS;
execute immediate sqlStmnt;
end loop;

end setDefNdxPart;

4) odbuduj wszystkie indeksy partycjonowane, które wymagają odbudowy i nie znajdują się w żądanym obszarze tabel:

Procedura
procedure mvNdxPart (a_tname in varchar2, a_destTS in varchar2) is
cursor ndxCur(vTname varchar2, vTspName varchar2) is
select i.index_name index_name, ip.partition_name partition_name
  from user_ind_partitions ip, user_indexes i
  where i.index_name = ip.index_name
     and i.table_name = vTname
     and i.partitioned = 'YES'
     and (ip.tablespace_name not like vTspName or ip.status not like 'USABLE')
  order by index_name, partition_name ;
begin
for ndxRow in ndxCur(a_tname, a_destTS) loop
 sqlStmnt := 'alter index '||ndxRow.index_name||
             ' rebuild partition '||ndxRow.partition_name||
             ' tablespace '||a_destTS;
execute immediate sqlStmnt ;
end loop;
end mvNdxPart;

5) Odbuduj dowolne indeksy globalne

procedure mvNdx (a_tname in varchar2, a_destTS in varchar2) is
cursor ndxCur(vTname varchar2, vTspName varchar2) is
  select index_name
  from user_indexes
  where table_name = vTname
       and partitioned = 'NO'
       and (tablespace_name not like vTspName or status like 'UNUSABLE')
  order by index_name ;
begin
for ndxRow in ndxCur(a_tname, a_destTS) loop
 sqlStmnt := 'alter index '||ndxRow.index_name||
             ' rebuild tablespace '||a_destTS;
execute immediate sqlStmnt ;
end loop;
end mvNdx;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Słowo kluczowe „CONTINUE” w Oracle 10g PL/SQL

  2. Jak znaleźć adres URL bazy danych Oracle?

  3. Oracle SQL CASE WHEN ORA-00932:niespójne typy danych:oczekiwany CHAR otrzymał NUMBER 00932. 00000 - niespójne typy danych:oczekiwany %s otrzymał %s

  4. Instrukcja SQL łącząca Oracle i MS SQL Server

  5. Wiersze do kolumny w ORACLE