טעינת נתונים מ-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.
- מרווח הזמן המינימלי בין העברות חוזרות של 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, ודאו שיש לכם הרשאה לניהול זהויות והרשאות גישה (IAM)
pubsub.topics.setIamPolicy. אם מגדירים רק התראות באימייל, לא צריך הרשאות Pub/Sub. מידע נוסף זמין במאמר בנושא התראות על הפעלת שירות העברת נתונים ל-BigQuery.
התפקידים הנדרשים ב-BigQuery
כדי לקבל את ההרשאות שנדרשות ליצירת העברת נתונים באמצעות שירות העברת נתונים ל-BigQuery, צריך לבקש מהאדמין להקצות לכם את תפקיד BigQuery Admin (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, מגדירים העברה באמצעות אחת מהאפשרויות הבאות:
המסוף
עוברים לדף 'העברות נתונים' במסוף Google Cloud .
לוחצים על Create transfer (יצירת העברה).
בקטע Source type, בשדה Source, בוחרים באפשרות Oracle.
בקטע Data source details (פרטים של מקור הנתונים), מבצעים את הפעולות הבאות:
- בקטע Network attachment (צירוף לרשת), בוחרים צירוף קיים לרשת או לוחצים על Create Network Attachment (יצירת צירוף לרשת).
- בשדה מארח, מזינים את שם המארח או את כתובת ה-IP של מסד הנתונים.
- בשדה יציאה, מזינים את מספר היציאה שמשמש את מסד הנתונים של Oracle לחיבורים נכנסים, כמו
1521. - בשדה שם מסד הנתונים, מזינים את השם של מסד הנתונים של Oracle.
- בקטע סוג החיבור, מזינים את סוג כתובת ה-URL של החיבור:
SERVICE,SIDאוTNS. - בשדה Username (שם משתמש), מזינים את שם המשתמש של המשתמש שיזם את החיבור למסד הנתונים של Oracle.
- בשדה סיסמה, מזינים את הסיסמה של המשתמש שיזם את החיבור למסד הנתונים של Oracle.
- בתפריט הנפתח TLS Mode (מצב TLS), בוחרים באחת מהאפשרויות. מידע נוסף על מצבי TLS זמין במאמר בנושא הגדרת TLS.
- בשדה Trusted PEM Certificate (אישור PEM מהימן), מזינים את האישור הציבורי של רשות האישורים (CA) שהנפיקה את אישור ה-TLS של שרת מסד הנתונים. מידע נוסף זמין במאמר אישור שרת מהימן (PEM).
- בקטע סוג ההעברה, בוחרים באפשרות מלאה או מצטברת.
- אם בוחרים באפשרות מצטבר (תצוגה מקדימה) במצב כתיבה, בוחרים באפשרות הוספה או עדכון והוספה. מידע נוסף על מצבי הכתיבה השונים זמין במאמר העברות מלאות או מצטברות.
- כדי להעביר אובייקטים של Oracle, לוחצים על עיון:
- בוחרים את האובייקטים שרוצים להעביר למערך הנתונים של היעד ב-BigQuery. אפשר גם להזין באופן ידני את כל האובייקטים שרוצים לכלול בהעברת הנתונים בשדה הזה.
- אם בחרתם באפשרות הוספה כמצב הכתיבה המצטבר, אתם חייבים לבחור עמודה כעמודת סימן המים.
- אם בחרתם באפשרות Upsert (עדכון והוספה) כמצב הכתיבה המצטבר, אתם צריכים לבחור עמודה כעמודת סימן המים, ואז לבחור עמודה אחת או יותר כמפתח הראשי.
בקטע הגדרות יעד, בשדה מערך נתונים, בוחרים את מערך הנתונים שיצרתם לאחסון הנתונים.
בקטע Transfer config name (שם הגדרת ההעברה), בשדה Display name (שם מוצג), מזינים שם להעברת הנתונים.
בקטע אפשרויות תזמון:
- ברשימה תדירות החזרה, בוחרים אפשרות כדי לציין באיזו תדירות יתבצע העברת הנתונים. כדי לציין תדירות חזרה מותאמת אישית, בוחרים באפשרות בהתאמה אישית. אם בוחרים באפשרות על פי דרישה, ההעברה הזו תתבצע כשמפעילים אותה באופן ידני.
- אם רלוונטי, בוחרים באפשרות התחלה מיידית או התחלה בשעה שנקבעה, ומזינים תאריך התחלה ומשך הפעלה.
אופציונלי: בקטע אפשרויות התראות, מבצעים את הפעולות הבאות:
- כדי להפעיל התראות באימייל, לוחצים על המתג התראות באימייל. אם מפעילים את האפשרות הזו, האדמין של ההעברה מקבל התראה באימייל כשהרצת ההעברה נכשלת.
- כדי להפעיל התראות על הפעלת העברה ב-Pub/Sub להעברה הזו, לוחצים על המתג Pub/Sub notifications. אפשר לבחור את שם הנושא או ללחוץ על יצירת נושא כדי ליצור נושא.
לוחצים על 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כדי להצפין נתונים ולאמת את ה-CA ואת שם המארח -
ENCRYPT_VERIFY_CAלהצפנת נתונים ולאימות CA בלבד -
ENCRYPT_VERIFY_NONEלהצפנת נתונים בלבד -
DISABLEללא הצפנה או אימות
-
-
connector.tls.trustedServerCertificate: (אופציונלי) מציינים אישור אחד או יותר בפורמט PEM. חובה רק אם הערך שלconnector.tls.modeהואENCRYPT_VERIFY_CA_AND_HOSTאוENCRYPT_VERIFY_CA. -
ingestionType: מצייניםfullאוincremental. העברות מצטברות נתמכות בגרסת טרום-השקה. מידע נוסף זמין במאמר בנושא העברות מלאות או מצטברות. -
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
משתמשים בשיטה projects.locations.transferConfigs.create ומספקים מופע של המשאב TransferConfig.
כדי להפעיל העברת נתונים ידנית מחוץ ללוח הזמנים הרגיל, אפשר להתחיל הרצה של מילוי חוסרים.
פתרון בעיות בהגדרת ההעברה
אם נתקלתם בבעיות בהגדרת העברת הנתונים, כדאי לעיין במאמר בעיות בהעברה של Oracle.
המאמרים הבאים
- מידע נוסף על שירות העברת נתונים ל-BigQuery זמין במאמר מהו שירות העברת נתונים ל-BigQuery.
- במאמר ניהול העברות מוסבר איך להשתמש בהעברות, כולל איך לקבל מידע על הגדרות העברה, איך לראות רשימה של הגדרות העברה ואיך לראות את היסטוריית ההרצה של העברה.
- איך טוענים נתונים באמצעות פעולות BigQuery Omni