פוסטים

שינוי בגרסה 12: שינוי רוחב מקסימלי עמודה מסוג varchar2

עד גרסה 12 הייתה לנו בעיה קטנה. אם היינו יוצרים קוד ב-PL/SQL, היינו יכולים להגדיר משתנים מסוג varchar2 באורך של עד 32K תווים וזה עבד בסדר גמור. העניין הוא ש-varchar2 של pl/sql ושל sql לא היה אותו דבר וזה היה גורם לנו לעיתים קרובות לבעיות.

החל מגרסה 12 ניתן להגדיר בבסיס הנתונים ש-varchar2 של sql הוא גם עד 32k ובכך ליישר קו בין השפות.
המשך קריאה…

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

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

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

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

פיצ’ר חדש: שליפות Top-N בלי מאמץ (כמעט)

עד אורקל 12, כאשר רצינו לשלוף את N הרשומות הראשונות (או אחרונות) של שליפה היינו צריכים לעשות מאמץ מיוחד: לשלוף את הרשומות, לפלטר אותן לתוכן הרלוונטי, למיין את הרשומות ואז לפלטר אותן שוב ל-N הרשומות הרלוונטיות. בחלק מהמקרים, הדבר הזה לא נעשה בצורה הנכונה ואז הרשומות שלנו לא חזרו בסדר הנכון או שהדבר לקח יותר מדי משאבים.

החל מגרסה 12, אורקל עושים זאת שוב ופותרים לנו את הבעיה בהינף פקודה. הפקודה החדשה היא הרחבה של פקודת ה-Select הרגילה והיא נראית ככה:

[ OFFSET offset { ROW | ROWS } ]
[ FETCH { FIRST | NEXT } [ { rowcount | percent PERCENT } ]
    { ROW | ROWS } { ONLY | WITH TIES } ]

למעדיפים את התיעוד הרשמי, אז זה נמצא כאן.

המשך קריאה…

פיצ’ר חדש: עמודת Identity

עוד אחד מהפיצ’רים האלה שאנחנו מיישמים בצורה ידנית עד שבאים אורקל ופותרים לנו את הבעיה בהינף פקודה אחת…

עד גרסה 12, אם היינו רוצים עמודה שתקבל ערכים בצורה עצמאית (לדוגמה מספר רץ למספר הזמנה או משהו דומה) היינו צריכים לבוא וליישם את זה בעצמנו. היינו צריכים להגדיר sequence, היינו צריכים להגדיר trigger שידאג לטפל בטבלה או שהיינו מגדירים קוד חיצוני שיטפל בהכנסת ערכים לעמודה (פונקצית הכנסה לטבלה וכו’).

החלק מגרסה 12 נוסף פיצ’ר נחמד שמטפל בכל הדברים האלה בעצמו.

המשך קריאה…

הרצאה שלי בפורום DBA מרכז של ilOUG

אהלן,

לא יצא לי לכתוב לאחרונה אבל רציתי לספר שמחר (יום שלישי (10/12/13) אני מרצה בפורום DBA מרכז של ilOUG. ההרצאה שלי היא ההרצאה המסכמת של הכנס (מתחילה ב-17:00) והיא תהיה בנושא Pluggable Database ב-Oracle 12c. מדובר באחד הפיצ’רים המעניינים ביותר בגרסה החדשה של אורקל – פיצ’ר שגורר אחריו שינוי ארכיטקטוני משמעותי במבנה ה-DB. זהו נושא שיצא לי לחקור לא מעט במסגרת פעילות אצל לקוח ואפילו הייתי בכמה הרצאות בנושא ב-Open World 2013 בסן פרנסיסקו.

לצערי אין לי יותר מדי זמן לכתוב לאחרונה אבל אני מבטיח להעלות הרבה ממה שחקרתי בעתיד הקרוב.. 🙂

רשמים על הכנס אעדכן מחר – אתם מוזמנים לבוא להקשיב להרצאה (מקורות מוסרים שיהיו למעלה מ-110 משתתפים בהרצאה).

סמינר שבוע אורקל: Oracle Data Guard from A to Z – הסקריפט

במסגרת שבוע אורקל העברתי מצגת על Oracle Data Guard – A to Z. זה הסמינר האהוב עלי – יצרתי אותו לפני כשנתיים ובשנה שעבר לא העברתי אותו מסיבות בירוקרטיות-טכניות. במסגרת הסמינר אני מעביר המון אינפורמציה על הארכיטקטורה של הפתרון, איך משתמשים בו ואיך עובדים איתו – את כל זה ניתן למצוא בפוסט שפרסמתי כאן עם המצגת של הסמינר.

במסגרת הסמינר אני מבצע גם דמו ארוך ועתיר שלבים שמציג איך יוצרים, עובדים ומנהלים סביבה כזו של Data Guard ו-DG Broker.

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

המשך קריאה…