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

तालिका/विभाजन को एक अलग टेबलस्पेस में ले जाने से उक्त तालिका/विभाजन तक पहुंचने वाले प्रश्नों में बाधा उत्पन्न होगी?

यह ORA-08103: object no longer exists

Oracle में, पाठक और लेखक एक दूसरे को ब्लॉक नहीं करते हैं। जिसका अर्थ है कि डीएमएल और प्रश्न एक दूसरे के साथ हस्तक्षेप नहीं करेंगे, कुछ अजीब मामलों को छोड़कर, जैसे कि यूएनडीओ अंतरिक्ष से बाहर चलना। लेकिन एक टेबलस्पेस, या किसी भी प्रकार के ALTER या अन्य DDL स्टेटमेंट को स्थानांतरित करना सामान्य लेखन नहीं है। जब आप कम से कम शामिल वस्तुओं के लिए डीडीएल चलाते हैं, तो मल्टीवर्सन समवर्ती नियंत्रण मॉडल टूट जाता है, और अजीब चीजें होने लगती हैं।

एक बड़े कदम का परीक्षण करना मुश्किल है, लेकिन आप बहुत से छोटे बदलावों और प्रश्नों के माध्यम से इन त्रुटियों को पुन:उत्पन्न कर सकते हैं। यदि आपको लगता है कि यह केवल एक सैद्धांतिक मुद्दा है, तो मैंने देखा है कि ये त्रुटियां वास्तविक जीवन में, उत्पादन डेटाबेस पर होती हैं।

चेतावनी:नीचे अनंत लूप क्योंकि मैं भविष्यवाणी नहीं कर सकता कि इस त्रुटि को पुन:उत्पन्न करने में कितना समय लगेगा। लेकिन इसमें आमतौर पर मुझे केवल दस सेकंड लगते हैं।

--Create sample table.
drop table test1 purge;
create table test1(a number, b number)
partition by list(a) (partition p1 values(1), partition p2 values(2))
nologging tablespace users;

--Session 1
begin
  loop
    execute immediate '
      insert /*+ append */ into test1 select mod(level,2)+1, level
      from dual connect by level <= 100000';
    commit;
    execute immediate 'alter table test1 move partition p1 tablespace users';
  end loop;
end;
/       

--Session 2: Read from moved partition
declare
  v_count number;
begin
  loop
    select count(*) into v_count from test1 where a = 1;
  end loop;
end;
/

--Session 3: Read from unmoved partition
declare
  v_count number;
begin
  loop
    select count(*) into v_count from test1 where a = 2;
  end loop;
end;
/

सत्र 2 अंततः इसके साथ समाप्त हो जाएगा:

ORA-08103: object no longer exists
ORA-06512: at line 6

सत्र 3 विफल नहीं होगा, यह एक परिवर्तित विभाजन को क्वेरी नहीं कर रहा है। प्रत्येक विभाजन का अपना खंड होता है, और यह एक अलग वस्तु है जो संभावित रूप से "अब मौजूद नहीं" हो सकती है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. OracleParameter.Value को Int32 . में बदलें

  2. ओरेकल संग्रहीत प्रक्रिया को कैसे कॉल करें जिसमें जावा में उपयोगकर्ता द्वारा परिभाषित प्रकार शामिल है?

  3. कौन सा डाउनलोड करना है:JDK या JRE?

  4. पीएल/एसक्यूएल में अंडरस्कोर से बचें

  5. ऑरैकल में ट्रिगर को कैसे हटाएं जिसमें विशेष वर्ण हों?