oracle之物理数据库结构概述(数据文件、重做日志文件,控制文件等各种数据库文件)
oracle之物理数据库结构概述(数据文件、重做日志文件,控制文件等各种数据库文件)
2011年02月16日
oracle之物理数据库结构概述(数据文件、重做日志文件,控制文件等各种数据库文件) 收藏 oracle之物理数据库结构概述
oracle的物理结构其实是由各种各样的文件组成的,
其中与数据库相关的有:
数据文件(data file):这些文件是数据库的主要文件;其中包括数据表、索引和所有其他的段。
临时文件(temp file):这些文件用于完成基于磁盘的排序和临时存储。
控制文件(control file):这些文件能告诉你数据文件、临时文件和重做日志文件在哪里,还会指出与文件状态有关的其他元数据。
重做日志文件(redo log file):这些就是事务日志。
密码文件(password file):这些文件用于对通过网络完成管理活动的用户进行认证。它允许远程SYSDBA 或管理员访问数据库。
修改跟踪文件(change tracking file):这个文件有利于对Oracle 数据建立真正的增量备份。修改跟踪文件不一定非得放在闪回恢复区(Flash Recovery Area),不过它只与数据库备份和恢复有关。
闪回日志文件(flashback log file):这些文件存储数据库块的"前映像",以便完成新增加的FLASHBACK DATABASE 命令。
与实例相关的文件只有:
参数文件(parameter file):这些文件告诉Oracle 实例在哪里可以找到控制文件,并且指定某些初始化参数,这些参数定义了某种内存结构有多大等设置。它有本地和服务2种形式
跟踪文件(trace file):这通常是一个服务器进程对某种异常错误条件做出响应时创建的诊断文件。
警告文件(alert file):与跟踪文件类似,但是包含"期望"事件的有关信息,并且通过一个集中式文件(其中包括多个数据库事件)警告DBA。
还有一些特殊的文件:
转储文件(dump file ,DMP file):这些文件由Export(导出)数据库实用程序生成,并由Import(导入)数据库实用程序使用。
数据泵文件(Data Pump file):这些文件由Oracle 10g 新增的数据泵导出(Data Pump Export)进程生成,并由数据泵导入(Data Pump Import)进程使用。外部表也可以创建和使用这种文件格式。
平面文件(flat file):这些无格式文件可以在文本编辑器中查看。通常会使用这些文件向数据库中加载数据。
关于数据库的各个文件,具体可以参看:
关于参数文件,具体可以参看:
下面提几个点:
1.一个数据文件可以存储表空间内各种类型的方案对象。Oracle为表空间内的方案对象分配空间时可以使用一个或多个数据文件。也就是说,方案对象是可以跨数据文件的。
2.用户也可以令一个数据文件(datafile)单独地脱机(offline),但是这种操作主要用于数据库恢复工作中
3.临时数据文件与普通数据文件类似,但有以下区别:
a.临时文件总是被设置为 NOLOGGING 模式。
b.用户不能将临时文件设为只读
c.用户不能使用 ALTER DATABASE 语句创建临时文件
d.介质恢复(media recovery)不能识别临时文件:
BACKUP CONTROLFILE 不会产生与临时文件有关的信息
CREATE CONTROLFILE 不能设定与临时文件有关的信息
e.当用户创建临时文件或改变其容量时,Oracle并不保证按照用户指定的文件容量为其分配磁盘空间。在某些文件系统(file systems)中(例如UNIX)磁盘块(disk block)并不会在文件创建或改变容量时分配,而是在其被使用之前 才分配。
f.临时文件(tempfile)信息可以从 DBA_TEMP_FILES 数据字典表及 V$TEMPFILE 动态性能视图(dynamic performance view)中查询,但是不存在于 DBA_DATA_FILES 或 V$DATAFILE 视图中。
4.可以用4 种文件系统机制存储数据文件里的数据。这里的数据是指你的数据字典、redo 记录、undo 记录、表、索引、LOB 等,也就是你自己每天关心的数据。
"Cooked"操作系统(OS)文件系统; 原始分区(raw partitions,也称裸分区); 自动存储管理(Automatic Storage Management,ASM); 集群文件系统;
5.对临时文件并不生成redo 日志,不过可以生成undo 日志。由于UNDO 总是受redo 的"保护",因此,这就会生成使用临时表的redo 日志,
6.控制文件(control file)中主要包含以下内容:
数据库名(database name) 数据库创建时的时间戳(timestamp) 属于此数据库的数据文件(datafile)及重做日志文件(redo log file)的名称与存储位置 表空间(tablespace)信息 脱机(offline)的数据文件 日志历史信息 归档日志(archived log)信息 备份集(backup set)与备份块(backup piece)信息 数据文件与重做日志的备份信息 数据文件复制信息 当前的日志序列号(log sequence number) 检查点(checkpoint)信息
7.对于控制文件,建议如下:
在每个数据库中使用多重控制文件(multiple control file) 将控制文件的副本存储在不同的物理磁盘上 使用操作系统的镜像功能(operating system mirroring) 监控备份工作
8.重做日志文件,可用于:
系统崩溃后的实例恢复 通过备份恢复数据文件之后恢复介质 备用(standby)数据库处理 输入到流中,这是一个重做日志挖掘过程,用于实现信息共享(这也是一种奇特的复制)
9.些操作可能会以尽量少生成redo 的模式完成。例如,可以使用NOLOGGING 属性创建一个索引。但是Oracle 完成的所有递归SQL 会写入日志。
10.进行日志切换的时候可能出现暂停,因为它要确保将被覆盖的事务日志的内容已经被执行,即写入磁盘已完成.也就是说,如果事务日志保护的缓冲区数据在没有被或者正在被写入磁盘的时候,切换操作是无法进行的。
11.事务日志容量越小,日志切换发生的越频繁,影响效率
12.有什么理由不采用ARCHIVELOG 模式呢?性能不能作为理由;适当配置的归档只会增加极少的开销甚至根本不增加开销。由于这一点,再加上另外一条:如果一个系统会"丢失数据",那它再快也是没有用的
13.密码文件保存了一个用户名和密码列表,这些用户名和密码分别对应于可以通过网络远程认证为SYSDBA 的用户。Oracle 必须使用这个文件来认证用户,而不是数据库中存储的正常密码列表。
14.修改密码文件状态:alter system set remote_login_passwordfile=exclusive scope=spfile;(SHARED(多个数据库可以使用同样的密码文件)和EXCLUSIVE(只有一个数据库使用一个给定的密码文件)).
但是注意这里的修改不会动态起效,还是需要重启实例的。
对于新建的密码文件,只有一个合法的sysdba用户 sys。要想把其他具有sysdba的用户加入到密码文件中,需要重新对用户grant sysdba to xxxx;
15.修改跟踪文件(change tracking file)惟一的目的是跟踪自上一个增量备份以来哪些块已经修改。采用这种方式,恢复管理器(RecoveryManager,RMAN)工具就能只备份确实有变化的数据库块,而不必读取整个数据库。
alter database enable block change tracking using file '/home/or