Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

12c डेटाफ़ाइलों को ऑनलाइन ले जाएँ

Oracle 12c से पहले, यदि आप किसी डेटाबेस की फ़ाइल को स्थानांतरित करना चाहते हैं, तो आपको या तो डेटाबेस को बंद करना होगा, या डेटाफ़ाइल/टेबलस्पेस को ऑफ़लाइन लेना होगा। यहां आपके द्वारा उठाए जा सकने वाले कदमों का एक उदाहरण दिया गया है:

  1. वैकल्पिक तालिका स्थान my_ts ऑफ़लाइन;
  2. !mv /old_dir/my_ts01.dbf /new_dir/my_ts01.dbf
  3. डेटाबेस का नाम बदलें '/old_dir/my_ts01.dbf' से '/old_dir/my_ts01.dbf';
  4. वैकल्पिक तालिका स्थान 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
 यह नई सुविधा मेरे लिए बहुत अच्छा समय बचाने वाली होगी। कई बार, मुझे कई कारणों से किसी फ़ाइल को स्थानांतरित करने की आवश्यकता होती है और मैं इस नई सुविधा का उपयोग करूंगा। 

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle 12.2.0.1 2016 में आ रहा है

  2. PLSQL में एकल उद्धरण से बचना

  3. @Query . का उपयोग करके स्प्रिंग बूट में फ़ाइल से क्वेरी प्राप्त करें

  4. Oracle 12c मूल्यों द्वारा पहचाना गया

  5. Oracle ड्रॉप टेबल यदि विकल्प मौजूद है