בפוסט זה נכיר את סוגי ה Tablespacesהשונים, נלמד כיצד לייצר ולמחוק Tablespaces ונבין כיצד אנו יכולים להגדיר באיזה Tablespace סגמנט חדש יווצר.
Tablespace Types
בכל Oracle Database עליו נעבוד, אנו נתקל בסוגי ה Tablespace הבאים :
· System Tablespace – ה Tablespace אשר מכיל את טבלאות המערכת של אורקל, כל המידע על הנתונים שלנו (ה Meta Data) ממוקם ב Tablespace זה. בלעדיו ה Database לא יהיה מסוגל לתפקד ולמעשה כאשר הוא נפגם מסיבה כלשהי, ה Database קורס.
אובייקטים השייכים למידע העסקי של החברה (כגון טבלת מכירות, לקוחות וכד') לא אמורים לשבת תחת Tablespace זה.
· Sysaux Tablespace – החל מגרסת 10g, מכיל בתוכו מידע הרלוונטי לכלים שונים של אורקל כגון ה Automatic Workload Repository וה Enterprise Manager.
· Undo Tablespace – החל מגרסת 9i, באמצעות Tablespace זה אנו מחזיקים את המידע אשר מאפשר לנו לבצע את פעולות Rollback וכן להשתמש ביכולות יותר מתקדמות של אורקל כגון ה Flashback Queries.
· Temporary Tablespace – שטח הדיסק אותו אנו מקצים לפעולות שונות אשר לא יכלו להתבצע בזכרון.
לדוגמא – כאשר אנו מריצים פקודת SELECT עם ORDER BY פעולת המיון ראשית תנסה להתבצע בתוך שטח הזכרון של ה Database אשר מיועד לפעולות מסוג זה (PGA). אך לעיתים שטח זכרון זה לא יספיק, במקרים כאלו אורקל יוכל להשתמש בשטח הדיסק העומד לרשותו בכדי לסיים את פעולת המיון.
· User Defined Tablespaces – ה Tablespaces אשר מכילים את המידע העסקי של החברה ונבנים לפי צרכיה (לדוגמא Tablespace אשר מכיל את המידע הרלוונטי על לקוחות החברה וכד').
Create New Tablespace
סינטקס בסיסי ליצירת Tablespace הינו :
CREATE TABLESPACE שם DATAFILE נתיב SIZE גודל
לדוגמא :
SYS >CREATE TABLESPACE customers 2 DATAFILE 'c:cust_1cust_dbf_1.dbf' SIZE 5m ;
ניתן גם לייצר יותר מ Datafile אחד עבור כל Tablespace באמצעות הסינטקס הבא :
SYS >CREATE TABLESPACE customers 2 DATAFILE 'c:cust_1cust_dbf_1.dbf' SIZE 5m , 3 'c:cust_2cust_dbf_2.dbf' SIZE 10m ; Tablespace created.
Drop Tablespace
ניתן למחוק Tablespace בכל אחת מהצורות הבאות :
SYS >DROP TABLESPACE customers ;
פקודה זו תעבוד רק אם לא לא קיים אף אובייקט בתוך ה Tablespace, אחרת נצטרך את אחת מהפקודות הבאות :
SYS >DROP TABLESPACE customers INCLUDING CONTENTS ;
תאפשר לנו למחוק את ה Tablespace וכן את האובייקטים שהיו בתוכו. עם זאת –
ה Datafiles של Tablespace לא ימחקו, אם נרצה למחוק אותם נצטרך לבצע זאת באמצעות פקודות מערכת ההפעלה.
SYS >DROP TABLESPACE customers INCLUDING CONTENTS AND DATAFILES ;
תאפשר לנו למחוק את ה Tablespace, את האובייקטים שהיו בתוכו ואת ה Datafiles של ה Tablespace
New Segment Location
1. כאשר אנו יוצרים סגמנט חדש כגון טבלה, אנו יכולים לציין את המיקום באופן מפורש באמצעות הסינטקס הבא :
SYS >CREATE TABLE my_table (id number) TABLESPACE example ; Table created. SYS >SELECT tablespace_name , table_name 2 FROM dba_tables 3 WHERE table_name = 'MY_TABLE' ; TABLESPACE_NAME TABLE_NAME ------------------------------ ------------------------------ EXAMPLE MY_TABLE
2. במידה ולא ציינו את המיקום באופן מפורש, מיקומה יקבע לפי ה Default User Tablespace (אשר בד"כ מוגדר בעת יצירתו )
SYS >SELECT username , default_tablespace 2 FROM dba_users ; USERNAME DEFAULT_TABLESPACE ------------------------------ -------------------------- SYS SYSTEM SYSTEM SYSTEM RAM USERS SH USERS HR USERS ... SYS >CONN hr/hr Connected. HR >CREATE TABLE hr_table (id number) ; Table created. HR >SELECT tablespace_name , table_name 2 FROM user_tables 3 WHERE table_name = 'HR_TABLE' ; TABLESPACE_NAME TABLE_NAME ------------------------------ --------------------------USERS HR_TABLE
3. במידה ואין ליוזר Default Tablespace החל מגרסה 10g קיים באורקל Default Database Tablespace ולשם הטבלה תשוייך
SYS >SELECT property_name , property_value 2 FROM database_properties 3 WHERE property_name = 'DEFAULT_PERMANENT_TABLESPACE' ; PROPERTY_NAME PROPERTY_VALUE -------------------------------------------------- ------------------ DEFAULT_PERMANENT_TABLESPACE USERS
4. במידה ולא הוגדר Default Database Tablespace – מיקום הטבלה יהיה ב System Tablespace.