数据库结构(三).物理结构
一、数据库的物理结构:
1.数据文件(data file)
每个数据库有一个或多个数据文件,数据文件包含了全部数据库的数据。逻辑数据库结构(如表、索引、数据字典)都存储在数据文件中。在存取数据时,Oracle先从数据文件中读取数据到内存的数据缓冲区中,这样的存取方式减少了磁盘I/O操作,提高了相应性能。数据文件一旦建立后就不能改变大小,只能增加。
数据文件系统机制包括:
①“Cooked”操作系统(OS)文件系统
②原始分区(raw partitions)
③自动存储系统(Automatic Storage Management,ASM)
④集群文件系统(RAC)
本地管理的表空间:
8.1.5版本之后使用本地管理表空间(local-managed tablespace)。它的优点是:无需数据字典,仅对每个数据文件中存储的一个位图来管理区段。目前版本已无法建立dictionary tablespace
2.控制文件(control file)
控制文件是一个很小的二进制文件,用于描述数据库的物理结构。包括:①数据库名;②数据库数据文件和日志文件的名字和位置;③数据库建立日期。
一般在安装Oracle时自动创建,其存放位置由参数文件SPFILEsid.ora的CONTROL_FILES参数值来确定。数据库在使用的过程中会不断更新控制文件。如果该文件损坏,则数据库将无法正常工作。
Oracle10g默认安装了3个控制文件,每个文件内容相同,当某个文件损坏时,Oracle会自动使用另一个,以确保数据库正常运行。
可查询V$CONTROLFILE来获得控制文件信息。
3.重做日志文件(redo log file)
重做日志文件用于记录对数据库的修改信息,包括数据的修改以及数据库结构的修改。查询信息不会被记录在日志中。为了防止日志文件本身的故障,ORACLE允许镜象日志(mirrored redo log),以致可在不同磁盘上维护两个或多个日志副本。日志文件中的信息仅在系统故障或介质故障恢复数据库时使用,这些故障阻止将数据库数据写入到数据库的数据文件。然而任何丢失的数据在下一次数据库打开时,ORACLE自动地应用日志文件中的信息来恢复数据库数据文件。
日志工作过程中,多个日志是循环使用的,即一个日志文件组被填满后,系统自动转换到另一个日志文件组。当所有日志文件组都被填满后,系统会将日志信息写入到第一个日志组中,这时有两个模式:归档模式(Archivelog)和非归档模式(NoArchivelog),当运行在归档模式时,系统将启用ARCH进程将要被覆盖的日志保存到磁盘上形成归档日志。若使用非归档模式,则会覆盖被写入的文档。
查询数据库的日志组情况:select group#,bytes,members,status from v$log;
查询数据库的日志归档模式:select log_mode from v_database;
4.临时文件(temp file)
Oracle的临时文件用来存储大规模排序和散列操作的中间结果。如果RMAN中没有足够的空间,还会用临时文件存储全局临时表数据,或者结果集数据。
注意:
1.永久表和索引等不会存储在临时文件中,但是临时表及其索引的内容要存储在临时文件。
2.临时文件不生成redo log,无法重做
3.不需要备份临时数据文件,因为无法恢复
5.密码文件(password file)
密码文件是一个可选文件,允许远程SYSDBA或管理员访问数据库。具体操作比较复杂。
二、实例的物理结构 :
1.参数文件(parameter file)
参数文件记录了Oracle数据库的基本参数信息,主要包括:数据库名、控制文件路径、进程等。
以前的参数文件名为init.ora,所以又叫init文件,但是在Oracle10g中,参数文件名为SPFILEsid.ora,其参数由Oracle系统自动管理。SPFILE的改进主要消除了参数文件的两个严重问题:
1.由于只能放在数据库服务器上,不能放在客户机上,所以杜绝参数文件的繁衍。
2.可使用ALTER SYSTEM命令直接写入参数值,无需使用编辑器进行编辑。(用户最好不要用编辑器进行修改)
注:取消参数设置:alter system reset sort_area_size scope=spfile sid='*'
2.跟踪文件(trace file)
跟踪文件能够提供调试信息,需要设置参数SQL_TRACE=TRUE
数据库的测量性可以使用以下方法:
1.V$动态视图:例如V$WAITSTAT、V$SESSION_EVENT等,均可反映系统动作
2.审计命令:例如DBMS_FGA等,可对某个表进行颗粒审计检测
3.资源管理器:DBMS_RESOURCE_MANAGER,对数据库资源(CPU、I/O等)实现微管理
4.Oracle事件:跟踪诊断,在之前文章中已经详细介绍过
5.DBMS_TRACE:PL/SQL引擎中的工具,全面记录调用树、产生的异常、遇到的错误等
6.触发器:不用介绍了
7.SQL_TRACE:即10046事件
3.警告文件(alert file)
警告文件就是数据库的日记,是一个简单的文本文件。记载了从数据库创建到完结之间的所有包括日志开关、内部错误、表空间创建、离线及恢复等等的所有操作信息。
三、其他物理结构:
1.修改跟踪文件(change tracking file)
修改跟踪文件是Oracle10g新增的一个可选文件,唯一的目的是跟踪上一个增量备份以来那些块已经修改。这样RMAN就只需要备份发生变化的块,而不必读取整个数据库。如果打开跟踪功能,数据库的任何改变都会被自动写入到这个文件中。但是这回消耗系统的资源。
可使用以下命令打开:alter database enable block change tracking;
2.闪回日志文件(flashback log file)
这也是Oracle10g的新增功能。引入Flash Back命令是为了加快原来很慢的时间点数据库恢复(point in time database recovery)过程。具体内容参考详细资料。
3.转储文件(dump/DMP file)
使用导出工具创建的独立的DMP文件,其中包括了所有必要的元数据(create和alter语句形式),可能还有数据本身,可以用于重新创建表、模式、甚至整个数据库。而导入工具的作用就是读取这些DMP文件,执行其DDL语句,并加载其数据。
4.数据泵文件(Data Pump file)
主要是被外部表和新的导入、导出工具(IMPDP/EXPDP)使用。只有10g之后的版本有这种功能。
5.平面文件(flat file)
平面文件就是一些没有格式的数据记录文件。