دیتادیکشنری جداولی هستند که به صورت پیشفرض در اوراکل وجود دارند و ساختار دیتابیس رو نگهداری میکنند. اونایی که اولشون DBA است جدول هستند و اونایی که اولشون V است VIEW هستند.
یه وضعیتی روی TableSpaceها وجود داره که شما میتونید به وسیله دیتا دیکشنری اسم همه TableSpaceهاتون رو پیدا کنید:
نکته: با دستور DESCRIB میتوانید ساختار یک جدول را ببینید. وقتی میخوایم ساختار جداول دیتادیکشنری رو ببینیم از این دستور پر کاربرد استفاده میکنیم.
SQL> DESCRIB DBA_TABLESPACES;
Name Null? Type
----------------------------------------- -------- ---------------
TABLESPACE_NAME NOT NULL VARCHAR2(30)
BLOCK_SIZE NOT NULL NUMBER
INITIAL_EXTENT NUMBER
NEXT_EXTENT NUMBER
MIN_EXTENTS NOT NULL NUMBER
MAX_EXTENTS NUMBER
MAX_SIZE NUMBER
PCT_INCREASE NUMBER
MIN_EXTLEN NUMBER
STATUS VARCHAR2(9)
CONTENTS VARCHAR2(9)
LOGGING VARCHAR2(9)
FORCE_LOGGING VARCHAR2(3)
EXTENT_MANAGEMENT VARCHAR2(10)
ALLOCATION_TYPE VARCHAR2(9)
PLUGGED_IN VARCHAR2(3)
SEGMENT_SPACE_MANAGEMENT VARCHAR2(6)
DEF_TAB_COMPRESSION VARCHAR2(8)
RETENTION VARCHAR2(11)
BIGFILE VARCHAR2(3)
PREDICATE_EVALUATION VARCHAR2(7)
ENCRYPTED VARCHAR2(3)
COMPRESS_FOR VARCHAR2(30)
با SELECT گرفتن از TABLESPACE_NAME میتوانید به لیست TABLESPACEهای موجود در اوراکل برسید:
SQL> SELECT TABLESPACE_NAME FROM DBA_TABLESPACES;
TABLESPACE_NAME
------------------------------
SYSTEM
SYSAUX
UNDOTBS1
TEMP
USERS
TS
6 rows selected.
جدول DBA_FREE_SPACE
برای دیدن وضعیت بلاکها و بایتهایی که توی TableSpaceهای شما وجود داره:
نکته: یک TableSpace میتونه از چندین DataFile تشکیل شده باشه ولی هر DataFile مطلق به یک TableSpace است.
SQL> DESCRIBE DBA_FREE_SPACE;
Name Null? Type
----------------------------------------- -------- ------------
TABLESPACE_NAME VARCHAR2(30)
FILE_ID NUMBER
BLOCK_ID NUMBER
BYTES NUMBER
BLOCKS NUMBER
RELATIVE_FNO NUMBER
SQL> SELECT * from DBA_FREE_SPACE;
TABLESPACE_NAME FILE_ID BLOCK_ID BYTES BLOCKS RELATIVE_FNO
------------------------------ ---------- ---------- ---------- ---------- ------------
SYSTEM 1 100240 7208960 880 1
SYSAUX 3 109120 49807360 6080 3
UNDOTBS1 5 280 851968 104 5
TABLESPACE_NAME FILE_ID BLOCK_ID BYTES BLOCKS RELATIVE_FNO
------------------------------ ---------- ---------- ---------- ---------- ------------
UNDOTBS1 5 1024 2097152 256 5
UNDOTBS1 5 1408 1048576 128 5
UNDOTBS1 5 1664 2097152 256 5
TABLESPACE_NAME FILE_ID BLOCK_ID BYTES BLOCKS RELATIVE_FNO
------------------------------ ---------- ---------- ---------- ---------- ------------
UNDOTBS1 5 2048 5242880 640 5
UNDOTBS1 5 2816 2097152 256 5
UNDOTBS1 5 3200 108003328 13184 5
TABLESPACE_NAME FILE_ID BLOCK_ID BYTES BLOCKS RELATIVE_FNO
------------------------------ ---------- ---------- ---------- ---------- ------------
UNDOTBS1 5 17408 148897792 18176 5
UNDOTBS1 5 35592 468647936 57208 5
USERS 6 224 3407872 416 6
TABLESPACE_NAME FILE_ID BLOCK_ID BYTES BLOCKS RELATIVE_FNO
------------------------------ ---------- ---------- ---------- ---------- ------------
TS 2 128 103809024 12672 2
13 rows selected.
چون یک TableSpace شامل چندیت DataFile است پس وضعیت بلاکها، بایتهای اشغال شده، هر کدوم از DataFileهای TableSpaceها را در بالا میبینید.
پیدا کردن آدرس DataFileها
آدرس DATAFILEها و فضاهای مالک آنها در V$DATAFILE قرار دارد.
SQL> SELECT NAME FROM V$DATAFILE;
NAME
-------------------------------------------
E:\APP\ORACLE\ORADATA\ORCL\SYSTEM01.DBF
E:\A.DBF
E:\APP\ORACLE\ORADATA\ORCL\SYSAUX01.DBF
E:\APP\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF
E:\APP\ORACLE\ORADATA\ORCL\USERS01.DBF
نکته: توجه داشته باشید یکسری از DataDictionart رو نشون نمیده به این علت که اگر اون DataFileها رو پاک کنیم یا مشکلی براشون به وجود بیاد دیتابیس به مشکل بزرگی میخوره چون ساختار DataDictionaryها روی این TableSpaceها قرار داره
برای اطلاعات بیشتر میتوانید از دستورات زیر استفاده کنید:
SELECT * FROM V$DATAFILE;
DESCRIB V$DATAFILE;
DESCRIB V$DATABASE;
پیداکردن نام موجودیتهای موجود در TABLESPACE
SQL> DESCRIB DBA_SEGMENTS;
Name Null? Type
----------------------------------------- -------- -------------
OWNER VARCHAR2(128)
SEGMENT_NAME VARCHAR2(128)
PARTITION_NAME VARCHAR2(128)
SEGMENT_TYPE VARCHAR2(18)
SEGMENT_SUBTYPE VARCHAR2(10)
TABLESPACE_NAME VARCHAR2(30)
HEADER_FILE NUMBER
HEADER_BLOCK NUMBER
BYTES NUMBER
BLOCKS NUMBER
EXTENTS NUMBER
INITIAL_EXTENT NUMBER
NEXT_EXTENT NUMBER
MIN_EXTENTS NUMBER
MAX_EXTENTS NUMBER
MAX_SIZE NUMBER
RETENTION VARCHAR2(7)
MINRETENTION NUMBER
PCT_INCREASE NUMBER
FREELISTS NUMBER
FREELIST_GROUPS NUMBER
RELATIVE_FNO NUMBER
BUFFER_POOL VARCHAR2(7)
FLASH_CACHE VARCHAR2(7)
CELL_FLASH_CACHE VARCHAR2(7)
نحوه جستجو در گوگل برای دیتا دیکشنری
- HOW TO GET ORACLE DATAFILE ADDRESS DATA DICTIONARY
- ORACLE CONCEPTS - DATA DICTIONARY