Jan 6, 2006

Hal penting dalam "READ ONLY" Tablespace

·

Pada saat-saat tertentu, misalnya pada saat kita akan melakukan backup data, maka tablespace-tablespace yang akan dipindahkan tersebut harus dalam keadaan READ ONLY. Bagaimana cara membuat tablespace menjadi read only? Berikut ini bentuk umum untuk melakukan hal tersebut.

alter tablespace nama_tablespace READ ONLY

Namun penting sekali untuk diperhatikan bahwa apabila kita akan melakukan ALTER tablespace, maka kita harus mematikan semua transaksi yang berhubungan dengan tablespace tersebut. Sebagai contoh, apabila kita memiliki tablespace dengan nama TS_CONTOH yang di dalamya terdapat tabel T_COBA, maka kita harus memastikan bahwa tabel T_COBA tersebut tidak dalam keadaan aktif atau sedang digunakan.

Berikut ini error yang akan muncul pada saat saya melakukan ALTER tablespace tapi masih terdapat user-user lain yang sedang menggunakan sebuah tabel di dalam tabelspace tersebut (misalnya mereka mengaksesnya dari sebuah aplikasi tertentu).

SQL> alter tablespace ts_contoh read only
alter tablespace ts_contoh read only
*
ERROR at line 1:
ORA-01640: cannot make tablespace read only with active transactions

Hal lain yang perlu diperhatikan juga adalah apabila tablespace masih dalam keadaan READ ONLY, maka kita tidak dapat melakukan transaksi terhadap tabel-tabel yang terdapat di dalam tablespace tersebut. Sebagai contoh, misalnya tablespace TS_CONTOH di atas sudah dalam keadaan read only, dan saya melakukan statemen berikut:

SQL> insert into t_coba (x) values (1000);

Maka saya akan mendapatkan error seperti berikut:

ERROR at line 1:
ORA-00372: file 6 cannot be modified at this time
ORA-01110: data file 6: 'C:\ORACLE\PRODUCT\10.1.0\DB\ORADATA\LATIH.DBF'

Angka 6 di atas tentu akan tergantung pada datafile yang Anda gunakan di dalam komputer Anda. Maka dari itu, sebelum melakukan transaksi dalam suatu tabel, maka pastikan tablespace dari tabel tersebut berada dalam keadaan aktif. Adapun cara mengaktifkan tablespace yang masih dalam keadaan read only adalah dengan cara berikut:

alter tablespace nama_tablespace READ WRITE

0 comments: