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

2 महीने से पुराने विभाजन छोड़ें

सबसे पहले, मैं यह बताना चाहता हूं कि ओरेकल में विभाजन एक उन्नत विषय है, इसलिए आप शुरुआत में सभी डीडीएल को मैन्युअल रूप से चलाना चाह सकते हैं, जब तक कि आप डीडीएल स्क्रिप्ट चलाने के साथ पर्याप्त आश्वस्त न हों। मैं आपको यह भी सलाह दूंगा कि बिना समझ दोनों के इंटरनेट पर मिलने वाली स्क्रिप्ट को कभी भी न चलाएं यह और परीक्षण यह पूरी तरह से, विशेष रूप से डीडीएल स्क्रिप्ट।

अब इस मामले के लिए, आप को क्वेरी कर सकते हैं। *_TAB_PARTITIONS विभाजन सीमा को पुनः प्राप्त करने के लिए शब्दकोश दृश्य:

SQL> SELECT partition_name, high_value
  2    FROM user_tab_partitions
  3   WHERE table_name = 'TEST_TABLE';

PARTITION_NAME  HIGH_VALUE
--------------- --------------------------------------------------------
PT01122012      TO_DATE(' 2012-12-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS'
PT01022013      TO_DATE(' 2013-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS'
PT01042013      TO_DATE(' 2013-04-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS'
PT01062013      TO_DATE(' 2013-06-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS'
PT01082013      TO_DATE(' 2013-08-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS'

यह कॉलम LONG . प्रकार का है (=पदावनत LOB) इसलिए हमारे पास SQL ​​के साथ फ़िल्टर करने के लिए कुछ उपकरण हैं, हमें PL/SQL का उपयोग करना होगा।

SQL> BEGIN
  2     FOR cc IN (SELECT partition_name, high_value --
  3                  FROM user_tab_partitions
  4                 WHERE table_name = 'TEST_TABLE') LOOP
  5        EXECUTE IMMEDIATE
  6           'BEGIN
  7               IF sysdate >= ADD_MONTHS(' || cc.high_value || ', 2) THEN
  8                  EXECUTE IMMEDIATE
  9                     ''ALTER TABLE TEST_TABLE DROP PARTITION '
 10                     || cc.partition_name || '
 11                     '';
 12               END IF;
 13            END;';
 14     END LOOP;
 15  END;
 16  /

PL/SQL procedure successfully completed

SQL> SELECT partition_name, high_value
  2    FROM user_tab_partitions
  3   WHERE table_name = 'TEST_TABLE';

PARTITION_NAME  HIGH_VALUE
--------------- -----------------------------------------------------------
PT01022013      TO_DATE(' 2013-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 
PT01042013      TO_DATE(' 2013-04-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 
PT01062013      TO_DATE(' 2013-06-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 
PT01082013      TO_DATE(' 2013-08-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. sys_refcursor का वैकल्पिक

  2. Oracle AQ डेक्यू ऑर्डर

  3. RESULT_CACHE के लिए खाली RELIES_ON

  4. NLS_CHARSET_NAME () Oracle में फ़ंक्शन

  5. Oracle:तालिका से समूह में शामिल होने के साथ डुप्लिकेट हटाएं