Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

12c Pindahkan File Data Online

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:

  1. UBAH TABLESPACE my_ts OFFLINE;
  2. !mv /old_dir/my_ts01.dbf /new_dir/my_ts01.dbf
  3. UBAH DATABASE GANTI NAMA FILE ‘/old_dir/my_ts01.dbf’ KE ‘/old_dir/my_ts01.dbf’;
  4. 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.dbf
Seperti 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
        20
 Fitur baru ini akan sangat menghemat waktu saya. Sering kali, saya perlu memindahkan file karena beberapa alasan dan saya akan menggunakan fitur baru ini. 

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menemukan dan menghapus karakter Non-ASCII dari Oracle Varchar2

  2. Apakah ada kueri Oracle SQL yang menggabungkan beberapa baris menjadi satu baris?

  3. Mengapa CONNECT BY LEVEL pada tabel mengembalikan baris tambahan?

  4. Transformasi Baris ke Kolom Oracle

  5. Permintaan Oracle untuk menemukan semua kemunculan karakter dalam sebuah string