280 likes | 473 Views
Storage Structure and Relationships. Objectives. After completing this lesson, you should be able to do the following: Describe the logical structure of the database List the segment types and their uses List the keywords that control block space usage Obtain storage structure information.
E N D
Objectives • After completing this lesson, you should be able to do the following: • Describe the logical structure of the database • List the segment types and their uses • List the keywords that control block space usage • Obtain storage structure information
Storage and Relationship Structure Database PROD TABLESPACES SYSTEM USER_DATA RBS TEMP DATA FILES DISK2/ USER1.dbf DISK3/ USER2.dbf DISK1/ UNDO1.dbf DISK1/ TEMP.dbf DISK1/SYS1.dbf SEGMENTS RBSeg S_DEPT DataSeg S_EMP DataSeg S_DEPT(cont'd) DataSeg S_EMPFIRST_NAME Index IndexSeg RBS1 RBSeg RBS2 RBSeg RBS1(cont'd) RBSeg RBS2(cont'd) RBSeg Temp TempSeg D.D.Table DataSeg D.D.Index IndexSeg EXTENTS 1 2 1 2 1 2 1 1 2 2 1 FREE 1 1 2 2 1 Oracle DATA BLOCKS
Types of Segments Table Table partition Cluster Index
Types of Segments Index-organizedtable Index partition Undosegment Temporarysegment
Types of Segments LOBsegment Nested table Bootstrapsegment
Storage Clause Precedence Oracle default Tablespace Segment
Extent Allocation and Deallocation • An extent is a chunk of space used by a segment within a tablespace. • An extent is allocated when the segment is: • Created • Extended • Altered • An extent is deallocated when the segment is: • Dropped • Altered • Truncated
Used and Free Extents Data file File header Used extent Free extent
Database Block • Minimum unit of I/O • Consists of one or more operating system blocks • Set at tablespace creation • DB_BLOCK_SIZE is the default block size
Multiple Block Size Support • A database can be created with a standard block size and up to four nonstandard block sizes. • Block sizes can have any power-of-two value between 2KB and 32KB.
Standard Block Size • Set at database creation using the DB_BLOCK_SIZE parameter; cannot be changed without re-creating the database • Used for SYSTEM and TEMPORARY tablespaces • DB_CACHE_SIZE specifies the size of the DEFAULT buffer cache for standard block size: • Minimum size = one granule (4MB or 16MB) • Default value = 48 MB
Nonstandard Block Size • Configure additional caches with the following dynamic parameters: • DB_2K_CACHE_SIZE for 2 KB blocks • DB_4K_CACHE_SIZE for 4 KB blocks • DB_8K_CACHE_SIZE for 8 KB blocks • DB_16K_CACHE_SIZE for 16 KB blocks • DB_32K_CACHE_SIZE for 32 KB blocks • DB_nK_CACHE_SIZE is not allowedif nK is the standard block size. • Minimum size for each cache is one granule.
Creating NonstandardBlock Size Tablespaces CREATE TABLESPACE tbs_1 DATAFILE 'tbs_1.dbf' SIZE 10M BLOCKSIZE 4K; DESCRIBE dba_tablespaces Name Null? Type ------------------ -------- ------------ TABLESPACE_NAME NOT NULL VARCHAR2(30) BLOCK_SIZE NOT NULL NUMBER ...
Multiple Block Sizing Rules • All partitions of a partitioned object must reside in tablespaces of the same block size. • All temporary tablespaces, including the permanent ones that are being used as default temporary tablespaces, must be of standard block size. • Index-organized table overflow and out-of-line LOB segments can be stored in a tablespace with a block size different from the base table.
Database Block Contents Header Free space Data
Block Space Utilization Parameters INITRANS MAXTRANS PCTFREE PCTUSED
Data Block Management • Two methods are available for managing data blocks: • Automatic segment-space management • Manual management
Automatic Segment-Space Management • It is a method of managing free space inside database segments. • Tracking in-segment free and used space is done using bitmaps as opposed to using free lists. • This method provides: • Ease of management • Better space utilization • Better performance for concurrent INSERT operations
Automatic Segment-Space Management • Bitmap segments contain a bitmap that describes the status of each block in the segment with respect to its available space. • The map is contained in a separate set of blocks referred to as bitmapped blocks (BMBs). • When inserting a new row, the server searches the map for a block with sufficient space. • As the amount of space available in a block changes, its new state is reflected in the bitmap.
Configuring AutomaticSegment-Space Management • Automatic segment-space management can be enabled at the tablespace level only, for locally managed tablespaces. • After a tablespace is created, the specifications apply to all segments created in the tablespace. CREATE TABLESPACE data02 DATAFILE ‘/u01/oradata/data02.dbf’ SIZE 5M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 64K SEGMENT SPACE MANAGEMENT AUTO;
Manual Data Block Management • Allows you to configure data blocks manually using parameters such as: • PCTFREE • PCTUSED • FREELIST • The only method available in previous Oracle versions
Inserts (off freelist) Inserts Insert (on freelist) Block Space Usage PCTFREE=20PCTUSED=40 80% 1 2 80% Inserts 40% 3 4
Obtaining Storage Information • Information about storage can be obtained by querying the following views: • DBA_EXTENTS • DBA_SEGMENTS • DBA_TABLESPACES • DBA_DATA_FILES • DBA_FREE_SPACE
Summary • In this lesson, you should have learned how to: • Use tablespaces to: • Separate segments to ease administration • Control the user’s space allocation • Categorize segments by the type of information stored in the segment • Determine extent sizes using the storage clause • Control block space utilization • Obtain storage structure information
Practice 9 Overview • This practice covers identifying and obtaining information on the various types of storage structures in the database.