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/ora10gr1/product/10.1.0/oradata/ora10gr1/ORA10GR1/changed_blocks.bct';
16.闪回日志文件(flashback log file)简称为闪回日志(flashback log),这是Oracle 10g 中为支持FLASHBACK DATABASE 命令而引入的。
假如你误删了一个重要的数据表,怎么办?
(1) DBA 关闭数据库。
(2) DBA 启动并装载数据库,可以使用SCN、Oracle 时钟或时间戳(墙上时钟时间)发出闪回数据库命令,时间可以精确到一两秒钟。
(3) DBA 以RESETLOGS 选项打开数据库。
17.Oracle 10g 中的闪回恢复区(Flash Recovery Area)是一个新位置,包含如下文件:
磁盘上数据文件的副本。
数据库的增量备份。
重做日志(归档重做日志)。
控制文件和控制文件的备份。
闪回日志。
18.Oracle 10g 中至少有两个工具使用数据泵(data pump)文件格式。外部表(external table)可以加载和卸载数据泵格式的数据文件。
19.有了SPFILE,可以消除传统参数文件存在的两个严重问题:
可以杜绝参数文件的繁殖。SPFILE 总是存储在数据库服务器上;必须存在于服务器主机本身,不能放在客户机上。对参数设置来说,这样就可以只有一个“信息来源”。
无需在数据库之外使用文本编辑器手动地维护参数文件(实际上,更确切的说法是不能手动地维护)。利用ALTER SYSTEM 命令,完全可以直接将值写入SPFILE。管理员不必再手动地查找和维护所有参数文件。
20.删除spfile上的某个参数?alter system reset 参数名 scope=spfile sid='*';
21.Oracle 数据库(以及应用服务器和Oracle 应用)都是可以充分测量的。数据库中这种测量性反映在以下几方面:
a.V$视图:大多数V$视图都包含“调试”信息。V$WAITSTAT、V$SESSION_EVENT 还有其他许多V$视图之所以存在,就是为了让我们知道内核内部到底发生了什么。
b.审计命令:利用这个命令,你能指定数据库要记录哪些事件以便日后分析。
c.资源管理器(DBMS_RESOURCE_MANAGER):这个特性允许你对数据库中的资源( CPU、I/O 等)实现微管理。正是因为数据库能访问描述资源使用情况的所有运行时统计信息,所以才可能有资源管理器。
d.Oracle“事件”:基于Oracle 事件,能让Oracle 生成所需的跟踪或诊断信息。
e.DBMS_TRACE:这是PL/SQL 引擎中的一个工具,它会全面地记录存储过程的调用树、所产生的异常,以及遇到的错误。
f.数据库事件触发器:这些触发器(如ON SERVERERROR)允许你监控和记录你觉得“意外”或非正常的情况。例如,可以记录发生“临时空间用尽”错误时正在运行的SQL。
g.SQL_TRACE:这个SQL 跟踪工具还可以采用一种扩展方式使用,即通过10046 Oracle e事件。
22.不论是使用SQL_TRACE 还是扩展的跟踪工具,Oracle 都会在数据库服务器主机的以下两个位置生成一个跟踪文件:
如果使用专用服务器连接,会在USER_DUMP_DEST 参数指定的目录中生成跟踪文件。
如果使用共享服务器连接,则在BACKGROUND_DUMP_DEST 参数指定的目录中生成跟踪文件"
23.警告文件(也称为警告日志(alert log)) 就是数据库的日记。这是一个简单的文本文件,从数据库“出生”(创建)那一天起就会编写该文件,直到数据库“完结”(被你删除)为止。