日期:2014-05-16  浏览次数:20478 次

Oracle系列之三 文件
一、概述
Oracle文件系统包括实例相关的文件:参数文件、跟踪文件、警告文件;数据库相关的文件:控制文件、数据文件、重做日志文件、临时文件、密码文件、修改跟踪文件、闪回日志文件。另外一些与数据库相关的其他文件转储文件、数据泵文件、平面文件不在此处细说。
二、参数文件(parameter file)
记录控制文件所在位置,存储一些参数,如内存配置相关、恢复相关、数据库名等,包括db_name、sga_aggregate_target、shared_pool_size、java_pool_size、db_block_size等的值,实例启动和运行会用到这些参数。另外还指定了控制文件存储的地方。
10g以前是每个客户端都存储一个initOID.ora的文件,10g后只在服务端存储一份,防止参数文件在客户端泛滥。可以通过命令行把spfile转储成文本的pfile,恢复数据库启动实例时候还是会用到pfile的。可以通过如下命令来根据spfile创建pfile:
SQL> create pfile from spfile;

文件已创建。
生成的文件在%ORACLE_HOME%\dbhome_1\database目录下,如我的是INITorc11gr2.ORA。
可以通过命令修改这些参数:
alter system set parameter = value [comment = 'text'] [deferred] [scope = memory|spfile|both ] 
? parameter = value提供了参数及其相应的值,如sga_target = 800m
comment = 'text' 为参数添加注释,可以说明修改原因,问题是这个注释存储在哪里?
deferred表示不是立即生效,是在下次启动时候才生效。有些参数并不是修改后立即生效的,比如?
scope表示修改参数作用范围,如果是memory表示只在当前实例生效;spfile指写到参数文件,下次生效;both表示当前实例生效并写入参数文件。跟deferred有冲突的?如果是memory并且deferred什么情况?
三、跟踪文件(trace file)
记录数据库对某些时间的响应,记录数据库的调试信息,用于数据库出错诊断。
又分为core、background和user三种类型的跟踪文件,通过sql可以得到三个文件存放的位置:
SQL> show parameter dump_dest;

NAME                                 	TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
background_dump_dest           string                 d:\oracle\diag\rdbms\orc11gr2\orc11gr2\trace
core_dump_dest                       string                 d:\oracle\diag\rdbms\orc11gr2\orc11gr2\cdump
user_dump_dest                       string                 d:\oracle\diag\rdbms\orc11gr2\orc11gr2\trace
? 这个是oracle11g的结果,在oracle10g,目录是有差异的。其中background_dump_dest是共享服务器连接时进程的跟踪文件所在目录,user_dump_dest是专用服务器连接时进程的跟踪文件目录。core_dump_dest是系统出现严重问题时候的诊断信息。
可以通过三种方式启动记录跟踪文件:
1、alter system set sql_trace=true;
2、dbms_monitor
3、通过事件
如何提取跟踪文件信息?如何阅读?
四、警告文件(alert file)