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

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

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

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

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

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

התנהגות מוזרה של ה-DG Broker ב-startup mount

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

כמו שעשיתי מאות פעמים בעבר, הורדתי את בסיס הנתונים בצורה מסודרת באמצעות sqlplus ו-shutdown immediate, העלתי את בסיס הנתונים באמצעות startup mount אבל בסיס הנתונים נפתח למצב Open:

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

Total System Global Area 778387456 bytes
Fixed Size 1374808 bytes
Variable Size 461374888 bytes
Database Buffers 310378496 bytes
Redo Buffers 5259264 bytes
Database mounted.
SQL>
SQL> select status from v$instance

STATUS
------------
OPEN

מוזר, מה פה קורה פה?

המשך קריאה…

יצירת Data Guard באורקל 11 – הדרך המהירה (דמו משבוע אורקל 2011)

כמו שהבטחתי, הנה החלק הראשון בדמו של יצירת מערך Data Guard באורקל 11. אם יש למישהו הערות, אני אשמח לשמוע. בנוסף, אני מצרף את הקובץ של ה-demo שהשתמשנו בו בפועל ואין כמעט הסברים – כל ההסברים הנדרשים יהיו פה או במצגת.

הערה קטנה לפני שנתחיל – אנחנו נשתמש בשיטה שקיימת רק באורקל 11 וזה שכפול הסביבה on-line דרך RMAN מבלי לקחת גיבוי לקבצים קודם. ניתן להשתמש בשיטה הזו אם בסיס הנתונים קטן יחסית או אם הרשת בין השרתים מספיק חזקה כדי לבצע כזו פעולה של שכפול בסיס הנתונים. זו השיטה הפשוטה ביותר שאני מכיר להקים כזו סביבה והיא גם אחת המהירות שבהן. אם תהיה דרישה אני אעלה גם הסבר איך מקימים Data Guard בקונפיגורציות אחרות (לדוגמה לא דרך DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE או באורקל 10).

כמו שמוסבר במצגת, הקמת הסביבה מתחלקת לשישה שלבים:

  1. הכנת שרת ה-Primary.
  2. הכנת פרמטרים בבסיס הנתונים הראשי.
  3. קונפיגורציית רשת של אורקל בשני השרתים.
  4. העלאת בסיס הנתונים המשני בקוניפגורציה מינימלית.
  5. יצירת בסיס הנתונים המשני (on-line).
  6. הפעלת ה-Data Guard לגילגול Archive-ים.

המשך קריאה…

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

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

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

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

שבוע אורקל: Data Guard A to Z – המצגת

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

כמו שהובטח (ובאיחור מזעזע), הנה היא – המצגת הראשונה שהעברתי בשבוע אורקל. המצגת היא בנושא Data Guard ובמהלך סוף השבוע הקרוב אני מבטיח להעלות גם את ה-demo שהצגנו והסבר מפורט איך להקים את הסביבה שלו ב-Amazon Elastic Cloud כדי לשחזר את ההגדרות במדוייק למרות שזו לא חובה ואפשר להשתמש בו בכל סביבה אחרת.

אני מודה שוב לכל מי שהשתתף בסמינר, התגובות שלכם היו מעולות ונהנתי מאוד להעביר את הסמינר הזה.

אם יש שאלות אני זמין במייל או בפידבקים פה.

שבוע אורקל: 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