מבנה ה Storage של אורקל ומונחי הבסיס בהם אנו משתמשים כדי להגדיר את חלקיו השונים הינם נדבך מרכזי וחשוב בעבודתו היומיומית של ה DBA.
בפוסט זה אנסה לעשות סדר במרכיבים השונים ואסביר את מטרותיהם.
Database
ה Database נחשב ליחידה הלוגית הגדולה ביותר. מכיוון שהוא מעין מעטפת, שם כולל לרכיבים כה רבים אשר פועלים תחת חסותו, במינוחי Storage נהוג לשייך את ה Database לצד הלוגי.
Datafile
לעומת ה Database, ה Datafile מוגדר כיחידה פיזית, משום שהוא הקובץ הממשי עליו יושבים הנתונים.
הקשר בין Database ל Datafile הוא אחד לרבים – Database אחד יכול להכיל Datafiles רבים, Datafile אחד לא יכול להכיל Databases רבים.
ניתן להשתמש בטבלת המערכת הבאה כדי לראות מידע אודות ה Datafiles במערכת :
SYS >SELECT file_name 2 FROM dba_data_files ; FILE_NAME ---------------------------------------------C:APPADMINISTRATORORADATAORCLUSERS01.DBF C:APPADMINISTRATORORADATAORCLUNDOTBS01.DBF C:APPADMINISTRATORORADATAORCLSYSAUX01.DBF C:APPADMINISTRATORORADATAORCLSYSTEM01.DBF C:APPADMINISTRATORORADATAORCLEXAMPLE01.DBF C:CUST_1CUST_1.DBF C:CUST_2CUST_2.DBF
Tablespace
Tablespace הינו יחידה לוגית אשר מאגדת בתוכה מספר Datafiles. כאשר יש בידנו יותר מ Datafile אחד אשר מכיל נתונים אודות נושא ספציפי (למשל 5 קבצים שונים אשר מכילים נתונים על לקוחות החברה) יהיה נח לתת לכל אותם קבצים "תגית" מסויימת, כך שיהיה יותר נח לנהל אותה (לצרכי גיבויים, שחזורים, ייצוא, ייבוא וכד')
הקשר בין Database ל Tablespace הוא אחד לרבים – Database אחד יכול להכיל Tablespaces רבים, Tablespace אחד לא יכול להכיל Databases רבים.
הקשר בין Tablespace ל Datafile הוא אחד לרבים – Tablespace אחד יכול להכיל Datafiles רבים, Datafile אחד לא יכול להכיל Tablespaces רבים.
ניתן להשתמש בטבלאות המערכת הבאות כדי לראות מידע אודות ה Tablespaces במערכת
SYS >SELECT tablespace_name 2 FROM dba_tablespaces ; TABLESPACE_NAME ------------------------------ SYSTEM SYSAUX UNDOTBS1 TEMP USERS EXAMPLE SYS >SELECT tablespace_name , file_name 2 FROM dba_data_files ; TABLESPACE_NAME FILE_NAME ---------------- ------------------------------------------- USERS C:APPADMINISTRATORORADATAORCLUSERS01.DBF UNDOTBS1 C:APPADMINISTRATORORADATAORCLUNDOTBS01.DBF SYSAUX C:APPADMINISTRATORORADATAORCLSYSAUX01.DBF SYSTEM C:APPADMINISTRATORORADATAORCLSYSTEM01.DBF EXAMPLE C:APPADMINISTRATORORADATAORCLEXAMPLE01.DBF CUSTOMERS C:CUST_1CUST_1.DBF CUSTOMERS C:CUST_2CUST_2.DBF
Segment
הגדרת ה Segment היא אובייקט אשר מכיל נתונים מסויימים ועל כן בעל נפח. לדוגמא טבלה היא סגמנט, אינדקס הוא סגמנט, View הוא לא סגמנט, פונקציה היא לא סגמנט מכיוון שאלו בסה"כ שורות אשר יושבות בתוך טבלאות מערכת (טבלאות המערכת אשר מכילות את נתונים אלו נחשבות סגמנטים).
הקשר בין Tablespace ל Segment הוא אחד לרבים – Tablespace אחד יכול להכיל Segments רבים, Segment אחד לא יכול להכיל Tablespaces רבים.
הקשר בין Segment ל Datafile הוא רבים לרבים – Segment אחד יכול להכיל Datafiles רבים, Datafile אחד יכול להכיל Segments רבים.
ניתן להשתמש בטבלת המערכת הבאה כדי לראות מידע אודות ה Segments השונים במערכת
SELECT segment_name , segment_type FROM dba_segments WHERE OWNER = 'HR' AND rownum < 10 ; SEGMENT_NAME SEGMENT_TYPE -------------------- ------------------ REGIONS TABLE LOCATIONS TABLE DEPARTMENTS TABLE JOBS TABLE EMPLOYEES TABLE JOB_HISTORY TABLE RATES TABLE EMP_J TABLE SYS_IOT_OVER_75242 TABLE
Extents
Extent היא יחידת מידע רציפה עבור Segment – כאשר אנו יוצרים טבלה ומקצים לה גודל ראשוני של נאמר 10 מגה, בנקודה מסויימת אותו מקום נגמר ואורקל צריך להקצות לה מקום חדש, יחידת המידע החדשה שנוספת ל Segment נקראת Extent .
משמעות ההגדרה של יחידת מידע רציפה היא ש Extent יכול להתחיל ולהסתיים בנקודה אחת בלבד, אם לדוגמא יש לנו Segment אשר נפרס על יותר מ Datafile אחד לא יכול להיות מצב ש Extent מסויים שלו יתחיל ב Datafile אחד ויסתיים ב Datafile שני.
הקשר בין Segment ל Extent הוא אחד לרבים – Segment אחד יכול להכיל Extents רבים, Extent אחד לא יכול להכיל Segments רבים.
הקשר בין Datafile ל Extent הוא אחד לרבים – Datafile אחד יכול להכילExtents רבים, Extent אחד לא יכול להכיל Datafiles רבים (כמו שאמרנו – יחידת מידע רציפה).
ניתן להשתמש בטבלאות המערכת הבאות כדי לראות מידע אודות ה Extents השונים במערכת
SELECT segment_name , segment_type, extents FROM dba_segments WHERE OWNER = 'HR' AND rownum <= 10 ; SEGMENT_NAME SEGMENT_TYPE EXTENTS -------------------- ------------------ ----------NEW_EMPLOYEES TABLE 1 REGIONS TABLE 1 REG_ID_PK INDEX 1 COUNTRY_C_ID_PK INDEX 1 LOCATIONS TABLE 1 LOC_ID_PK INDEX 1 LOC_CITY_IX INDEX 1 LOC_COUNTRY_IX INDEX 1 DEPARTMENTS TABLE 1 SELECT segment_name, extent_id , bytes FROM dba_extents WHERE owner = 'HR' AND segment_name = 'EMPLOYEES' ; SEGMENT_NAME EXTENT_ID BYTES -------------------- ---------- ---------- EMPLOYEES 0 65536
Oracle Block
Oracle Block היא יחידת המידע הקטנה ביותר באורקל, במערכות רבות גודלה עומד על 8k.
הקשר בין Extent ל Oracle Block הוא אחד לרבים – Extent אחד יכול להכיל Oracle Blocks רבים, Oracle Block אחד לא יכול להכיל Extents רבים.
הקשר בין Oracle Block ל Operating System Block הוא אחד לרבים – Oracle Block אחד יכול להכיל OS Blocks רבים, OS Block אחד לא יכול להכיל Oracle Blocks רבים.
![]() |
![]() |
||||||
![]() |
|||||||