2010-06-04 18 views
10

के साथ प्रतिस्थापित करने के बाद पैकेज बॉडी से पुराने ओरेकल पीएल/एसक्यूएल स्रोत कोड को पुनर्प्राप्त कर सकता हूं। मैंने हेडर के साथ ओरेकल पीएल/एसक्यूएल पैकेज बनाया था और बहुत सारे कोड वाले बॉडी को बनाया था।क्या मैं नए कोड

बाद में, मैंने CREATE OR REPLACE PACKAGE BODY... कथन को अलग-अलग स्रोत कोड (जो वास्तव में मैं एक अलग पैकेज नाम के तहत सहेजना चाहता था) के साथ CREATE OR REPLACE PACKAGE BODY... कथन को फिर से चलाने के बाद उस निकाय से गलती से कोड को मिटा दिया।

क्या कोई तरीका है कि मैं पैकेज से अपने पुराने प्रतिस्थापित स्रोत कोड को पुनर्प्राप्त कर सकता हूं?

+4

सीवीएस/आदि के बारे में क्या? –

उत्तर

4

जब तक आप प्रवेश/DDL आदेशों की समीक्षा सक्षम है, या डेटाबेस का बैकअप है, तो जवाब लगभग निश्चित रूप से

डाटाबेस संग्रहित प्रक्रियाओं सहित परिभाषाएँ नहीं, है, हमेशा स्रोत कोड की तरह व्यवहार किया जाना चाहिए, और बनाए रखा एक कोड भंडार में

+3

डीबी सामान सहित किसी भी और सभी कोड पर स्रोत नियंत्रण आवश्यक है। छोटे वृद्धिशील परिवर्तन और लगातार चेक-इन निश्चित रूप से सॉफ़्टवेयर विकास को सुगम बनाने के लिए महत्वपूर्ण है। –

+0

आपकी टिप्पणियों के लिए धन्यवाद - दुर्भाग्य से मैंने इसे कठिन तरीका सीखा। वास्तव में जब मैं समाप्त हो गया था तो एसक्यूएल डेवलपर में "निर्यात डीडीएल" विकल्प का उपयोग करके कोड की हार्ड कॉपी को बचाने के लिए लगभग चारों ओर मिल गया - लेकिन कुछ आया और मैंने इसका ट्रैक खो दिया। वैसे भी - यह प्रकरण सुनिश्चित करता है कि मैं इसे फिर से नहीं भूलूंगा। – VVP

+0

यह सब हमारे साथ हुआ है। केवल 2 प्रकार के लोग हैं: जो बैकअप/उपयोग स्रोत नियंत्रण करते हैं, और जिनके पास कभी भी डेटा हानि नहीं होती है –

15

आप all_source पर फ़्लैशबैक क्वेरी का उपयोग करके इसे वापस प्राप्त करने में सक्षम हो सकते हैं।

उदा। अपने पैकेज शरीर, संस्करण 2 पर वर्तमान में है एक मानक उपयोगकर्ता के रूप में इस क्वेरी को निष्पादित:

SQL> select text 
    2 from all_source 
    3 where name = 'CARPENTERI_TEST' 
    4 and type = 'PACKAGE BODY'; 

TEXT 


package body carpenteri_test 
is 

procedure do_stuff 
is 
begin 
    dbms_output.put_line('version 2'); 
end do_stuff; 

end carpenteri_test; 

10 rows selected. 

मैं जानता हूँ कि मैं तो एक SYSDBA उपयोगकर्ता के रूप में जोड़ने के बाद 9:30 इस शाम के आसपास के बाद इसे बदला मैं इस क्वेरी भाग गया:

SQL> select text 
    2 from all_source 
    3 as of timestamp 
    4 to_timestamp('04-JUN-2010 21:30:00', 'DD-MON-YYYY HH24:MI:SS') 
    5 where name = 'CARPENTERI_TEST' 
    6 and type = 'PACKAGE BODY'; 

TEXT 
---------------------------------------------------------------------------- 

package body carpenteri_test 
is 

procedure do_stuff 
is 
begin 
    dbms_output.put_line('version 1'); 
end do_stuff; 

end carpenteri_test; 

10 rows selected. 

फ्लैशबैक पर अधिक जानकारी here मिल सकती है। टॉम Kyte भी demostrates कैसे all_source here के साथ फ्लैशबैक का उपयोग करने के लिए।

+0

द्वारा वर्णित फ्लैशबैक का उपयोग करना है - मैंने पहली बार कोशिश की एक (w/o टाइमस्टैम्प) और यह मुझे नवीनतम कोड दिया। फिर मैंने टाइमस्टैम्प जोड़ा और "अपर्याप्त विशेषाधिकार" त्रुटि मिली। इसे डीबीए को आगे बढ़ाएगा जो शायद मेरे लिए ऐसा कर सकता है। – VVP

+0

डीबीए का कहना है कि "all_source फ़्लैशबैक के साथ प्रयोग योग्य नहीं है"। – VVP

+0

टॉम क्यटे से इस लिंक पर अपने डीबीए को इंगित करें: http://asktom.oracle.com/pls/asktom/f?p=100:11TP:::P11_QUESTION_ID:6135698985750#13932884772332 –

संबंधित मुद्दे