参数文件中记录了Oracle数据库实例启动所需的重要参数信息。下面分别根据不同类型进行描述解释。

 

 

 [oracle@oracle11g test]$ cat pfile.ora

wilson.__db_cache_size=92274688

wilson.__java_pool_size=4194304

wilson.__large_pool_size=4194304

wilson.__oracle_base='/u01'#ORACLE_BASE set from environment

wilson.__pga_aggregate_target=142606336

wilson.__sga_target=272629760

wilson.__shared_io_pool_size=0

wilson.__shared_pool_size=155189248

wilson.__streams_pool_size=8388608

*.audit_file_dest='/u01/admin/wilson/adump'

*.audit_trail='DB'

*.compatible='11.2.0.0.0'

*.control_files='/u01/oradata/WILSON/controlfile/o1_mf_6bcsqm50_.ctl','/u01/flash_recovery_area/WILSON/controlfile/o1_mf_6bcsqmd8_.ctl'

*.db_block_size=8192

*.db_create_file_dest='/u01/oradata'

*.db_domain=''

*.db_name='wilson'

*.db_recovery_file_dest='/u01/flash_recovery_area'

*.db_recovery_file_dest_size=3145728000

*.diagnostic_dest='/u01'

*.dispatchers='(PROTOCOL=TCP) (SERVICE=wilsonXDB)'

*.memory_target=415236096

*.open_cursors=300

*.processes=150

*.remote_login_passwordfile='EXCLUSIVE'

*.shared_servers=2

*.undo_tablespace='UNDOTBS1'

 

 

1、单独实例与全局实例参数设置差异

 

在我们导出的参数ASCII文件中,可以明显看到参数的现实格式为“Key-value”配对方式显示。具体看,参数名称key格式为“.”。

 

其中,sid表示参数效用范围实例。从上面的例子中看,wilson.就表示该参数起效果的实例是在wilson实例之上。此外,一些参数的sid位置是用“*”表示,这样的含义就是该参数其效果是在全局RAC下作用。

 

通常我们的数据库环境都是单实例(后台进程+共享内存)外加单数据库。而RAC(Real Application Cluster)是Oracle推出的数据库集群解决方案。简单的说,就是多台PC上部署多个Oracle实例,而对应的数据库(数据文件)却只有一份。使用RAC技术,一般可以提高数据库系统整体的可用性和负载均衡特性。

 

 

如果参数sid中使用“*”号,就表示这个参数要在整个RAC多个实例上同时作用。

 

 

2、遗留实例容量参数

 

在参数文件中,包括一些以“_”开头的参数文件参数,如“_db_cache_size”等。这些参数可以成为遗留实例容量参数。这些参数大都是一些描述共享内存SGA、PGA区容量的参数,如large_pool、java_pool的大小。见下表:

 

参数名称

容量含义

备注

__db_cache_size

Buffer Cache容量

容纳Data Block缓存

__java_pool_size

Java Pool容量

为Oracle自身的JVM提供内存;

__large_pool_size

大池容量

提供备份、恢复等大数据块需求;

__pga_aggregate_target

PGA总容量设置

分配各进程的PGA总和;

__sga_target

SGA总容量设置

 

__shared_io_pool_size

Shared IO

共享IO池的大小

__shared_pool_size

共享池大小

缓存SQL语句和数据字典;

__streams_pool_size

流池大小

支持流stream组件工作;

 

那么,这些参数加入“__”的含义是什么呢?在Oracle中,数据库内存空间分配,特别是SGA各个子分区的分配一直是一个难题。从Oracle 10g开始,Oracle开始推出了自动管理内存空间各个分区的技术。数据库配置人员只需要配置出SGA或者总共Oracle使用数据库的空间target,Oracle会自动根据负载和工作量进行各个分区调节。这样,通常是可以实现内存分布的最优化目标。

 

在Oracle进行各分区调节的时候,会将当前的空间已“__”的参数计入到系统参数文件中。当重新启动Oracle的时候,会首先按照这部分的参数设置来配置实例的内存空间。这样的有点是能够保留下系统经历“千辛万苦”才调节出的参数组合。

 

 

3、关键路径、容量参数配置

 

除了用于进行Oracle实例内存构建的参数之外,还包括如下一些关键路径信息和容量参数信息:

 

ü        数据库块datablock大小

 

参数文件中确定说明了data block的大小,示例中数据库块大小为8k。

 

ü        control_files控制文件配置目录

 

控制文件包括了数据库诸多参数和当前状态信息。参数文件加载之后,Oracle启动mount、open很大程度上需要读取控制文件内容。参数文件中会定义当前系统的控制文件位置和名称。如当前实例中,就有:

 

*.control_files='/u01/oradata/WILSON/controlfile/o1_mf_6bcsqm50_.ctl','/u01/flash_recovery_area/WILSON/controlfile/o1_mf_6bcsqmd8_.ctl'

 

 

控制文件极其重要,如果意外损坏或者误删除影响重大。所以,通常会采用多份备份的方法进行保存。同时在使用RMAN等备份手段时,也存在专门针对控制文件的备份方法。

 

ü        audit_审计信息保存参数

 

数据库审计是Oracle提供的一个可选组件功能。参数文件Parameter File中包括如下内容:

 

*.audit_file_dest='/u01/admin/wilson/adump'

*.audit_trail='DB'

 

 

其中表示数据库审计信息策略(Database)和审计文件存放的文件系统位置。

 

ü        恢复文件位置和大小

 

设置存放恢复文件,如Archivelog Files和一些备份信息的物理位置。这个位置存放大小可以通过dest_size参数进行控制。

 

 

*.db_recovery_file_dest='/u01/flash_recovery_area'

*.db_recovery_file_dest_size=3145728000

 

 

 

ü        OMF创建参数设置

 

Oracle推出了OMF技术(Oracle Managed File),实现各类型文件的自动化管理。用户不需要负责文件名称设置,在创建文件的时候,会自动在设置的目录上建立文件。

 

*.db_create_file_dest='/u01/oradata'

 

 

参数db_create_file_dest为数据文件创建的目录。这样,在建立表空间的时候,只需要指定表空间名称,不需要指定数据文件名称。Oracle会自动的在db_create_file_dest目录下建立相关名称数据文件。

 

 

4、实例相关参数

 

除了实例使用容量信息外,Oracle参数文件中还指定了一些进程和连接模式信息。

 

ü        共享连接模式设置

 

Oracle两种连接方式:共享模式和独占模式。在通常情况下,两种模式是可以并存的。一般默认的连接是独占dedicate模式,此时允许一些服务是使用共享连接模式。通常Oracle在安装的时候是有XML数据库服务的,这些在设置中是使用共享连接模式。

 

*.dispatchers='(PROTOCOL=TCP) (SERVICE=wilsonXDB)'

*.shared_servers=2

 

 

参数dispatcher和shared_servers分别是共享连接模式的设置参数。Dispatcher设置共享连接支持的服务名称和连接协议。Shared_server表示共享连接池中默认存放的数据库连接数量。

 

ü        实例进程数量和开启游标数量

 

Parameter File中还包括一些实例后台进程个数配置信息。

 

 

*.open_cursors=300

*.processes=150

 

 

Processes参数表示Oracle实例能够同时支持的服务进程Server Process个数。如果实际连接超过Process参数数量,Oracle会拒绝新连接或者强制断开不活跃连接。

 

open_cursors是表示一个session会话中可以开启的最大游标数量。

 

 

ü        数据库名称信息

 

参数文件中,也包括了数据库实例的名称信息。

 

*.db_domain=''

*.db_name='wilson'

 

 

 

5、结论

 

参数文件中包括了数据库系统中一些最基本的参数内容,是启动过程中一个不可缺少的环节。本篇中展示了笔者示例数据库中的参数文件参数。但是,并不是说每个参数都是必需的。

 

其中,如db_block_size、control_files、processes和undo_management都是称为basic参数。如果这些参数不设置,就会影响到Oracle的正常启动,启动过程会报错。其他一些Advanced参数Oracle都有默认值可以供使用。