פוסטים

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

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

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

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

קורס SQL למתחילים מקוון – המלצה לבלוג של רם קדם

היום שמתי לב שהמון זמן לא כתבתי בבלוג וזה דיי מצער אותי אז החלטתי לרשום כמה מילים כדי להחזיר את הבלוג לחיים.

לפני כמה שבועות הדרכתי קורס SQL (השפה, לא SQL Server) אצל לקוח. תמיד כיף ללמד קורס של חומר שלמדתי בעצמי לפני כמעט 15 שנה, אבל במהלך הקורס הבנתי כמה השפה הזו מרשימה וכמה מאמצים הושקעו במשך השנים כדי ליצור שפה שהיא אינטואיטיבית מצד אחד אבל עוצמתית מצד שני.

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

גולת הכותרת של הבלוג שלו היא קורס SQL למתחילים – הן באורקל והן ב-SQL Server. המדריך כולל הסברים, תרגולים ופתרונות. אני מאוד ממליץ על הבלוג שלו ומאחל לו המון בהצלחה! 🙂

טיפ: שליפה של השליפות הארוכות בשבוע האחרון (מתוך ה-AWR)

טיפ נחמד ושימושי – איך לשלוף מתוך הטבלאות של ה-AWR את השליפות הארוכות ביותר בשבוע האחרון.
השליפה שולפת את עשר השליפות בעלות הזמן המצטבר הגבוה ביותר. ניתן (וכדאי) לסנן את השליפה הזו עם Parsing Schema ספציפי כדי לקבל מידע שניתן לעבד אותו ולעבוד עליו כראוי:

המשך קריאה…

איך להריץ דוח AWR כשאין גישה למערכת ההפעלה בשרת

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

המשך קריאה…

יצירת קובץ CSV מתוך PL/SQL

לפני כמה שבועות כתבתי פוסט בנושא יצירת קובץ CSV על ידי שימוש בשליפה (כלומר מתוך sqlplus).
הפוסט התגלה כמועיל במיוחד כי בשבועות שעברו מאז התבקשתי על ידי משתמשים להוציא עוד ועוד טבלאות לפורמט CSV.

השיטה שתוארה בפוסט הקודם היא שיטה מעולה כל עוד לא מנסים לשרשר יותר מדי שדות ואז אורך הרשומה הופך להיות מגבלה רצינית. בשיטה הקודמת שירשור ערכים שעובר גודל מסויים (לא בדקתי מהי, נדמה לי שזה 4000 – המגבלה של פונקציות SQL באופן כללי) נכשל עם הודעת שגיאה: ORA-01489: result of string concatenation is too long.

כדי לפתור את הבעיה הזו כתבתי סקריפט שמייצר קוד PL/SQL. אם נריץ את הקוד שהסקריפט הזה מייצר אז יודפסו למסך השורות של קובץ ה-CSV.

המשך קריאה…

איך לפתור את שגיאה ORA-04068

כל אחד שמפתח package-ים ב-PL/SQL נתקל בבעיה הזו לפחות פעם אחת במהלך הפיתוח: ORA-04068: existing state of packages has been discarded. זו בעיה נפוצה למדי בפיתוח package-ים שהפתרון המיידי שלה הוא להריץ שוב את הפרוצדורה או הפונקציה מתוך ה-package כדי שזה יסתדר. בוא נבין מה הבעיה ואיך ניתן לטפל בבעיה.

המשך קריאה…