בדף הזה מפורטות שגיאות ידועות ופעולות מומלצות לפתרון בעיות שקשורות לנושאים הבאים:
שגיאות במשימת ההעברה
יכול להיות שבתהליך של משימת ההעברה יתרחשו שגיאות בזמן הריצה.
- יש שגיאות שאפשר לתקן, כמו סיסמה שגויה במסד הנתונים של המקור. משימת ההעברה תמשיך באופן אוטומטי אחרי שהשגיאות האלה יתוקנו.
- יש שגיאות שלא ניתן לשחזר, כמו שגיאות בשכפול נתונים. אחרי שמתקנים את השגיאות האלה, צריך להפעיל מחדש את משימת ההעברה.
כשמתרחשת שגיאה, סטטוס משימת ההעברה משתנה ל-Failed, וסטטוס המשנה משקף את הסטטוס האחרון לפני הכישלון.
כדי לפתור שגיאה, עוברים למשימת ההעברה שנכשלה כדי לראות את השגיאה, ופועלים לפי השלבים שמפורטים בהודעת השגיאה.
כדי לראות פרטים נוספים על השגיאה, עוברים ל-Cloud Monitoring באמצעות הקישור במשימת ההעברה. היומנים מסוננים לפי משימת ההעברה הספציפית.
בטבלה הבאה מפורטות כמה דוגמאות לבעיות ודרכים לפתור אותן:
| תיאור הבעיה | סיבות אפשריות | דברים שכדאי לנסות |
|---|---|---|
הודעת שגיאה: Database Migration Service can't set up a tunnel to be
connected to the bastion host.
|
ל-Database Migration Service לא הייתה גישה ליעד המבוצר (bastion host), או שהיעד המבוצר לא מקבל חיבורים. | בודקים את ההגדרות של מנהרת ה-SSH להעברה בפרופיל החיבור של המקור ובהגדרות השרת של מנהרת ה-SSH, ומנסים שוב. |
הודעת שגיאה: Database Migration Service can't connect to the database או Database Migration Service private connectivity error, cannot connect to the database.
|
ל-Database Migration Service לא הייתה אפשרות ליצור קישוריות למסד הנתונים של Oracle במקור. |
מוודאים שיש לכם גישה למסד הנתונים של המקור מהפרויקט. בודקים את ההגדרות שקשורות לשיטה להגדרת הקישוריות של המקור. אם מופיע קוד שגיאה ספציפי של Oracle, למשל |
הודעת שגיאה: Archiving mode is not ARCHIVELOG. |
מסד הנתונים של המקור לא פועל במצב ARCHIVELOG. |
מגדירים את מסד הנתונים של המקור לשימוש במצב ARCHIVELOG.
מידע נוסף זמין במאמר הגדרת מסד הנתונים של Oracle במקור.
|
הודעת שגיאה: Supplemental logging ("ALL COLUMN LOGGING") isn't turned
on for the tables listed below.
|
במסד הנתונים של המקור לא מופעלים נתוני יומן משלימים. | מפעילים את נתוני היומן המשלימים ומגדירים את המצב שלהם ל-ALL.
מידע נוסף זמין במאמר הגדרת מסד הנתונים של Oracle במקור.
|
הודעת שגיאה: No Archive Log Files were found in the source. |
Database Migration Service קורא רק יומני ארכיון סגורים, ולא נמצאו יומנים במסד הנתונים של המקור. |
אם אין במסד הנתונים פעולות כתיבה פעילות, יכול להיות שתצטרכו לבצע לפחות פעולת |
הודעת שגיאה: We're missing the necessary permissions to read
from the source.
|
לחשבון המשתמש להעברה במסד הנתונים של המקור אין את ההרשאות הנדרשות. |
Database Migration Service מתחבר למקור בתור חשבון המשתמש שהגדרתם בפרופיל החיבור למקור. לחשבון הזה צריכה להיות קבוצה ספציפית של הרשאות (לדוגמה, מוודאים שלחשבון המשתמש שמוגדר להעברה יש את ההרשאות הנדרשות. מידע נוסף זמין במאמר הגדרת מסד הנתונים של Oracle כמקור. |
הודעת שגיאה: Unable to connect to the destination database. |
הייתה בעיה בחיבור למסד הנתונים של היעד. | מוודאים שיש לכם גישה למסד הנתונים של היעד מהפרויקט. בודקים את ההגדרות שקשורות לשיטה להגדרת הקישוריות ליעד. |
הודעת שגיאה: The following tables don't exist in the destination database: {table_names}. |
הטבלאות שמופיעות ברשימה ושאתם מנסים להעביר לא קיימות במסד הנתונים של היעד. | Database Migration Service יוצר את הטבלה וההגדרות הנדרשות כשממירים את הסכימה של המקור. |
הודעת שגיאה: password authentication failed for user {username}. |
שם המשתמש או הסיסמה של מסד הנתונים של היעד לא מוגדרים נכון. | מוודאים שפרופיל החיבור של PostgreSQL ביעד מוגדר כמו שצריך עם שם המשתמש והסיסמה הנכונים. |
הודעת שגיאה: The following tables in the destination database
don't have primary keys: {table_names}.
|
הטבלאות שמופיעות בהודעת השגיאה קיימות במסד הנתונים של היעד, אבל חסרים בהן מפתחות ראשיים. |
בסביבות עבודה להמרת מסדי נתונים של Database Migration Service, כשממירים סכימה, מפתחות ראשיים מתווספים באופן אוטומטי לטבלאות שאין להן מפתחות כאלה. |
אזהרה: The following tables have foreign keys: {table_names}. |
הטבלאות שמופיעות בהודעת השגיאה קיימות במסד הנתונים של היעד, אבל יש להן מפתחות זרים. |
Database Migration Service לא משכפל נתונים בצורה טרנזקציונלית, ולכן יכול להיות שהטבלאות יועברו לא לפי הסדר. אם יש מפתחות זרים, וטבלת צאצא שמשתמשת במפתח זר מועברת לפני טבלת ההורה שלה, יכול להיות שיהיו שגיאות ברפליקציה. כדי להימנע מבעיות כאלה בתקינות הנתונים, צריך לדלג על מפתחות זרים באמצעות האפשרות |
הודעת שגיאה: Unable to resume replication as log position is lost. |
השגיאה הזו יכולה לקרות כשתהליך הרפליקציה מושהה למשך זמן רב, מה שמוביל לאובדן המיקום ביומן. | אסור להשהות משימת העברה למשך זמן ארוך יותר (או קרוב) לתקופת שמירת היומן. אם המיקום ביומן אבד, צריך ליצור מחדש את משימת ההעברה. |
הודעת שגיאה: ORA-00942: table or view does not exist. |
השגיאה הזו יכולה להתרחש כתוצאה משמירה במטמון בשרת Oracle. | כדי לפתור את הבעיה במטמון, צריך ליצור מחדש את משתמש מסד הנתונים. |
| משימת ההעברה נשארת בשלב ה-dump המלא ולא מתקדמת לשלב סימון הנתונים שהשתנו (CDC). | Database Migration Service עדיין מבצע העברה מלאה של חלק מהטבלאות, או שאי אפשר להשלים את ההעברה המלאה של טבלה אחת או יותר בגלל שגיאות. |
|
בעיות קישוריות
בקטע הזה מפורטים השלבים לפתרון בעיות אפשריות בחיבור לרשת.
לא ניתן להתחבר למסד הנתונים של היעד: EOF
הרצת בדיקת קישוריות מחזירה את הודעת השגיאה [DATABASE] unable to connect to the destination database: EOF.
סיבה אפשרית: צירוף השירות מוגדר באופן שגוי.
מה אפשר לעשות: מוודאים שהערך של enable_proxy_protocol הוא false בקובץ התצורה של Terraform לצירוף השירות.
פרוטוקול ה-proxy נתמך רק בשרתי HTTP כמו NGINX ו-Apache.
כשמשתמשים ב-gcloud כדי ליצור את ההגדרה של Private Service Connect, פרוטוקול ה-proxy מושבת כברירת מחדל.
הזמן הקצוב לתפוגה של החיבור, החיבור נדחה
בדיקת הקישוריות נכשלת או שהזמן הקצוב לתפוגה מסתיים. סביר להניח שהסיבה לכך היא הגדרה שגויה של הניתוב ב-Private Service Connect. יכולות להיות כמה סיבות לבעיה הזו.
סיבה אפשרית: חסר כלל חומת אש שמאפשר לטווח ה-CIDR של ה-NAT של Private Service Connect לגשת לתת-הרשת של Private Service Connect שבה נמצא ה-bastion, ובמיוחד לממשק nic0 של ה-VM של ה-bastion.
מה אפשר לנסות: ודאו שמדיניות הארגון לא מגבילה כללים פנימיים של חומת האש, כמו כלל חומת האש psc_sp_in_fw שמוגדר בסקריפט Terraform לדוגמה, כדי להגדיר קישוריות לכתובת IP פרטית של יעד במכונות Cloud SQL שלא מופעל בהן PSC.
סיבה אפשרית: שרת ה-proxy לא פועל. אין מאזין ביציאה שסופקה, ולכן החיבור נתקע.
מה אפשר לנסות: אתם יכולים לנסות ליצור חיבור SSH למכונה הווירטואלית של הבסטיון, ולחפש את שרת ה-proxy באמצעות הפקודה הבאה:
netstat -tunalp | grep PORT
מנתחים את התגובות לפקודה:
אם אתם מקבלים תגובה ריקה, שרת ה-proxy מושבת. נסו להריץ את הפקודות הבאות:
sudo su; cd /ובודקים אם שרת Dante מותקן באמצעות הפעלת הפקודהsudo dpkg -s dante-server:אם ה-proxy מותקן, תופיע ההודעה הבאה:
Status: install ok installedאם השרת לא מותקן, כנראה שהבעיה היא שחסר נתב. מוסיפים נתב ובודקים אם אפשר להוריד את שרת ה-Proxy על ידי הפעלת
apt-get install dante-server.
אם שרת ה-proxy פועל ומאזין ליציאה שצוינה, נסו לפתוח חיבור אליו באופן הבא:
מתקינים את הלקוח של PostgreSQL:
sudo apt-get install postgresql-client.מתחברים למסד הנתונים של PostgreSQL:
psql -h 127.0.0.1 -p PORT -U DBUSERNAME -W(תתבקשו להזין את הסיסמה).מחליפים את מה שכתוב בשדות הבאים:
-
PORT: מספר היציאה של מסד הנתונים. -
DBUSERNAME: שם המשתמש שמשמש להתחברות למסד הנתונים של PostgreSQL.
-
מתקינים את לקוח ה-telnet:
sudo apt-get install telnetמתחברים ללקוח ה-Telnet:
telnet 127.0.0.1 PORTמחליפים את
PORTבמספר היציאה של מסד הנתונים.
בהתאם לתוצאות של הפקודות:
אם הפקודות לא פותחות חיבור, נסו לבדוק את יומני ה-proxy כדי לאתר את שורש הבעיה. הסיבה לבעיה יכולה להשתנות בהתאם להגדרה של מכונת Cloud SQL.
אם החיבור נפתח באמצעות telnet אבל נתקע בלקוח, סביר להניח שהבעיה היא בניתוב של כתובת ה-IP של ה-bastion. במכונה הווירטואלית, מקלידים
ip routeבטרמינל. בודקים אם אפשר לאתר כלל ניתוב שמנתב חיבורים לכתובת ה-IP הפרטית של מכונת Cloud SQL באמצעותnicהמשני (nic1, כתובת ה-IP שלDB_SUBNETWORK_GATEWAY).
סיבה אפשרית: חיבור נקודת הקצה שמגיע מ-Database Migration Service לא מתקבל בחיבור השירות. בחיבור השירות יש רשימה של פרויקטים שאושרו, והפרויקט של Database Migration Service לא כלול ברשימה.
מה אפשר לנסות: כדי לפתור את הבעיה, אפשר לנסות את אחת מהאפשרויות הבאות:
במסוף Google Cloud , נכנסים לדף Private Service Connect.
כניסה ל-Private Service Connect
בכרטיסייה Published services, מאשרים את החיבור מ-Database Migration Service לחיבור השירות (אם הוא בהמתנה).
מוסיפים את הפרויקט שממנו נשלחה הבקשה לפרויקטים שברשימת ההיתרים של צירוף השירות (אם הבקשה נדחתה).
מידע נוסף על הוספת פרויקט לרשימת ההיתרים ב-Terraform זמין במאמרי העזרה של Terraform.
מידע נוסף על הוספת פרויקט לרשימת ההיתרים ב-
gcloudזמין במאמרי העזרה של Google Cloud CLI.
אם הבעיה לא נפתרה, צריך ליצור מחדש את פרופיל החיבור.
מוחקים את פרופיל החיבור שמשויך לקישוריות של Private Service Connect ויוצרים אותו מחדש.
פתרון בעיות שקשורות לשגיאות ב-Oracle SCAN
בקטע הזה מתוארות בעיות פוטנציאליות שעלולות לקרות כשמעבירים ממקורות של Oracle Real Application Clusters (RAC) באמצעות התכונה Single Client Access Name (SCAN).
לא ניתן ליצור קישוריות למסד נתונים של Oracle SCAN
בדיקת הקישוריות נכשלת או שהזמן הקצוב לתפוגה מסתיים.
סיבה אפשרית: יכול להיות שאתם מנסים ליצור קישוריות ישירות למסד הנתונים של מקור Oracle SCAN. Database Migration Service לא תומך בקישוריות ישירה למסדי נתונים באמצעות התכונה SCAN בסביבות Oracle RAC.
מה אפשר לנסות: כדי לפתור את הבעיה, אפשר לנסות את אחת מהאפשרויות הבאות:
מתחברים ישירות לאחד מהצמתים.
משתמשים ב-Oracle Connection Manager.
יוצרים הגדרה של חיבור מבודד באמצעות פתרון של שרת proxy הפוך, כמו HAProxy.