טעינת נתונים מ-Oracle ל-BigQuery
כדי לתזמן העברות נתונים חוזרות ממסד הנתונים של Oracle ל-BigQuery, צריך ליצור הגדרת העברה כדי לציין אילו אובייקטים של נתונים להעביר, ובאיזו תדירות לתזמן את העברת הנתונים. אחרי שמגדירים את ההעברה, שירות העברת הנתונים ל-BigQuery מעביר את הנתונים העדכניים לטבלה ב-BigQuery לפי לוח הזמנים שצוין.
במאמר מבוא להעברות נתונים מ-Oracle מוסבר איך פועלת העברה מ-Oracle.
מגבלות
העברות של Oracle כפופות למגבלות הבאות:
- המספר המקסימלי של חיבורים בו-זמניים למסד נתונים של Oracle מוגבל, ולכן גם מספר ההפעלות של העברות בו-זמניות למסד נתונים יחיד של Oracle מוגבל לאותו מספר מקסימלי.
- אם אין כתובת IP ציבורית זמינה לחיבור למסד נתונים של Oracle, אתם צריכים להגדיר חיבור לרשת בהתאם לדרישות הבאות:
- צריכה להיות גישה למקור הנתונים מרשת המשנה שבה נמצא מחבר הרשת.
- מחבר הרשת לא יכול להיות ברשת המשנה בטווח
240.0.0.0/24. - אי אפשר למחוק חיבורי רשת אם יש חיבורים פעילים לחיבור. כדי למחוק חיבור לרשת, פנו ל-Cloud Customer Care.
- במספר האזורים
us, חיבור הרשת צריך להיות באזורus-central1. במספר האזוריםeu, חיבור הרשת צריך להיות באזורeurope-west4.
- אם חיבור הרשת נוצר בפרויקט ב- Google Cloud ששונה מהפרויקט ב- Google Cloud שבו נוצרה העברת הנתונים, צריך לתת את ההרשאות
compute.networkAttachments.getו-compute.networkAttachments.updateלסוכן השירות ששייך לפרויקט ב- Google Cloud שבו נוצרה העברת הנתונים. - מרווח הזמן המינימלי בין העברות חוזרות של Oracle הוא 15 דקות. מרווח הזמן שמוגדר כברירת מחדל להעברה חוזרת הוא 24 שעות.
- הגדרת העברה אחת יכולה לתמוך רק בהרצה אחת של העברת נתונים בזמן נתון. אם העברת נתונים שנייה מתוזמנת לפעול לפני שההעברה הראשונה מסתיימת, רק העברת הנתונים הראשונה תושלם, וכל העברת נתונים אחרת שחופפת להעברה הראשונה תבוטל.
- כדי למנוע דילוג על העברות בהגדרת העברה אחת, מומלץ להגדיל את משך הזמן בין העברות נתונים גדולות על ידי הגדרת תדירות החזרה.
- במהלך העברת נתונים, המחבר של Oracle מזהה עמודות מפתח שנוספו לאינדקס וחולקו למחיצות כדי להעביר את הנתונים בקבוצות מקבילות. לכן, כדי לשפר את הביצועים ולהפחית את שיעור השגיאות בהעברות הנתונים, מומלץ לציין עמודות של מפתחות ראשיים או להשתמש בעמודות שנוספו לאינדקס בטבלה.
- אם יש לכם אילוצים של מפתח ראשי או מפתח נוסף, אפשר ליצור קבוצות מקבילות רק בעמודות מהסוגים הבאים:
INTEGERTINYINTSMALLINTFLOATREALDOUBLENUMERICBIGINTDECIMALDATE
- בהעברות נתונים מ-Oracle שלא משתמשות במפתח ראשי או בעמודות שנוספו לאינדקס, אי אפשר להעביר יותר מ-2,000,000 רשומות לכל טבלה.
- אם יש לכם אילוצים של מפתח ראשי או מפתח נוסף, אפשר ליצור קבוצות מקבילות רק בעמודות מהסוגים הבאים:
- אם מחבר הרשת שהגדרתם והמכונה הווירטואלית (VM) נמצאים באזורים שונים, יכול להיות שהנתונים יועברו בין אזורים שונים כשמעבירים נתונים מ-Oracle.
מגבלות על העברות מצטברות
העברות מצטברות מ-Oracle כפופות למגבלות הבאות:- אפשר לבחור רק
TIMESTAMPעמודות כעמודות של סימני מים. - הטמעה מצטברת נתמכת רק בנכסים עם עמודות סימן מים תקינות.
- הערכים בעמודת סימן המים חייבים להיות בעלייה מונוטונית.
- העברות מצטברות לא יכולות לסנכרן פעולות מחיקה בטבלת המקור.
- הגדרת העברה אחת יכולה לתמוך רק בהטמעה מצטברת או בהטמעה מלאה.
- אי אפשר לעדכן אובייקטים ברשימה
assetאחרי ההפעלה הראשונה של הטמעה מצטברת. - אי אפשר לשנות את מצב הכתיבה בהגדרות ההעברה אחרי ההפעלה הראשונה של הטמעת הנתונים המצטברים.
- אי אפשר לשנות את עמודת סימן המים או את המפתח הראשי אחרי ההפעלה הראשונה של הטמעת הנתונים המצטברים.
- טבלת היעד ב-BigQuery מסודרת באשכולות באמצעות המפתח הראשי שסופק, והיא כפופה למגבלות של טבלאות מסודרות באשכולות.
- כשמעדכנים הגדרת העברה קיימת למצב הטמעה מצטברת בפעם הראשונה, העברת הנתונים הראשונה אחרי העדכון מעבירה את כל הנתונים הזמינים ממקור הנתונים. בכל העברת נתונים מצטברת שתתבצע לאחר מכן, יועברו רק השורות החדשות והמעודכנות ממקור הנתונים.
במאמר העברות מלאות או מצטברות מוסבר איך פועלות העברות מצטברות.
לפני שמתחילים
בקטעים הבאים מפורטים השלבים שצריך לבצע לפני שיוצרים העברה מ-Oracle.
דרישות מוקדמות של Oracle
- יוצרים פרטי כניסה של משתמש במסד הנתונים של Oracle.
- נותנים למשתמש הרשאות מערכת של
Create Sessionכדי לאפשר יצירת סשנים. - מקצים מרחב טבלאות לחשבון המשתמש.
כשיוצרים העברה מ-Oracle, צריך גם את הפרטים הבאים של מסד הנתונים של Oracle:
| שם הפרמטר | תיאור |
|---|---|
database |
השם של מסד הנתונים. |
host |
שם המארח או כתובת ה-IP של מסד הנתונים. |
port |
מספר היציאה של מסד הנתונים. |
username |
שם המשתמש לגישה למסד הנתונים. |
password |
סיסמה לגישה למסד הנתונים. |
דרישות מוקדמות ל-BigQuery
- מוודאים שביצעתם את כל הפעולות שנדרשות כדי להפעיל את שירות העברת הנתונים ל-BigQuery.
- יוצרים מערך נתונים ב-BigQuery כדי לאחסן את הנתונים.
- אם אתם מתכוונים להגדיר התראות על הפעלת העברות ב-Pub/Sub, ודאו שיש לכם את ההרשאה
pubsub.topics.setIamPolicyלניהול זהויות והרשאות גישה (IAM). אם אתם מגדירים רק התראות באימייל, אתם לא צריכים הרשאות Pub/Sub. למידע נוסף, קראו את המאמר התראות על הפעלות של שירות העברת הנתונים ל-BigQuery.
התפקידים הנדרשים ב-BigQuery
כדי לקבל את ההרשאות שדרושות ליצירת העברת נתונים בשירות העברת הנתונים ל-BigQuery, בקשו מהאדמין להקצות לכם את התפקיד אדמין ב-BigQuery (roles/bigquery.admin) ב-IAM בפרויקט.
כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
זהו תפקיד מוגדר מראש שכולל את ההרשאות שנדרשות ליצירת העברת נתונים בשירות העברת הנתונים ל-BigQuery. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
כדי ליצור העברת נתונים באמצעות שירות העברת הנתונים ל-BigQuery, צריך את ההרשאות הבאות:
-
הרשאות לשירות העברת נתונים ל-BigQuery:
-
bigquery.transfers.update -
bigquery.transfers.get
-
-
הרשאות ב-BigQuery:
-
bigquery.datasets.get -
bigquery.datasets.getIamPolicy -
bigquery.datasets.update -
bigquery.datasets.setIamPolicy -
bigquery.jobs.create
-
יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
מידע נוסף זמין במאמר מתן גישה ל-bigquery.admin.
טעינת נתונים מ-Oracle ל-BigQuery
כדי להוסיף נתוני Oracle ל-BigQuery, צריך להגדיר העברה באמצעות אחת מהאפשרויות הבאות:
המסוף
נכנסים לדף Data transfers במסוף Google Cloud .
Create transfer.
בקטע Source type, בשדה Source בוחרים באפשרות Oracle.
בקטע פרטי מקור הנתונים, מבצעים את הפעולות הבאות:
- בשדה Network attachment, בוחרים חיבור רשת קיים או לוחצים על Create Network Attachment.
- בשדה Host, מזינים את שם המארח או את כתובת ה-IP של מסד הנתונים.
- בשדה Port, מזינים את מספר היציאה שמשמש את מסד הנתונים של Oracle לחיבורים נכנסים, למשל
1521. - בשדה Database name, מזינים את השם של מסד הנתונים ב-Oracle.
- בשדה Connection type, מזינים את סוג כתובת ה-URL של החיבור:
SERVICE,SIDאוTNS. - בשדה Username, מזינים את שם המשתמש של המשתמש שיוזם את החיבור למסד הנתונים של Oracle.
- בשדה Password, מזינים את הסיסמה של המשתמש שמפעיל את החיבור למסד הנתונים של Oracle.
- בקטע מצב TLS, בוחרים אפשרות מהתפריט הנפתח. מידע נוסף על מצבי TLS זמין במאמר הגדרת TLS.
- בשדה Trusted PEM Certificate, מזינים את האישור הציבורי של רשות האישורים (CA) שהנפיקה את אישור ה-TLS של שרת מסד הנתונים. מידע נוסף זמין במאמר אישור שרת מהימן (PEM).
- בקטע סוג ההטמעה, בוחרים באפשרות מלאה או מצטברת.
- אם בוחרים באפשרות Incremental (תצוגה מקדימה), בשדה Write mode בוחרים באפשרות Append או Upsert. למידע נוסף על מצבי הכתיבה השונים, ראו העברות מלאות או מצטברות.
- בקטע Oracle objects to transfer, לוחצים על Browse:
- בוחרים את האובייקטים שרוצים להעביר למערך הנתונים של היעד ב-BigQuery. אפשר גם להזין ידנית בשדה הזה אובייקטים שרוצים לכלול בהעברת הנתונים.
- אם בחרתם באפשרות Append כמצב הכתיבה המצטברת, אתם צריכים לבחור עמודה שתשמש כעמודת סימן המים.
- אם בחרתם באפשרות עדכון או הוספה (upsert) כמצב הכתיבה המצטברת, אתם צריכים לבחור עמודה שתשמש כעמודת סימן המים, ואז לבחור עמודה אחת או יותר שתשמש כמפתח הראשי.
בקטע Destination settings, בשדה Dataset בוחרים את מערך הנתונים שיצרתם כדי לאחסן את הנתונים.
בקטע Transfer config name, בשדה השם המוצג, מזינים שם להעברת הנתונים.
בקטע אפשרויות תזמון:
- ברשימה Repeat frequency, בוחרים אפשרות כדי לציין את תדירות ההפעלה של העברת הנתונים. כדי להגדיר תדירות חזרה מותאמת אישית, לוחצים על בהתאמה אישית. אם בוחרים באפשרות On-demand, ההעברה תתבצע כשמפעילים אותה ידנית.
- אם רלוונטי, בוחרים באפשרות Start now או באפשרות Start at set time, ומציינים תאריך התחלה וזמן ריצה.
אופציונלי: בקטע Notification options, מבצעים את הפעולות הבאות:
- כדי להפעיל התראות באימייל, לוחצים על המתג התראות באימייל. כשמפעילים את האפשרות הזו, האדמין של ההעברה מקבל התראה באימייל אם הרצת ההעברה נכשלת.
- כדי להפעיל התראות על הפעלת העברות ב-Pub/Sub, לוחצים על המתג Pub/Sub notifications. אפשר לבחור את שם הנושא או ללחוץ על Create a topic כדי ליצור נושא.
לוחצים על Save.
BQ
מזינים את הפקודה bq mk ומציינים את הדגל ליצירת העברה --transfer_config:
bq mk --transfer_config --project_id=PROJECT_ID --data_source=DATA_SOURCE --display_name=DISPLAY_NAME --target_dataset=DATASET --params='PARAMETERS'
כאשר:
- PROJECT_ID (אופציונלי): מזהה הפרויקט ב- Google Cloud .
אם לא מציינים פרויקט מסוים באמצעות
--project_id, המערכת משתמשת בפרויקט שמוגדר כברירת מחדל. - DATA_SOURCE: מקור הנתונים –
oracle. - DISPLAY_NAME: השם המוצג של הגדרת ההעברה. שם העברת הנתונים יכול להיות כל ערך שמאפשר לכם לזהות את ההעברה אם תצטרכו לשנות אותה מאוחר יותר.
- DATASET: מערך הנתונים המטורגט להגדרות ההעברה.
PARAMETERS: הפרמטרים של הגדרות ההעברה שנוצרו, בפורמט JSON. לדוגמה:
--params='{"param":"param_value"}'. אלה הפרמטרים להעברת נתונים מ-Oracle:-
connector.networkAttachment(אופציונלי): שם חיבור הרשת שמשמש להתחברות למסד הנתונים של Oracle. -
connector.authentication.Username: שם המשתמש של חשבון Oracle. -
connector.authentication.Password: הסיסמה של חשבון Oracle. -
connector.database: השם של מסד הנתונים ב-Oracle. -
connector.endpoint.host: שם המארח או כתובת ה-IP של מסד הנתונים. -
connector.endpoint.port: מספר היציאה שמשמש את מסד הנתונים של Oracle לחיבורים נכנסים, למשל1520. -
connector.connectionType: סוג כתובת ה-URL של החיבור,SERVICE,SIDאוTNS. -
connector.tls.mode: מציינים הגדרת TLS לשימוש בהעברה הזו:-
ENCRYPT_VERIFY_CA_AND_HOSTכדי להצפין נתונים, ולאמת את רשות האישורים ואת שם המארח -
ENCRYPT_VERIFY_CAכדי להצפין נתונים, ולאמת את רשות האישורים בלבד -
ENCRYPT_VERIFY_NONEלהצפנת נתונים בלבד DISABLEללא הצפנה או אימות
-
-
connector.tls.trustedServerCertificate: (אופציונלי) מספקים אישור אחד או יותר בקידוד PEM. חובה רק אם הערך שלconnector.tls.modeהואENCRYPT_VERIFY_CA_AND_HOSTאוENCRYPT_VERIFY_CA. -
ingestionType: מצייניםfullאוincremental. העברות מצטברות נתמכות בגרסת טרום-השקה (Preview). למידע נוסף, קראו את המאמר העברות מלאות או מצטברות. -
writeMode: מצייניםWRITE_MODE_APPENDאוWRITE_MODE_UPSERT. -
watermarkColumns: ציון עמודות בטבלה כעמודות של סימני מים. השדה הזה נדרש להעברות מצטברות. -
primaryKeys: מציינים עמודות בטבלה כמפתחות ראשיים. השדה הזה נדרש להעברות מצטברות. -
assets: הנתיב לאובייקטים של Oracle שיועברו ל-BigQuery, בפורמט:DATABASE_NAME/SCHEMA_NAME/TABLE_NAME
-
כשמציינים כמה נכסים במהלך העברה מצטברת, הערכים של השדות watermarkColumns ו-primaryKeys תואמים למיקום של הערכים בשדה assets. בדוגמה הבאה, dep_id תואם לטבלה DB1/USER1/DEPARTMENT, ו-report_by ו-report_title תואמים לטבלה DB1/USER1/EMPLOYEES.
"primaryKeys":[['dep_id'], ['report_by','report_title']], "assets":["DB1/USER1/DEPARTMENT","DB1/USER1/EMPLOYEES"],
לדוגמה, הפקודה הבאה יוצרת העברת נתונים מ-Oracle בפרויקט ברירת המחדל עם כל הפרמטרים הנדרשים:
bq mk --transfer_config --target_dataset=mydataset --data_source=oracle --display_name='My Transfer' --params='{"assets":["DB1/USER1/DEPARTMENT","DB1/USER1/EMPLOYEES"], "connector.authentication.username": "User1", "connector.authentication.password":"ABC12345", "connector.database":"DB1", "connector.endpoint.host":"192.168.0.1", "connector.endpoint.port":1520, "connector.connectionType":"SERVICE", "connector.tls.mode": "ENCRYPT_VERIFY_CA_AND_HOST", "connector.tls.trustedServerCertificate": "PEM-encoded certificate", "connector.networkAttachment": "projects/dev-project1/regions/us-central1/networkattachments/na1" "ingestionType":"incremental", "writeMode":"WRITE_MODE_APPEND", "watermarkColumns":["createdAt","createdAt"], "primaryKeys":[['dep_id'], ['report_by','report_title']]}'
API
משתמשים ב-method projects.locations.transferConfigs.create ומספקים מופע של המשאב TransferConfig.
כדי להפעיל ידנית העברת נתונים מחוץ ללוח הזמנים הרגיל, אפשר להתחיל הרצה של מילוי חוסרים.
פתרון בעיות בהגדרת ההעברה
אם נתקלתם בבעיות בהגדרת העברת הנתונים, תוכלו לקרוא את המאמר בעיות בהעברת נתונים מ-Oracle.
המאמרים הבאים
- מהו שירות העברת הנתונים ל-BigQuery
- במאמר ניהול העברות מוסבר איך משתמשים בהעברות, כולל קבלת מידע על הגדרת העברה, הצגת רשימה של הגדרות העברה וצפייה בהיסטוריית ההרצה של העברה.
- במאמר טעינת נתונים באמצעות פעולות של BigQuery Omni מוסבר איך טוענים נתונים באמצעות פעולות של BigQuery Omni.