|
9i macht es möglich... ...Reorganisation im Online-Modus... oder wie verhindere ich Ausfallzeiten...
für dieses Beispiel legen wir eine Kopie der Tabelle emp an: connect scott/tiger create table emp2 as select * from scott.emp; alter table emp2 add constraint pk_emp2 primary key (empno); alter table emp2 add (constraint emp2 foreign key (deptno) references dept (deptno));
kann diese Tabelle im Online-Modus reorganisiert werden? exec dbms_redefinition.can_redef_table('SCOTT','EMP2')
...Hilfetabelle beschreiben... create table vor_emp2 ( empno number primary key not null, name varchar2(50), job varchar2(9), mgr number, datum date, verdienst number, bonus number, deptno number);
Reorganisation der Tabelle starten... exec dbms_redefinition.start_redef_table('SCOTT','EMP2','VOR_EMP2','EMPNO EMPNO, ENAME NAME, job job, mgr mgr, hiredate datum, SAL*1.5 VERDIENST, comm bonus, deptno deptno')
FOREIGN KEY erstellen und disablen... alter table vor_emp2 add (constraint fk_voremp2 foreign key (deptno) references dept (deptno)); alter table vor_emp2 disable constraint fk_voremp2;
Synchronisation der Tabelle starten... exec dbms_redefinition.sync_interim_table('SCOTT','EMP2','VOR_EMP2')
Änderungen können online durchgeführt werden... update emp2 set sal = 15000 where empno = 7900; commit;
Die Reorganisation wird beendet...und Sie konnten die ganze Zeit online arbeiten... exec dbms_redefinition.finish_redef_table('SCOTT','EMP2','VOR_EMP2')
|
|