oracle数据库中最小的逻辑结构,oracle中的逻辑结构讲解

您所在的位置:网站首页 oracle最小存储单位 oracle数据库中最小的逻辑结构,oracle中的逻辑结构讲解

oracle数据库中最小的逻辑结构,oracle中的逻辑结构讲解

2023-12-01 19:25| 来源: 网络整理| 查看: 265

概念:oracle的逻辑结构一般可以分成:表空间(tablespace)、段(segment)、区(extent)、数据块(data block)。oracle由表空间组成,表空间由段组成,段由区组成,区由数据块组成。

分类:表空间:1.表空间是数据库中最大的逻辑单位,几个表空间组成了数据库。

2.表空间由一个或多个数据文件在物理上构成,一个数据文件只能属于一个表空间,这里通过数据文件位置的不同形成表空间在多个磁盘的分布。

3.根据组成的段类型,表空间分成:数据段表空间、索引段表空间、临时段表空间、回退段表空间。

4.可以通过修改数据文件大小或者添加删除数据文件来管理表空间大小。

5.表空间可以在线(ONLINE)或者离线(OFFLINE),也可以将空间中的部分表在线或离线。也有只读(read only)或者读写(read write)的属性。--system等某些特殊表空间不得设置成离线或者只读

6.可以通过QUOTA参数限制用户在表空间上的使用大小。

7.特殊的临时表空间,主要存储在使用ORDER BY语句进行排序或者汇总时所需的临时空间。

9i后一般都用TEMP表空间做为临时表空间,不建议用system等特殊空间当临时表空间使用。基表不能在临时表空间上建立。系统指定默认临时表空间后不得使用其他表空间作为临时表空间。

分类1:系统表空间和非系统表空间。系统表空间主要用于存储系统数据,非系统表空间用于存储用户及其他非系统数据。

系统表空间:1.系统表空间对于数据库是必须存在的,不能离线或者只读。一旦瘫痪,整个数据库将无法正常运作。

2.系统表空间包含了全部的数据字典、存储过程、包和触发器。你可以通过ALL_OBJECTS查看所有系统对象。

3.系统表空间可以包含非系统对象,比如用户数据,但是不推荐这样做。

4.系统表空间包含了系统回退段.通过查询 select segment_name,owner,tablespace_name from dba_rollback_seg;

非系统表空间:1.更加灵活的管理数据库、

2.强化数据库安全和优化运行性能

分类2:数据字典管理表空间(Dictionary-Managed Tablespaces)和本地化管理表空间(Locally Managed Tablespaced).

数据字段管理表空间:必须手动为表空间设置各种参数,容易引起磁盘碎片,管理难度较大

本地化管理表空间:8i以上版本使用,区管理全由系统自动进行,磁盘碎片自动消除,管理难度低且效率高。

通过语句:select tablespace_name,extent_management,allocation_type from dba_tablespaces;

一些关于表空间的查询:a.查询表空间内的数据文件select file_id,bytes,maxbytes,tablespace_name,file_name from dba_data_files;b.查询表空间的自由空间相关信息select tablespace_name,sum(bytes),sum(blocks) from dba_free_space group by tablespace_name;

c.查询临时文件的信息select file#,status,name from v$tempfile;

d.查询用户所使用的临时表空间信息select username,temporary_tablespace from dba_users;

段:按照存储数据的不同分成4类:数据段,索引段,回退段,临时段。

数据段:用于存储数据,每建立一个表,就在表空间里面创建一个数据段(CLUSTER聚集除外,聚集2个表只有一个数据段)。表内数据不断增加,就是段增大的过程,从而引起段内区的个数的增加。

数据段信息的查询:select segment_name,tablespace_name,bytes from user_extents;某些数据段分布于多个表空间(表分区):select segment_name,partition_name,tablespace_name from user_extents;索引段:用于存储索引数据,如果创建了索引,就在索引空间内自动创建一个索引段。

查询索引及其相关信息:select a.table_name,a.index_name,uniqueness,column_namefrom user_ind_columns b,user_indexes a where b.index_name=a.index_name and b.table_name = a.table_name and rownumnext=next*(1+pctincrease).查询数据段中的区分配情况:select segment_name,table_name,extent_id,bytes,blocks from user_extents where segment_name='XXXX';

数据块:数据块是数据库中最小的数据组织单位和管理单位,也是最小的I/O单位。大小由参数DB_BLOCK_SIZE确定,范围在2k-64k之间。对于系统表空间与默认表空间使用且只能使用参数db_block_size指定的数据块,对于其他表空间则可以使用不同的数据块组合。

查询数据块大小:

1.show parameter db_block_size

2.select name,value from v$parameter where name like '%size%;

3.参数文件..数据块通常由块头、表目录、行目录、行数据和空闲空间组成。

可以通过一系列的参数来控制数据块的行为,如空闲率(PCTFREE)、使用率(PCTUSED)、最小事务数(INITRANS)和最大事务数(MAXTRANS).如PCTFREE用于指定块中要保留的空间率,比如取值20%,那么你的块最多存储80%的块空间。这些空闲的空间可以用于已经存在的行修改的时候可能要使用。PCTUSED用于指定块中使用率的限定值。比如取值60%,在没有存储满的时候可以继续插入新的行值。它主要还是用于插入语句。INITRANS指定在每一个数据块中分配的事务入口的初始数,范围1-255,初始为1。MAXTRANS指定在每一个数据块中分配的事务入口的最大数,范围1-255,默认为255。

查询数据块参数设置:select table_name,pct_free,pct_used,ini_trans,max_trans from user_tables;



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3