פיצ'ר חדש בגרסה 12: Oracle Far Sync ב-Data Guard

בגרסה החדשה של אורקל (12c) נעשו כמה שינויים מעניינים במנגנון הותיק של ה-data guard. אחד הפיצ'רים שנוספו למנגנון הוא ה-FarSync – מנגנון שבא לעזור למערכות להעלות את רמת ההגנה שיש על המידע (Zero-Data-Loss) מבלי להשפיע על זמני התגובה של המערכת.

רמות ההגנה של dataguard

כדי להסביר את התכונה החדשה הזו, נעשה שיעור קצר בעולם ה-Data Guard וה-Protection modes שלו.
המשך קריאה…

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

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

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

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

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

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

מחיקת Target מ-Cloud Control 12c

אחד הדברים שאהבתי ב-Cloud Control 12c זה כלי ה-emcli שמאפשר לבצע פעולות בממשק בלי להזדקק למסכי ה-web (יכול להיות שהוא היה שם קודם, אבל רק ב-12c התחלתי להשתמש בו כמו שצריך). אולי זה רק אני שאוהב פורמפט לבן על מסך שחור, אבל אני מוצא את הכלי הזה סופר שימושי.

היום הייתי צריך למחוק target מה-cloud control שלא קיים יותר. במקום להתחיל לחטט בתפריטים ה-Web-ים, השתמשתי בסקריפט הפשוט הבא. שווה לשים לב שה-emcli הוא לא בדיוק cli, הוא מאפשר הרצות של פקודות אחת אחרי השנייה אבל הוא לא נותן ממשק אינטראקטיבי לעבודה.
המשך קריאה…

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

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

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

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

שליפה כדי לראות tablespace map

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

הבעיה: אני רוצה לפנות מקום פנוי ב-tablespace אבל ה-high water mark חסום על ידי איזשהו אובייקט (אני משתמש בסקריפט הזה לפינוי מקום ב-tablespace). בדרך כלל המחשבה הבאה שלי זה "נו? אז מה חוסם אותי עכשיו?".

הפתרון: השליפה הבאה. היא מביאה את ה- tablespace map מסודר לפי קבצים ומסמנת גם את הבלוקים התפוסים (ועל ידי מה) וגם את הבלוקים הפנויים.
המשך קריאה…