Oracle 12c से पहले, यदि आप किसी डेटाबेस की फ़ाइल को स्थानांतरित करना चाहते हैं, तो आपको या तो डेटाबेस को बंद करना होगा, या डेटाफ़ाइल/टेबलस्पेस को ऑफ़लाइन लेना होगा। यहां आपके द्वारा उठाए जा सकने वाले कदमों का एक उदाहरण दिया गया है:
- वैकल्पिक तालिका स्थान my_ts ऑफ़लाइन;
- !mv /old_dir/my_ts01.dbf /new_dir/my_ts01.dbf
- डेटाबेस का नाम बदलें '/old_dir/my_ts01.dbf' से '/old_dir/my_ts01.dbf';
- वैकल्पिक तालिका स्थान my_ts ऑनलाइन;
अब Oracle 12c में, आप इसे एक कमांड के साथ काफी सरलता से कर सकते हैं और दूसरा उपयोगकर्ता उसी समय फ़ाइल तक पहुँच सकता है। इसे स्पष्ट करने के लिए, मैं एक टेबलस्पेस बनाउंगा, और इसे स्थानांतरित करते समय एक और सत्र फ़ाइल तक पहुंच जाएगा।
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.
आइए अब इस फाइल की चाल शुरू करते हैं।
SQL> alter database move datafile 2 '/u01/app/oracle/oradata/ora12c/move_me01.dbf' to 3 '/u02/app/oracle/oradata/ora12c/move_me01.dbf';
उसी समय, एक अन्य सत्र में, इस टेबलस्पेस में एकमात्र तालिका में एक पंक्ति डालें।
SQL> insert into system.test_tab values (20); 1 row created. SQL> commit;. में डालें
Commit complete.
जैसा कि आप देख सकते हैं, लेन-देन को पूरा करने की अनुमति दी गई थी, भले ही हम फ़ाइल को स्थानांतरित करने के बीच में हों।
जब फ़ाइल चल रही थी तब मैंने दोनों आरोह बिंदुओं की सामग्री को देखा।
[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जैसा कि आप देख सकते हैं, फ़ाइल अस्थायी रूप से दोनों स्थानों पर स्थित है। कुछ समय बाद, MOVE कमांड पूरा हो जाता है और हम देखते हैं कि हमारी तालिका में सभी डेटा हैं।
Database altered. SQL> select * From system.test_tab; ID ---------- 10 20यह नई सुविधा मेरे लिए बहुत अच्छा समय बचाने वाली होगी। कई बार, मुझे कई कारणों से किसी फ़ाइल को स्थानांतरित करने की आवश्यकता होती है और मैं इस नई सुविधा का उपयोग करूंगा।