בקטע הזה מופיע מידע על:
- התנהגות של Datastream לגבי נתונים שנשלפים ממסד נתונים של Oracle
- הגרסאות של מסד הנתונים Oracle שנתמכות ב-Datastream
- סקירה כללית של אופן ההגדרה של מסד נתונים של Oracle כמקור, כדי שאפשר יהיה להזרים ממנו נתונים ליעד
- מגבלות ידועות על שימוש במסד נתונים של Oracle כמקור
התנהגות
Datastream תומך בשתי שיטות לחילוץ שינויים בנתונים מקובצי יומן שינויים (redo) אונליין: קורא יומן בינארי של Oracle (Preview) ו-Oracle LogMiner.
בשיטה של קריאת יומן בינארי (גרסת Preview), נצפה ההתנהגות הבאה:
אם יש השהיה בקריאה כשמחולצים את השינויים מקובצי היומן אונליין, Datastream מחלץ את השינויים מקובצי יומן בארכיון.
השינויים שמתבצעים בזרם הנתונים משוכפלים ליעד רק אחרי שהם מאושרים. עסקאות שלא בוצעו או שבוטלו לא משוכפלות.
הקורא הבינארי תומך בשכפול של עמודות Oracle
VARCHAR2שארוכות מ-4,000 תווים.
בנוסף, Datastream תומך בתכונה Oracle LogMiner לחשיפת שינויים בנתונים. השיטה מתנהגת כך:
- אפשר לבחור את כל הסכימות או סכימות ספציפיות ממסד נתונים נתון, וגם את כל הטבלאות מהסכימות או טבלאות ספציפיות.
- כל הנתונים ההיסטוריים משוכפלים.
- כל השינויים בשפת הטיפול בנתונים (DML), כמו הוספות, עדכונים ומחיקות ממסדי הנתונים והטבלאות שצוינו, משוכפלים.
- Datastream משכפל את השינויים שבוצעו, ובמקרים מסוימים גם את השינויים שלא בוצעו, אל היעד. השינויים שלא בוצעו נקראים על ידי Datastream. במקרה של ביטול שינוי, רשומות הפלט של Datastream כוללות גם את הפעולה ההפוכה. לדוגמה, אם יש פעולת
INSERTשהוחזרה, רשומות הפלט יכללו גם פעולתDELETEתואמת. במקרה כזה, האירוע יופיע כאירועDELETEעם המאפייןROWIDבלבד.
ROWID מילוי חוסרים (backfill) מבוסס
ב-Oracle, ROWID היא עמודה וירטואלית שמאחסנת מזהים ייחודיים לשורות בטבלה. הערכים של ROWID משמשים את Datastream לפעולות מילוי חוסרים (backfill). לכן, מומלץ שלא לבצע פעולות שיכולות לשנות את הערכים של ROWID במסד הנתונים של Oracle במקור עד להשלמת פעולת המילוי החוזר.
הפעולות שיכולות לשנות את הערכים של ROWID כוללות:
העברה פיזית של שורות:
- פעולות ייצוא וייבוא: כשמייצאים טבלה ואז מייבאים אותה בחזרה, יכול להיות שהמיקום הפיזי של השורות ישתנה, וכתוצאה מכך יתקבלו ערכים חדשים של
ROWID. - הפקודה
ALTER TABLE (...) MOVE: העברה של טבלה למרחב טבלאות אחר יכולה לשנות את האחסון הפיזי ולהוביל לשינויים ב-ROWID. - פקודה
ALTER TABLE (...) SHRINK SPACE: הפקודה הזו מכווצת את הטבלה, ועשויה להזיז שורות ולהשפיע על ערכיROWIDשלהן. - פעולות חלוקה למחיצות: פיצול, מיזוג או העברה של מחיצות יכולים לשנות את המיקום הפיזי של השורות ואת הערכים שלהן
ROWID.
- פעולות ייצוא וייבוא: כשמייצאים טבלה ואז מייבאים אותה בחזרה, יכול להיות שהמיקום הפיזי של השורות ישתנה, וכתוצאה מכך יתקבלו ערכים חדשים של
פעולות פלאשבק:
- פקודה
FLASHBACK TABLE: שחזור טבלה למצב קודם כולל מחיקה והוספה מחדש של שורות, ולכן יצירת ערכיROWIDחדשים. -
FLASHBACK_TRANSACTION_QUERY: דומה ל-FLASHBACK TABLE. ביטול של טרנזקציה יכול לגרום לשינויים ב-ROWIDאם שורות נמחקו או עודכנו במהלך הטרנזקציה.
- פקודה
גרסאות
Datastream תומך בגרסאות הבאות של מסד הנתונים של Oracle:
- Oracle 11g, גרסה 11.2.0.4 (נתמכת רק בשיטת Logminer CDC)
- Oracle 12c, גרסה 12.1.0.2
- Oracle 12c, גרסה 12.2.0.1
- Oracle 18c
- Oracle 19c
- Oracle 21c
Datastream תומך בסוגים הבאים של מסדי נתונים של Oracle:
- אירוח עצמי בארגון או אצל ספק שירותי ענן כלשהו
- Amazon RDS ל-Oracle
- Oracle Cloud
- Oracle Exadata
- Oracle RAC
- מסד נתונים במצב המתנה של Oracle Active Data Guard
הגדרה
כדי להגדיר מסד נתונים של Oracle כמקור כך שניתן יהיה להזרים ממנו נתונים ליעד, צריך להגדיר את מסד הנתונים כך שתהיה גישה אליו, להגדיר רישום ביומן ולהגדיר מדיניות שמירת נתונים.
במאמר הגדרת מסד נתונים של Oracle כמקור מוסבר איך להגדיר את מסד הנתונים הזה כך ש-Datastream יוכל לשלוף ממנו נתונים ליעד.
שיטות מומלצות
בקטע הזה מתוארות שיטות מומלצות להגדרת מקור Oracle לשימוש ב-Datastream.
תלות באותיות רישיות בקורא בינארי
כשמגדירים מקור Oracle באמצעות שיטת ה-CDC של קורא בינארי ומציינים שמות של ספריות ליומני redo וארכיון, חשוב לדעת שהשמות תלויי אותיות רישיות. צריך לוודא שהאותיות בשמות הספריות שציינתם בפרופיל החיבור של Datastream זהות לאותיות בשמות הספריות במסד הנתונים של Oracle.
בו-זמניות (concurrency) של CDC
כדי למזער את השהיית השכפול, צריך לוודא ש-Datastream יכול לעבד את יומני ה-redo במהירות שבה מקור Oracle יוצר אותם. כשמשתמשים בשיטת ה-CDC של קורא הבינארי, המקביליות של Datastream היא ברמת קובץ יומן הפעולות החוזרות: כל משימה שמוגדרת על ידי maxConcurrentCdcTasks מעבדת קובץ אחד בכל פעם.
מומלץ להשתמש במתודולוגיה הבאה:
- כוונון בו-זמניות ב-Datastream: מזהים את המספר הממוצע של החלפות יומן Redo בשעות הפעילות של העסק ומגדירים את הפרמטר
maxConcurrentCdcTasksבהתאם. מידע נוסף זמין במאמר בנושא מספר מקסימלי של משימות CDC. - הגדרת החלפת יומנים ב-Oracle: מגדירים את Oracle להחלפת יומנים בתדירות גבוהה, למשל כל 10-20 דקות. כך נוצר זרם קבוע של יחידות עבודה קטנות יותר, שמאפשר למשימות המקבילות של Datastream לפעול במקביל בצורה יעילה.
מומלץ לבצע אופטימיזציה של ההגדרות כך שיהיו מספיק משימות מקבילות ב-Datastream כדי לטפל ביצירה התכופה של יומני שינויים קטנים יותר מ-Oracle. מידע נוסף על הגדרות של צפייה בו-זמנית בסטרימינג
מגבלות ידועות
מגבלות מוכרות על שימוש במסד נתונים של Oracle כמקור:
- הסטרימינג מוגבל ל-10,000 טבלאות. אם הסטרימינג כולל יותר מ-10,000 טבלאות, יכול להיות שיופיעו שגיאות.
- מקור הנתונים תומך בארכיטקטורת מולטי-טננט של Oracle (CDB/PDB), אבל אפשר לשכפל רק מסד נתונים אחד שניתן להוספה בזרם.
- אין תמיכה ב-Oracle Autonomous Database.
- בטבלאות שאין להן מפתח ראשי, Datastream משתמש ב-
ROWIDשל השורה כדי לבצע פעולת מיזוג בצד הצרכן. שימו לב: יכול להיות שהערך שלROWIDלא יהיה ייחודי. אם מוחקים שורה ומכניסים אותה מחדש באמצעות כלי הייצוא/הייבוא של Oracle, למשל, יכול להיות שהערך שלROWIDבשורה ישתנה. אם מוחקים שורה, מערכת Oracle יכולה להקצות מחדש אתROWIDשלה לשורה חדשה שנוספת מאוחר יותר. - אין תמיכה בטבלאות מאורגנות לפי אינדקס (IOT).
- אין תמיכה בטבלאות זמניות.
- העמודות עם סוגי הנתונים
ANYDATA, BFILE, INTERVAL DAY TO SECOND, INTERVAL YEAR TO MONTH, LONG/LONG RAW, SDO_GEOMETRY, UDT, UROWID, XMLTYPEלא נתמכות, והן מוחלפות בערכיםNULL. - כדי להזרים עמודות של סוגי נתונים של אובייקטים גדולים, כמו אובייקטים בינאריים גדולים (
BLOB), אובייקטים גדולים של תווים (CLOB) ואובייקטים גדולים של תווים לאומיים (NCLOB), צריך לכלול את הדגלstreamLargeObjectsבהגדרת הזרם. אם לא כוללים את הדגל, Datastream לא מעביר בסטרימינג עמודות כאלה והן מוחלפות בערכיםNULLביעד. למידע נוסף, ראו הפעלת סטרימינג של אובייקטים גדולים למקורות Oracle. - ב-Oracle 11g, לא נתמכות טבלאות עם עמודות מסוגי הנתונים
ANYDATAאוUDT, והטבלה כולה לא תשוכפל. - Oracle Label Security (OLS) לא משוכפל.
- הכלי Datastream מאחזר מעת לעת את הסכימה העדכנית מהמקור בזמן העיבוד של האירועים. אם סכימה משתנה, יכול להיות שחלק מהאירועים מהסכימה החדשה ייקראו בזמן שהסכימה הישנה עדיין מוחלת. במקרה כזה, Datastream מזהה את השינוי בסכימה, מפעיל אחזור של הסכימה ומעבד מחדש את האירועים שנכשלו.
- לא כל השינויים בסכימת המקור ניתנים לזיהוי אוטומטי, ובמקרה כזה עלול להתרחש שיבוש בנתונים. השינויים הבאים בסכימה עלולים לגרום לפגם בנתונים או לכך שהמערכת לא תעבד את האירועים בהמשך:
- הסרת עמודות
- הוספת עמודות באמצע הטבלה
- שינוי סוג הנתונים של עמודה
- שינוי הסדר של העמודות
- מחיקת טבלאות (רלוונטי אם הטבלה זהה ואז נוצרת מחדש עם נתונים חדשים)
- חיתוך טבלאות
- הכלי Datastream לא תומך בשכפול תצוגות.
- Datastream תומך בתצוגות מהותיות. עם זאת, צפיות חדשות שנוצרו בזמן שהסטרימינג פועל לא מתעדכנות באופן אוטומטי.
- כשמשתמשים בשיטה Oracle LogMiner, לא ניתן להשתמש בהצהרות
SAVEPOINT, והן עלולות לגרום לחוסר התאמה בנתונים במקרה של ביטול שינויים. - כשמשתמשים בשיטה Oracle LogMiner, Datastream לא תומך בשכפול של טבלאות ועמודות ששמותיהן ארוכים מ-30 תווים.
- Datastream תומך בקידודים הבאים של ערכות תווים למסדי נתונים של Oracle:
AL16UTF16AL32UTF8IN8ISCIIIW8ISO8859P8JA16SJISJA16SJISTILDEKO16MSWIN949US7ASCIIUTF8WE8ISO8859P1WE8ISO8859P9WE8ISO8859P15WE8MSWIN1252ZHT16BIG5
- הכלי Datastream לא תומך בשכפול של ערכי תאריך אפס. התאריכים האלה מוחלפים בערכים
NULL. - Datastream לא תומך בקישוריות ישירה למסדי נתונים באמצעות התכונה Single Client Access Name (שם גישה יחיד ללקוח, SCAN) בסביבות Oracle Real Application Clusters (אשכולות של אפליקציות בזמן אמת, RAC). מידע על פתרונות אפשריים מופיע במאמר התנהגות ומגבלות של מקור Oracle.
- אם המקור הוא מסד נתונים של Oracle Active Data Guard במצב המתנה, Datastream לא תומך בשכפול נתונים מוצפנים.
מגבלות נוספות כשמשתמשים בקורא הבינארי
הכלי לקריאת קבצים בינאריים לא תומך בתכונות הבאות:
- הצפנת מסד נתונים שקופה (TDE)
- Hybrid Columnar Compression
- קבצים מאובטחים
- אין תמיכה ב-ASM למקורות של Amazon RDS.
- שיטת ה-CDC של קורא הבינארי לא תומכת ב-Oracle 11g ובגרסאות קודמות.
המאמרים הבאים
- איך מגדירים מקור Oracle לשימוש ב-Datastream