בפוסט זה נכיר את סוגי ה 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.