数据块(block):
也叫logical blocks,oracle blocks,或者pages(摘自oracle 10g concept)
是数据存储最小的逻辑单元,也是输入输出操作的最小单位。
通过以下语句可以查询oracle标准块的大小。
SQL> select name,value from v$parameter where name='db_block_size';
block无论存储的是table、index、还是clustered data,其内部结构都相似。
上图显示了block各个组成部分,其中包括: Header (common and variable header):包含块的物理地址,所属段的类型。
Table Directory:存储数据表的相关信息。(?如果是非表块如何处理?)
Row Directory:存储每个数据行片断(row piece)在行数据区中的地址。
Free Space:剩余空间,用于新的数据行插入和更新。
如果一个block属于表或簇表的数据段,或属于索引的索引段,那么在其可用空间区中还可能会存储事务条目。
这样的数据块的数据行如果在执行DML访问时,数据块中就需要保存事务条目。
Row Data:行数据包含了表或索引数据,行可以跨块(以后会提到行链接和行迁移)。
其中header、table directory、row directory统称为Overhead,用于存放整个块的引导信息。
区(extent):
是oracle存储分配与回收的最小单位。
当一个段已有的空间被用完之后,oracle将为该段分配新的区。
段(segment):
由一组区构成,
包括数据段、索引段、临时段、回滚段。
数据段:表数据段、索引表数据段、分区表数据段、聚簇数据段
索引段:包括ROWID与索引键值
临时段:当进行group by、order by、union、intersect、minus、distinct、create index时,
若内存不足,则oracle将为这些操作分配临时段来保存产生的临时数据。
回滚段:保存数据修改前的信息,可以用于事务回滚、数据库恢复、读一致性。
根据使用者不同,还可以分为系统回滚段、非系统回滚段。
表空间(tablespace):
一个数据库被分割到1到n个被称作表空间的逻辑存储单位。
表空间可分为:system表空间、sysaux表空间、undo表空间、temporary表空间。
也可以分为:大文件表空间(Bigfile tablespace)和小文件表空间(Smallfile tablespace)即默认创建的表空间。
大文件表空间可以增强oracle数据库的存储能力,小文件表空间默认可以存放1024个datafile(10g数据)
注:若无特殊说明(如bigfile tablespace),一般“表空间”就是“小文件表空间”。
大文件表空间:
大文件表空间只可用于locally managed,而且段只能为自动管理。
但是对于撤销表和临时表而言,段为manually managed时,也可以使用大文件表空间。
system表空间:
用于存放系统内部表与数据字典。
sysaux表空间:
充当system表空间的辅助表空间,存储除数据字典之外的其他数据对象。
undo表空间:
只用于存储撤销信息,不可创建如表和索引等信息,一个数据库中可以有零到多个。
当事务内的第一条DML执行时,当前使用的撤销表空间就回被分配一个撤销段和一个事务表。
temporary表空间:
如果system表空间是locally managed,在创建数据库时必须指定一个默认的临时表空间。
如果system表空间是dictionary managed,且创建数据库时没有定义默认临时表空间,oracle则会将system表空间作为默认的临时存储空间。并且在alert.log中生成一条警告。
表空间是逻辑存储单位,而实际上数据是存储在数据文件(datafile)中。
下图是两者的关系:
数据文件只能存在于一个表空间中,一个表空间可以存放多个数据文件。
举个例子,一个最简单的数据库最少需要一个表空间和一个数据文件。
Oracle 数据库由多种操作系统的物理文件组成。
其中主要包括:数据文件、控制文件、参数文件、重做日志文件、归档日志文件、口令文件、跟踪文件、警告文件。
数据文件:(.dbf)
用于存放用户应用程序数据和oracle系统内部数据的文件。
创建表空间时,同时会创建数据文件,在创建表,索引,簇等数据库对象时,但无法指定用哪个数据文件存放。
控制文件:(.ctl)
是一种二进制文件,在数据库实例开启的时候,控制文件必须可写,如果控制文件无法被访问,数据库也将无法工作。
用于存放数据库名及其创建日期,数据文件、日志文件的名称和位置、表空间信息、脱机的数据文件、日志历史信息、当前日志文件序列号、数据库检查点、系统更改号、归档当前信息、回滚段的起止、备份集和备份块等。
每当添加、重命名或者移除数据文件或重做日志文件时,控制文件就会被更新以反映这些数据库物理结构变化,目的是:oracle可以借此在数据库启动时识别打开的数据库文件和重做日志文件,也可以在恢复数据库时识别当前可用及需要恢复的文件。
因此,每次更改物理结构时(alter database),如添加一个数据文件,一定要备份控制文件,同时更新备份文件。
此外,数据库恢复(database recovery)时也要用到控制文件。
至少需要一个控制文件,否则实例无法启动。
重做日志文件:(.log)
记录数据库发生过的更改信息,如修改,添加,删除及由oracle内部行为而引起数据库变化的操作。
如果某种故障导致无法将修改过的数据永久的写入数据文件,那么这些修改内容可以从重做日志中获得。
每个oracle数据库都有两个或更多的重做日志文件。
归档日志文件:(.log)
oracle将在重做日志文件被覆盖之前,将其内容保存至指定位置,被保存的重做日志集合称为“归档日志文件”。
可以通过
SQL> select name,log_mode from v$database;来查询归档情况。
服务器参数文件:(.ora)
参数文件包含了数据库与实例的配置参数列表,在安装oracle DB的时候会自动创建,文件名为SPFILEsid.ora
spfile为二进制文件,为动态的,被修改的参数可立即生效。
口令文件(密码文件):
用于验证sysdba权限的二进制文件,当远程用户以sysdba或sysoper连接时,将用该文件验证。
该文件会在创建实例的时候自动创建。
警告文件(.log):
即警告日志文件,为文本文件,记录运行信息与错误信息。
运行信息:oracle实例的祁东和关闭,建立表空间,增加数据文件等。
错误信息:如空间扩展失败,启动实例失败等。
查询路径:
SQL> select name,value from v$parameter where name = 'background_dump_dest';
跟踪文件(.trc):
包括后台跟踪文件与用户进程跟踪文件,
后台进程跟踪文件:用于记录后台经常的警告或错误信息。命名格式为__.trc。
用户进程跟踪文件:用于记录与用户进程的相关信息,用于跟踪sql语句,用于判断sql预计执行性能,由user_dump_dest确认,命名格式为_ora_.trc。
查询路径:
SQL> select value from v$parameter where name = 'background_dump_dest';
或者改为'user_dump_dest';
二.实例结构:
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com