פוסטים

PRVF-0002 : Could not retrieve local nodename

התקנתי שרת חדש (בלי DNS) ורציתי להתקין עליו Oracle Home חדש. הרצתי את ה-runInstaller ומיד קיבלתי את הודעת השגיאה הבאה (במקרה הזה בגרסה 11, אבל נתקלתי בזה גם ב-12):

prvf-0002

אכן נראה כמו בעיה – מה זה יכול להיות?
המשך קריאה…

מדריך להתקנת אורקל 12.1.0.2 – חלק 2: יצירת בסיס נתונים

בפוסט הקודם התקנו את גרסת אורקל 12.1.0.2 (תוכנה) אבל עדיין לא יצרנו בסיס נתונים, בפוסט הזה נתקין כבר את בסיס נתונים על שרת שזה בסיס הנתונים הראשון שבו.

המשך קריאה…

מדריך להתקנת אורקל 12.1.0.2 – חלק 1

בשבוע שעבר סיפרתי שיצא ה-patchset החדש של אורקל – 12.1.0.2 ל-Linux x64.

הנה מדריך בסיסי להתקנת הגרסה החדשה. בחלק הראשון נתקין את ה-Software בלבד ובהמשך ניצור בסיס נתונים חדש.

המשך קריאה…

המדריך הבסיסי לטרנזאקציות באורקל

הפוסט הזה הוא הכנה לפוסט נוסף על הפרמטר commit_write. מכוון שהמאמר יצא ארוך במיוחד, פיצלתי אותם לשניים. בפוסט הזה נדבר על איך טרנזאקציות עובדות ובפוסט הבא נדבר על איך לעקוף את זה…

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

כדי לענות על השאלה הזו ישבו טובי המומחים באקדמיה והגדירו סטנדרט שנקרא ACID: Atomic, Consistent, Isolation, Durability. כדי להבין מה זה אומר, בואו ונפרק את ההגדרה:

  1. Atomic– טרנזאקציות ישמרו בצורה של הכול או כלום. אין חצי טרנזאקציה.
  2. Consistent– אם ביצענו מספר פעולות שתלויות אחת בשנייה אנחנו רוצים שהטרנזאקציה תשמור את הנתונים בצורה אמינה.
  3. Isolation– כל עוד אנחנו מבצעים טרנזאקציה, אף אחד לא צריך לדעת על זה.
  4. Durability– אם בסיס הנתונים שלנו נופל, אנחנו רוצים שכל המידע שביצענו לו commit יהיה שם גם אחרי שהוא יעלה בחזרה.

העניין הוא ש-ACID עולה לנו: הוא עולה לנו זמן והוא עולה לנו משאבים. מה קורה אם מה שחשוב לנו זה הביצועים ואנחנו מוכנים לוותר על אחד מעקרונות ה-ACID בתמורה לזמן ולמשאבים?

על פניו, לא מדובר במשהו חדש – כתבתי על זה גם בעבר בנושאים הקשורים ל-NoSQL. בפוסט הזה נדבר על התהליך שקורה מתחת לפני השטח כשעושים טרנזאקציה בבסיס הנתונים. הפוסט הבא יתמקד ב-Durability ואיך ניתן לשחרר קצת את החבל מהבחינה הזו באורקל (מבלי ללכת לפתרונות NoSQL).

לפני שנצלול לעסק, אזהרה: הפוסט הזה מדבר על נושאים שמשפיעים על האמינות של בסיס הנתונים. שינוי הפרמטרים וההתנהגות שיוזכרו בפוסט הזה ובפוסט הבא הן פעולות מסוכנות. אם אתם לא בטוחים במאה אחוזים שהבנתם את הסיכונים שקשורים לפרמטרים האלה, אל תשנו אותם ובכל מקרה אני לא אחראי לתוצאות.

המשך קריאה…

ניטור קובץ לוג בסביבת לינוקס

לא בדיוק מהסקריפטים הסטנדרטים שלי, אבל כשמנסים לאתר בעיות שנכתבות לקובץ log ולדעת מיד כשהבעיה מתרחשת, הסקריפט הזה מתגלה כשימושי במיוחד

אז מה יש לנו כאן? סקריפט shell קצר (עובד גם ב-cygwin למיטב ידיעתי) שמראה איך לנטר קובץ לוג להודעות ספצפיות ולשלוח אותן במייל אם הן קורות:
המשך קריאה…

פיצ'ר חדש: הרצת קוד PL/SQL המקושר לשליפה

לאחרונה נתקלתי בפיצ'ר חדש בגרסה 12 שעושה לי את החיים לקלים במיוחד בכל מה שקשור לכתיבת קוד המיוחד לשליפה ספציפית. הסיפור היה כזה: עבדתי בסביבה של לקוח ורציתי ליצור פונקציה שתעשה חישוב מותנה על עמודות מסוימות בטבלה. הרעיון היה לנתח את התוכן של כל עמודה ולהחזיר תוצאה. את רוב הדברים אפשר לעשות מתוך קוד ה- SQL אבל לפעמים יותר נוח לכתוב דברים בשפה פרוצדורלית, בטח אם הקוד חוזר על עצמו שוב ושוב.

עד גרסה 12, הפתרון היה פשוט – הולכים על פונקציית PL/SQL: כותבים פונקציה, שומרים אותה בבסיס הנתונים ואז משתמשים בה.

נשאלת השאלה, מה עושים כאשר מדובר בפתרון מאוד ספציפי לבעיה מאוד ספציפית שלא רוצים או לא צריך לשמור לשימוש עתידי? מה עושים אם אנחנו לא רוצים להשאיר את הפונקציה זמינה לשימוש של אנשים אחרים? איך נמנעים מיצירת מבחר פונקציות לא שימושיות שכאלה בבסיס הנתונים שסתם מזבלות את הסביבה?
המשך קריאה…