注:此环境为Linux下的oracle

第一节中列出了oracle数据库中的主要文件,今天就在继续深入的看一下各个文件
一、参数文件(pfile和spfile)
数据库中的参数文件被称为初始化文件(init file),一般格式为init<sid>.ora或者spfile<sid>.ora。
init<sid>.ora,是一个文本文件,一般存在于服务器或者是客户端上。
spfile<sid>.ora,是一个二进制文件,一般只存在于服务器上。
保存路径为:$ORACLE_HOME/dbs,
此两个文件可以相互转换:
create pfile from spfile;
create spfile from pfile;
需要注意的一点是pfile是可以用vi编辑器直接编辑,但是spfile不允许使用vi编辑器编辑,只能使用上边的命令生成spfile文件。
我们在看下此文件中保存的是什么内容

可以看到保存的是数据库的参数,一般是以一个键值对的格式保存。如db_name='orcl',如何查询这些参数值呢,我们又两种方法查看:第一种为查看v$parameter视图;第二种为show parameter 参数名。

在看看如何设置这些参数值,我们使用如下命令:
alter system set parameter=value scope=<memory|spfile|both> <sid='sid|*'>,这里边的scope就是指参数的作用域,分别为实例中修改,spfile中修改和在两者中都修改,第一种只能在当前实例中生效,实例重启后,参数值为修改前的值,第二种重启后生效。
二、跟踪文件(trace file)
此文件提供数据库的调试信息。如果数据库出现问题,会生成包含大量诊断信息的跟踪文件,,格式一般为<sid>_ora_xxxx.trc,路径为参数background_dump_dest,core_dump_dest,user_dump_dest参数的value值定义的路径

oracle数据库不是开源软件,但是提供了很多调试工具,通过trace file就可以看见数据库内部运行机制,将oracle变成了一个可测量的软件,这些可测量反映在以下几个方面:
v$视图,审计命令,资源管理器(dbms_resource_manager),oracle事件,dbms_trace,sql_trace/dbms_monitor,AWR,ASH,ADR,SPA等
三、告警文件(alter log)
此文件也称为oracle数据库的日志,是一个文本文件,从数据库创建一直保存到数据库删除。保存了所有的数据库操作的信息。格式一般为alter_<sid>.log和log.xml,路径为$ORACLE_BASE/diag/rdbms/<sid>/<sid>/trace和$ORACLE_BASE/diag/rdbms/<sid>/<sid>/alter,前一个路径下的为文本文件,后一个路径下的为xml格式文件。
四、数据文件(database file)
数据文件是数据库中最重要的一类文件,最终的业务数据都是存储在数据文件中的,查看数据库中的数据文件为:select FILE#,status,NAME from v$datafile;
数据文件又涉及到数据库的存储层体系结构:块,区,段,表空间
五、控制文件(control file)
控制文件(control file)是数据库的一个重要文件,包含oracle数据库其他文件的目录。参数文件告知实例控制文件的位置,控制文件告知实例数据文件和联机重做日志文件的位置。控制文件中还包含检查点信息,实例名,SCN,归档重做日志的历史和RMAN信息等。控制文件如此重要,因此需要多路复用,重点备份。
六、重做日志文件(redo log)
重做日志文件(redo log)也是数据库的一个重要文件,是数据库的事物日志,主要作用是保证数据库的数据不丢失和恢复。包括联机重做日志文件和归档重做日志文件。联机重做日志至少包含两个重做日志文件组,每个组又包含一个或多个重做日志成员。数据库以轮训的方式写重做日志,其中一个日志组切换到另一个日志组的动作被称为日志切换(log switch),由于联机重做日志的这种设计,会覆盖之前的日志,为了保证数据库不丢失,oracle数据库引入了归档重做日志,数据库采用两种模式,archivelog模式和noarchivelog模式,在前一种模式中日志就要用到归档重做日志,在要覆盖在线重做日志前,保证此在线重做日志必须写入到归档重做日志中,才允许覆盖;而第二种模式,直接覆盖。这下我们就知道了要保证数据不丢失,尽量使用archivelog模式。




