इस ट्यूटोरियल में, मैं Oracle में DBMS_COMPARISON उपयोगिता पैकेज का उपयोग करके विभिन्न स्कीमाओं के दो डेटाबेस टेबल ऑब्जेक्ट्स की तुलना करने के लिए एक उदाहरण दे रहा हूँ।
DBMS_COMPARISON का उपयोग करके Oracle में दो टेबल ऑब्जेक्ट्स की तुलना करने के चरण
चरण-1 DBMS_COMPARISON का उपयोग करके तुलना बनाएं। निम्नलिखित उदाहरण में, यह एक ही डेटाबेस में SCOTT स्कीमा से एक तालिका और HR स्कीमा से एक तालिका की तुलना करेगा और emp_compare नामक एक तुलना बनाएगा। ।
BEGINDBMS_COMPARISON.create_comparison (तुलना_नाम => 'emp_compare ',schema_name => 'scott',object_name => 'emp',dblink_name => NULL,remote_schema_name => 'hr',remote_object_name => 'emp2');END;/
आउटपुट:
PL/SQL प्रक्रिया सफलतापूर्वक पूरी हुई।
चरण -2 उपरोक्त PL/SQL ब्लॉक को निष्पादित करने के बाद, तुलना बनाई जाएगी। अगला कदम इस तुलना को नीचे दिखाए अनुसार चलाना है।
सेट SERVEROUTPUT ONDECLAREt_scan_info DBMS_COMPARISON.comparison_type;l_diff BOOLEAN;BEGINl_diff :=DBMS_COMPARISON.compare (comparison_name => 'emp_compare) ',scan_info => t_scan_info,perform_row_dif => TRUE);अगर नहीं l_diff THENDBMS_OUTPUT.put_line('अंतर मिले और scan_id is' || t_scan_info.scan_id);ELSEDBMS_OUTPUT.put_line('कोई अंतर नहीं मिला।');END IF;;/
आउटपुट:
अंतर पाया गया और scan_id 7PL/SQL प्रक्रिया सफलतापूर्वक पूरी हो गई है।
चरण -3 यदि अंतर पाया जाता है तो आप निम्न क्वेरी द्वारा अंतर की जांच कर सकते हैं:
तुलना_नाम चुनें,स्थानीय_रोविद,remote_rowid,statusFROM user_comparison_row_difWHEREतुलना_नाम ='EMP_COMPARE ';
आउटपुट:
COMPARISON_NAME LOCAL_ROWID REMOTE_ROWID STATUS EMP_COMPARE AAAR3sAAEAAAAAAXAAA AAAU5vAAEAAAAW9AAA DIFEMP_COMPARE AAAR3sAAEAAAACXAAD AAAU5vAAEAAAAAAW9AAD DIFजैसा कि ऊपर दिखाया गया है, आपको आउटपुट मिलेगा। जिसमें यह आपको तुलना नाम, स्थानीय पंक्ति आईडी (scott.emp तालिका पंक्ति आईडी), दूरस्थ पंक्ति आईडी (hr.emp2 तालिका पंक्ति आईडी) और स्थिति दिखाएगा।
अंतर जांचने के लिए अब आप इन ROWIDs के लिए दोनों तालिकाओं को क्वेरी कर सकते हैं।
आप SQL क्वेरी का उपयोग करके अलग-अलग स्कीमा से दो टेबल डेटा की तुलना भी कर सकते हैं, जैसा कि नीचे दिए गए उदाहरण में दिखाया गया है।
Scott.emp से EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNOFROMचुनेंमाइनस ईएमपीएनओ, ईनाम, जॉब, एमजीआर, हायरडेट, एसएएल, कॉम, विभाग को hr.emp2 से चुनें;यह भी देखें:
- PL/SQL उदाहरण में एक स्ट्रिंग को विभाजित करें
- Oracle DUMP (dmp फ़ाइल) से DDL स्टेटमेंट निकालें