Sebelum Oracle 12c, jika Anda ingin memindahkan file database, Anda harus mematikan database, atau membuat datafile/tablespace offline. Berikut adalah contoh langkah-langkah yang mungkin Anda ambil:
- UBAH TABLESPACE my_ts OFFLINE;
- !mv /old_dir/my_ts01.dbf /new_dir/my_ts01.dbf
- UBAH DATABASE GANTI NAMA FILE ‘/old_dir/my_ts01.dbf’ KE ‘/old_dir/my_ts01.dbf’;
- UBAH TABLESPACE my_ts ONLINE;
Sekarang di Oracle 12c, Anda dapat melakukan ini cukup sederhana dengan satu perintah dan pengguna lain dapat mengakses file pada waktu yang sama. Untuk mengilustrasikannya, saya akan membuat tablespace, dan saat memindahkannya, sesi lain mengakses file tersebut.
SQL> create tablespace move_me 2 datafile '/u01/app/oracle/oradata/ora12c/move_me01.dbf' size 5g; Tablespace created. SQL> create table system.test_tab (id number) tablespace move_me; Table created. SQL> insert into system.test_tab values (10); 1 row created. SQL> commit; Commit complete.
Sekarang mari kita mulai memindahkan file ini.
SQL> alter database move datafile 2 '/u01/app/oracle/oradata/ora12c/move_me01.dbf' to 3 '/u02/app/oracle/oradata/ora12c/move_me01.dbf';
Pada saat yang sama, di sesi lain, mari kita sisipkan satu baris ke dalam satu-satunya tabel di tablespace ini.
SQL> insert into system.test_tab values (20); 1 row created. SQL> commit;
Commit complete.
Seperti yang Anda lihat, transaksi diizinkan untuk diselesaikan meskipun kami sedang memindahkan file.
Saat file sedang bergerak, saya melihat konten dari kedua titik pemasangan.
[oracle@msp-test-ora12 ora12c]$ ls -l /u01/app/oracle/oradata/ora12c total 8769660 -rw-r----- 1 oracle oinstall 10043392 Sep 17 10:52 control01.ctl -rw-r----- 1 oracle oinstall 10043392 Sep 17 10:52 control02.ctl -rw-r----- 1 oracle oinstall 5368717312 Sep 17 10:52 move_me01.dbf -rw-r----- 1 oracle oinstall 52429312 Sep 17 10:52 redo01.log -rw-r----- 1 oracle oinstall 52429312 Sep 16 22:00 redo02.log -rw-r----- 1 oracle oinstall 52429312 Sep 17 02:00 redo03.log -rw-r----- 1 oracle oinstall 1090527232 Sep 17 10:52 sysaux01.dbf -rw-r----- 1 oracle oinstall 734011392 Sep 17 10:52 system01.dbf -rw-r----- 1 oracle oinstall 68165632 Sep 17 10:45 temp01.dbf -rw-r----- 1 oracle oinstall 471867392 Sep 17 10:52 undotbs01.dbf -rw-r----- 1 oracle oinstall 1073750016 Sep 17 02:06 users01.dbf [oracle@msp-test-ora12 ora12c]$ ls -l /u02/app/oracle/oradata/ora12c total 684044 -rw-r----- 1 oracle oinstall 5368717312 Sep 17 10:52 move_me01.dbfSeperti yang Anda lihat, file tersebut terletak di kedua tempat, sementara. Setelah beberapa waktu, perintah MOVE selesai dan kami melihat tabel kami memiliki semua data.
Database altered. SQL> select * From system.test_tab; ID ---------- 10 20Fitur baru ini akan sangat menghemat waktu saya. Sering kali, saya perlu memindahkan file karena beberapa alasan dan saya akan menggunakan fitur baru ini.