Oracle 11g New features - DBMS_COMPARISON - ilDBA Portal

Oracle 11g New features – DBMS_COMPARISON

22/03/2011 | פורסם על ידי

הדשא של השכן ירוק יותר ? בואו נשווה ונבדוק !

אנשים רבים סבורים לעיתים שהדשא של השכן ירוק יותר, אבל האם ניתן להשוות ולבדוק ?

לחברת אורקל העולמית אין עדיין את הפתרון שיסייע לכם להשוות את הדשא שלכם לדשא של השכן, אבל אם אתם רוצים להשוות בין טבלאות, סכמות ואפילו נתונים – Oracle11g נותן לכם את הפתרון !
החל מגרסת Oracle11g ישנה יכולת חדשה מובנת בתוך בסיס הנתונים, Package חדש אשר נקרא DBMS_COMPARISON.
בעזרת ה- Package הנ"ל תוכלו לבצע השוואה בין טבלאות, סכמות ואפילו נתונים, בין אם זה על אותו בסיס הנתונים, או בין שני בסיסי נתונים שונים.

להלן דוגמא אשר ממחישה את השימוש ב- Package החדש.

ראשית נבדוק כמה רשומות יש לנו בטבלה EMP בשתי סכמות שונות:

SQL> SELECT COUNT(*) FROM scott.emp UNION ALL SELECT COUNT(*) FROM tiger.emp;

COUNT(*)
----------
14
10

בתוצאות ניתן לראות כי יש הבדל בין שתי הטבלאות EMP בשתי הסכמות SCOTT ו- TIGER. כעת נשתמש ב- Package החדש:

SQL> EXEC dbms_comparison.create_comparison(
        comparison_name=>'compare_scott_tiger',
        schema_name=>'scott',
        object_name=>'emp',
        dblink_name=>null,
        remote_schema_name=>'tiger',
       remote_object_name=>'emp');
PL/SQL procedure successfully completed.

SET SERVEROUTPUT ON
DECLARE
   compare_info      dbms_comparison.comparison_type;
   compare_return    BOOLEAN;
BEGIN
   compare_return:=dbms_comparison.compare (comparison_name=>'compare_scott_tiger',
                                            scan_info=>compare_info,
                                            perform_row_dif=>TRUE);
   IF    compare_return = TRUE THEN
        dbms_output.put_line('Tables are equivalent.');
   ELSE
        dbms_output.put_line('Data is different.');
   dbms_output.put_line('Scan id: '||compare_info.scan_id);
END IF;
END;
/

Data is different.
Scan id: 2

PL/SQL procedure successfully completed.

התוצאות הנ"ל מראות שיש הבדל בין 2 הטבלאות. השליפה שלהלן תראה לנו שאכן יש הבדל של 4 רשומות בין 2 הטבלאות הנ"ל:

SELECT owner, comparison_name, scan_id, status, count_rows
FROM  DBA_COMPARISON_SCAN_SUMMARY;

OWNER       COMPARISON_NAME         SCAN_ID     STATUS                  COUNT_ROWS
----------  --------------------    ----------  --------------------    ---------------
SYSTEM      COMPARE_SCOTT_TIGER     2           ROW DIF                 4

השליפה שלהלן תראה לנו את הכתובות (ROWID) של אותן 4 רשומות חסרות:

SELECT local_rowid FROM DBA_COMPARISON_ROW_DIF WHERE scan_id = 2;

כעת כל שנותר לעשות הינו להעתיק את השורות החסרות. ניתן לבצע זאת ידנית ע"י הרצה של פקודת INSERT פשוטה תוך שימוש בשליפה מהטבלה הנ"ל וניתן גם להשתמש בפרוצדורה החדשה – DBMS_COMPARISON.CONVERGE:

INSERT INTO tiger.emp
  SELECT * FROM scott.emp
  WHERE ROWID IN (SELECT local_rowid FROM DBA_COMPARISON_ROW_DIF WHERE scan_id = 2);

DECLARE
   compare_info      dbms_comparison.comparison_type;
BEGIN
   dbms_comparison.converge(comparison_name=>'compare_scott_tiger',
                            scan_id=>2,
                            scan_info=>compare_info,
                            converge_options=>dbms_comparison.cmp_converge_remote_wins);
   dbms_output.put_line(' ----- The Results ----- ');
   dbms_output.put_line('Remote Rows Merged: '||compare_info.rmt_rows_merged);
END;
/

----- The Results -----
Remote Rows Merged: 4
PL/SQL procedure successfully completed.

להלן רשימת טבלאות ה- Data Dictionary החדשות הרלוונטיות לשימוש ב- DBMS_COMPARISON:

DBA_COMPARISON                DBA_COMPARISON_COLUMNS        DBA_COMPARISON_SCAN

DBA_COMPARISON_SCAN_SUMMARY   DBA_COMPARISON_SCAN_VALUES    DBA_COMPARISON_ROW_DIF

למידע נוסף כנסו לאתר אורקל: http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28419/d_comparison.htm

נתראה ברשומה הבאה!
עמי אהרונוביץ
ניתן ליצור קשר עם עמי דרך עמוד האודות שלו: אודות

השאר תגובה:

שם (חובה):
אימייל (לא יפורסם) (חובה):
תגובה (חובה):

*



מאמרים קשורים

MySQL

MySQL For Oracle DBA’s – בסיסי נתונים, טבלאות ומשתמשים

תודה שחזרתם, אחרי שראינו שבוע שעבר איך מתקינים את MySQL הגיע הזמן להבין קצת יותר, אז בואו נתחיל … Databases MySQL תומך בעד 32,000 בסיסי נתונים ב-Instance. כ-Oracle DBA אני משווה MySQL Database ל-Oracle Schema שכן הוא מחזיק [...]
MySQL

MySQL for Oracle DBA’s – התקנה וחיות אחרות

אני עוד זוכר שהתקנה של אורקל הייתה לוקחת יום ואפילו יומיים שלמים, גם היום להתקין אורקל יכול להיות משימה לא פשוטה במידה ומדובר ב-RAC ואו אנשי ה-SYSTEM לא סיפקו לנו סביבת Linux נאותה שיש בה את כל Packages [...]
MySQL

MySQL for Oracle DBA’s – ארכיטקטורה ומנועים

לאחר שהכרנו את ההיסטוריה של MySQL הגיע הזמן להכיר קצת יותר לעומק את הארכיטקטורה ואפילו להשוות אותה לזו של Oralce. ארכיטקטורה כ-DBA-ים מנוסים בטח תשימו לב שבדיוק כמו ל-Oracle ל-MySQL יש Optimizer שתפקידו לקבוע את [...]
MySQL

MySQL for Oracle DBA's – מבוא

פני מספר שנים רכשה אורקל את חברת SUN, רכישה זו כללה את בסיס הנתונים ה-OpenSource המוביל של אותם זמנים – MySQL. רבים שאלו אותי מה לדעתי יקרה עם MySQL האם הוא יטמע בתוך Oracle, האם אורקל  תחליט להרוג אותו או [...]
Copyright 2019 ilDBA Portal. Brought to you by Brillix - Israel Leading DBA company. Sponsored by: DBSnaps - Database Video Tutorialss
Website Security Test
%d בלוגרים אהבו את זה: