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

Oracle RAC में इनमेमोरी डुप्लीकेट कन्फ्यूजन

अधिकांश लोग शायद नई Oracle 12.1.0.2 सुविधा, InMemory डेटाबेस विकल्प के बारे में जानते हैं। Oracle RAC पर इस विकल्प का उपयोग करते समय, DBA DUPLICATE क्लॉज को निर्दिष्ट कर सकता है कि किसी ऑब्जेक्ट को सभी उदाहरणों में InMemory कॉलम स्टोर के बीच डुप्लिकेट किया जाए। यह खंड Oracle के इंजीनियर सिस्टम जैसे Exadata के लिए है। हालाँकि, गैर-इंजीनियर सिस्टम में, Oracle इस खंड की अनुमति देता है, लेकिन यह काम नहीं करता है जैसा कि कोई उम्मीद कर सकता है। उदाहरण के लिए, इस उदाहरण का अनुसरण करें, जो वर्चुअलबॉक्स के साथ मेरे मैकबुक प्रो पर दो-नोड आरएसी डेटाबेस पर चलाया गया था...निश्चित रूप से एक इंजीनियर सिस्टम नहीं है।

सबसे पहले, एक टेबल बनाई जाती है और फिर INMEMORY DUPLICATE के लिए बदल दी जाती है।

SQL> create table db_objs
 2 as select * From dba_objects;
Table created.
SQL> alter table db_objs inmemory duplicate;
Table altered.

क्या इस क्लॉज को सेट करने से कोई त्रुटि नहीं उत्पन्न होनी चाहिए क्योंकि यह एक गैर-इंजीनियर प्रणाली है?

तालिका यह दिखाने के लिए सत्यापित है कि DUPLICATE निर्दिष्ट है।

SQL> select inmemory,inmemory_duplicate 
 2 from user_tables where table_name='DB_OBJS';
INMEMORY INMEMORY_DUPL
-------- -------------
ENABLED  DUPLICATE

उदाहरण 1 पर एक साधारण "सेलेक्ट *" फॉर्म टेबल जारी किया जाता है। फिर हम यह सत्यापित कर सकते हैं कि टेबल इनमेमोरी है।

SQL> select inst_id,owner,segment_name,populate_status,inmemory_duplicate
 2 from gv$im_segments;
INST_ID    OWNER      SEGMENT_NA POPULATE_ INMEMORY_DUPL
---------- ---------- ---------- --------- -------------
         1 SCOTT      DB_OBJS    COMPLETED DUPLICATE

ध्यान दें कि ऊपर दिए गए परिणाम दिखाते हैं कि खंड केवल उदाहरण 1 में है। उदाहरण 2 में समान तालिका की पूछताछ की जाती है, लेकिन GV$IM_SEGMENTS को क्वेरी करने पर अभी भी केवल उदाहरण 1 दिखाई देता है।

उदाहरण 1 से:

SQL> select avg(object_id) from db_objs;
AVG(OBJECT_ID)
--------------
 11095.2049
Elapsed: 00:00:00.01
Execution Plan
----------------------------------------------------------
Plan hash value: 1349857420
---------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
---------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 5 | 10 (0)| 00:00:01 |
| 1 | SORT AGGREGATE | | 1 | 5 | | |
| 2 | TABLE ACCESS INMEMORY FULL| DB_OBJS | 21319 | 104K| 10 (0)| 00:00:01 |
---------------------------------------------------------------------------------------

उदाहरण 2 से:

 
SQL> select avg(object_id) from db_objs;
AVG(OBJECT_ID)
--------------
 11095.2049
Elapsed: 00:00:00.03
Execution Plan
----------------------------------------------------------
Plan hash value: 1349857420
---------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
---------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 5 | 4 (0)| 00:00:01 |
| 1 | SORT AGGREGATE | | 1 | 5 | | |
| 2 | TABLE ACCESS INMEMORY FULL| DB_OBJS | 21319 | 104K| 4 (0)| 00:00:01 |
---------------------------------------------------------------------------------------

तो किसी भी उदाहरण से, तालिका को INMEMORY एक्सेस किया गया था। लेकिन हम देख सकते हैं कि केवल इंस्टेंस 1 में सेगमेंट इनमेमोरी है।

सभी संकेत एक गैर-इंजीनियर प्रणाली पर काम करने के रूप में DUPLICATE क्लॉज की ओर इशारा करते हैं, जिसे हम जानते हैं कि यह एक त्रुटि है। DBA_TABLES इंगित करता है कि DUPLICATE यहां चल रहा है। व्याख्या योजना सहमति प्रदान करती है। लेकिन GV$IM_SEGMENTS असहमत है और दिखाता है कि इस सिस्टम में DUPLICATE काम नहीं कर रहा है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-01882:समय क्षेत्र क्षेत्र नहीं मिला

  2. Oracle में संयोजित तार उत्पन्न करने का तेज़ तरीका

  3. Oracle Varchar2 से गैर-ASCII वर्णों को खोजना और हटाना

  4. Oracle में sql ट्यूनिंग कैसे करें

  5. .NET . का उपयोग करके Oracle में बल्क इंसर्ट