טבלאות לקריאה בלבד

בגרסאות קודמות אם היינו רוצים לסמן טבלאות מסויימות לקריאה בלבד (read only) היינו מסירים את ההרשאות הכתיבה עליהן מכל המשתמשים ומקווים לטוב. למה מקווים לטוב? כי למרות הרצון הטוב, לא ניתן לבטל את ההרשאות של הבעלים (owner) של הטבלה ולכן הוא היה יכול להמשיך לשנות אותה (אפילו בטעות) למרות ההגדרה האפליקטיבית שביצענו.

החל מגרסה 11gR1 ניתן לנעול טבלה ולהגדיר אותה כ-read only ובכך למנוע גישת כתיבה אליה (כמובן שניתן להמשיך לקרוא ממנה).

המשך קריאה…

עמודות וירטואליות

בשבוע הבא אני מעביר הרצאה בנושא פיצ'רים חדשים בבסיס הנתונים של אורקל 11 עם דגש על דברים שיכולים לעניין מפתחים של data warehouse. הפוסטים הקרובים יעסקו בנושאים שאני אציג בהרצאה.

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

המשך קריאה…

על מעבדים: socket-ים, core-ים ו-thread-ים

אופיר מנור מאורקל כתב פוסט יפה ומעניין בבלוג המומחים של אורקל על מעבדים וההבדלים בין sockets (מעבדים פיזים), cores (ליבות בתוך מעבד פיזי) ו-threads (מספר תהליכים שיכולים לרוץ בו זמנית בכל ליבה). מבחינתי זו הזדמנות טובה לרכז כמה פקודות שימושיות בנושא.

אני אשמח לקבל תיקונים הערות ותוספות בנושא.

בשליפה מ-Oracle:

ישנה טבלה ששייכת ל-AWR ואוספת ברמה זו או אחרת את מספר המעבדים, ליבות ו-thread-ים שיש למכונה. בגרסה 10 צריך לשלוף את זה ידנית אבל בגרסה 11 זה כבר יוצא בדוח של ה-AWR.

המשך קריאה…

יצירת קובץ CSV על ידי שימוש ב-SQLPLUS

היום התבקשתי על ידי אחת המפתחות לעזור לה לשמור שליפה של 230 עמודות ולמעלה מ-50 מליון רשומות לקובץ CSV. מבחינתי זו הזדמנות טובה לתעד את זה המסקנות שלי מהבעיה והפתרון היחסית גנרי שיצרתי בשבילו.

שליפות ב-sqlplus מחזירות בדרך כלל את הרשומות באחד משתי דרכים: הדרך הראשונה היא fixed length columns (כלומר העמודה הראשונה מתחילה תמיד במיקום 1, העמודה השנייה תמיד במיקום 7 וכן הלאה). הדרך השנייה היא כ-HTML ועל זה נדבר בהזדמנות אחרת. קובץ CSV הוא בסופו של דבר קובץ טקסט לכל דבר שבו העמודות (ערכים) מופרדים על ידי פסיקים (ומכאן שמו: Comma-separated values).

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

המשך קריאה…

שימוש ב-with כדי לפשט שליפות

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

נתחיל בשיעור היסטוריה קצר כדי להבין מה זה בעצם אומר. כידוע, SQL היא לא שפה ייחודית לאורקל – זו שפה עם סטנדרטים שנקבעים על ידי ANSI. הגרסה הראשונה של השפה שעברה סטנדרטיזציה הייתה בשנת 1986 עם הוצאת SQL86.  בשנת 92 יצאה גרסה נוספת (SQL92) שהייתה גם הגרסה הראשונה שאורקל ניסתה להתאים את עצמה אליה בגרסת Oracle 8. בשנת 1999 יצאה גרסה חדשה ומורחבת של השפה (SQL99) שכללה הרבה מהתכונות שהיו באורקל לפני זה (triggers, recursive sql ועוד) ואורקל התאימו את עצמם שוב למרבית התקנים החדשים בגרסה Oracle 9i (אם אני לא טועה זה היה בגרסה 9.2).

המשך קריאה…

איך להבין מה expdp או impdp עושה כרגע

בגרסה 10g התחילו באורקל להחליף את מנגנון ה-export/import בכלי מתוחכם בהרבה בשם expdp/impdp (כלומר export data pump או import data pump). הכלי החדש תומך בין השאר ביצוא ויבוא של נתונים בצורה מהירה בהרבה ואפילו בפעולות מקביליות.

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

המשך קריאה…