כמה מילים על אינדקסים ועל Reverse Key Index

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

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

Oracle Restart – לניהול בסיס נתונים Single Node

לאחרונה יוצא לי להתעסק באופן כמעט בלעדי עם שרתי RAC של אורקל. אני מאוד אוהב את התשתית של ה-grid – במיוחד מאז שהיא עברה מהפכה קטנה בין גרסאות 10 ו-11 ועכשיו היא הפכה למוצר נוח ויציב בהרבה ממה שהוא היה קודם. אחד הדברים היפים שאני אוהב במיוחד בתשתית הזו הוא תהליך העליה של הקלסטר.

כאשר מדברים על עליה של בסיס נתונים, ביצוע Startup ואז הפעלה של ה-listener בדרך כלל מכסים 99 אחוז מתהליך העליה. לעומת זאת, כאשר חושבים על עליה של cluster, מדובר על לא מעט תהליכים שצריכים לעלות בצורה מדורגת, מסודרת ובאופן שתלוי אחד בשני. הכוונה היא שברור שלא יעלה על הדעת שמנגנוני ה-cluster לא יעלו לפני רכיבים בכל שרת בנפרד או ש-Disk groups של ASM יעלו אחרי בסיס הנתונים הרגיל. אם זה היה קורה אז בסיס הנתונים היה עולה (או לא) לפי גחמות מערכת ההפעלה.

הפתרון שאורקל נותנים לעליה של ה-grid הוא תהליך המנוהל על ידי root (בלינוקס) ומעלה את התהליכים לפי ההגדרות של resource-ים ו-service-ים. זה דורש קצת התרגלות אבל ברגע שמתרגלים מדובר ביכולת נהדרת שקשה לשחזר אותה בצורה המסורתית של העבודה. כל זה טוב ויפה אם יש לנו סביבה של RAC, אבל מה קורה כאשר יש לנו שרת ב-Stand alone (כלומר, לא קלסטר)?

המשך קריאה…

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

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

המשך קריאה…

כמה מילים על bind peeking ואיך למחוק Execution Plan מה-Library Cache

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

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

אחד הדברים הקשים ביותר לכוונון בעיני זה שליפות שלפעמים עובדות מהר ולפעמים לא ובתת הקטגוריה הזו, שליפות שמתנהגות ככה אבל לכולן יש את אותו ה-SQL ID ואותו Execution Plan (באותה סביבה, כמובן). איך דבר כזה יכול לקרות? לדוגמה אם משתמשים ב-Bind Variables אז התוכנית של השליפה מתוכננת על ידי ה-Optimizer פעם אחת וכל השליפות שבאות אחריה עושות soft parse וחוסכות לעצמן את הצורך ב-parse מיותר.
כל זה טוב ויפה אבל איך האופטימייזר יודע להעריך כמויות רשומות ותוכנית יעילה? בגרסה 9i נוספה תכונה מעניינת: Bind Peeking. האופטימייזר שנתקל בשליפה עם bind variables בפעם הראשונה "מציץ" לתוך המשתנים האלה, רואה איזה ערכים יש שם ומשתמש בהם כדי לקבוע תוכנית פעולה לשליפה שלנו.

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

רגע, רגע, מה?!
המשך קריאה…

שבוע אורקל: Oracle Database 11g – Self Management Features, Diagnostics & Tuning – המצגת

הסמינר השני שהעברתי בשבוע אורקל היה Oracle Database 11g – Self Management Features, Diagnostics & Tuning.
השם היה קצת מטעה כי הצגתי גם דברים שהיו זמינים לפני Oracle 11g והתרכזתי יותר בחלק של ה-tuning ופחות ב-diagnostics.

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

אני מצרף פה את המצגת ובקרוב אני אכתוב פוסט נוסף בנוגע לכלי שהצגתי בסמינר – ה-AWR Formatter 1.6.

שבוע אורקל: Oracle Database 11g – Self Management Features, Diagnostics & Tuning

אז כמו שאמרתי, שבוע אורקל מתקרב והסמינר השני שאני הולך להעביר הוא Oracle Database 11g – Self Management Features, Diagnostics & Tuning.

הסמינר הזה הוא חיבור של כמה נושאים שקשורים בינהם בעיקר בגלל שהם קשורים ל-tuning (שזה אחד מהתחומים האהובים עלי בתור DBA) ולמנגנונים אוטומטיים של אורקל שעוזרים לטפל בזה. בסילבוס של הסמינר יש המון נושאים (כל נושא שווה לפחות כמה שעות דיבור) מכוון שגם הסמינר הזה מתבסס על קורס, רק שהפעם מדובר בקורס של 5 ימים ואני עדיין מקבל רק 6 שעות לדבר. למרות זאת, אני מקווה שאני אספיק להגיע בכל זאת לכל מה שיש שם ושאף אחד לא יצא מאוכזב… 🙂

אם יש נושאים שהייתם רוצים לשמוע עליהם יותר אני אשמח לשמוע – אתם מוזמנים לשלוח אימייל, להרים טלפון או להגיב פה.

הנה הפרוספקט שהכינו ג'ון ברייס – אני מזמין אתכם להירשם ולהגיע.

about Oracle Database 11g - Self Management Features, Diagnostics & Tuning