ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Oracle参数文件解析——参数文件分析获取

Oracle参数文件解析——参数文件分析获取

原创 Linux操作系统 作者:realkid4 时间:2011-06-03 18:14:17 0 删除 编辑

 

Oracle参数文件(Parameter File)是Oracle数据库中一个重要的文件组成部分,负责在启动阶段提供重要的参数支持。正确配置的参数文件可以保证启动过程顺利进行。

 

 

1、从启动过程看参数文件

 

首先说说启动过程中,参数文件Parameter File的作用。Oracle启动过程共分为三个阶段:nomountmountopen。其中,涉及到nomount阶段的重要文件就是参数文件。在nomount阶段,详细配置信息流如下:

 

ü        通过环境变量定位启动实例物理位置和参数文件位置

 

在数据库实例停止的状态下,用户通过sqlplus登录空闲实例,主要认证方式是OS验证或者密码文件Password File。此时,Oracle需要确定启动的实例名称和对应的Oracle程序文件是什么?解决的方法就是利用操作系统的环境变量。

 

Linux系统上,我们从安装时就要进行一系列的环境变量配置。如下:

 

//获取以ORA开头的环境变量

[oracle@oracle11g ~]$ env | grep ORA

ORACLE_SID=wilson

ORACLE_BASE=/u01

ORACLE_HOME=/u01/oracle

 

 

$ORACLE_SID$ORACLE_BASE$ORACLE_HOME是环境变量中最重要的三个。分别定义了启动数据库实例的名称sid、对应Oracle产品软件的基础目录baseOracle数据库安装的Home路径。在启动sqlplus的时候,三个参数都会传入到sqlplus的上下文环境。

 

在进行startup的时候,开始是nomount阶段。Oracle首选去读取三个环境变量值,找到$ORACLE_HOME对应的目录结构。目前Oracle目录结构大都遵循OFAOptimal Flexible Architecture最佳灵活体系结构)。简单来说,就是将各种配置文件都遵守相同部署规范和存储结构。在这个体系中,Linux/Unix描述参数文件通常都在$ORACLE_HOME/dbsNT体系下目录为$ORACLE_HOME/database)目录下。所以,如果可以确定$ORACLE_HOME目录,就可以找到参数文件存储的目录。

 

ü        确定参数文件名称

 

由于历史的原因,Oracle系统分别经历过二进制参数文件和ASCII格式参数两个时代。目前的Oracle版本,两类型文件都可以被支持。区别就是寻找的顺序差异。

 

寻找的顺序:首先是spfile.ora,该文件是二进制格式。如果不存在,Oracle会试图寻找spfile.ora文件,该文件也是二进制格式。如果两者都没有找到,就开始寻找init.ora文件,最后确定init.ora文件。

 

注意,此时就需要使用到$ORACLE_SID的环境变量。如果四个文件都没有找到,Oracle就会在nomount阶段报错。

 

 

ü        根据参数文件Parameter File启动实例

 

nomount阶段,Oracle是不会主动进行数据库文件的开启和加载的。这个阶段主要完成的就是数据库实例instance创建,包括backgroud process创建和共享内存分配。

 

nomount阶段实例进程和共享内存创建的详细解析,请参阅笔者《Oracle启动三阶段》(http://space.itpub.net/17203031/viewspace-684503)系列。

 

 

经过了nomount阶段,Oracle实现了数据库实例的启动,共享内存分配。另一个重要方面就是参数文件信息的读取。下面我们一起检查下参数文件中有什么信息呢?

 

 

2、获取参数文件信息

 

目前的Oracle版本中,参数文件主要是使用二进制spfile文件保存的。直接进行修改参数文件的手段主要是通过启动Oracle之后,通过alter system/database之类的命令。本篇中,我们可以间接通过将二进制格式文件转化为ASCII格式文件,来查看参数内容。

 

判断数据库启动是否是通过SPFILE二进制格式启动,只需要查看参数spfile。如果有value值,就表示启动的数据库是使用二进制格式参数文件。如果没有,就是使用ASCII格式文件。

 

 

SQL> show parameter spfile

 

NAME                        TYPE        VALUE

------------------------------------ ----------- ------------------------------

spfile                          string      /u01/oracle/dbs/spfilewilson.ora

 

 

之后我们到文件系统中查看该文件。

 

//使用file命令查看格式内容

 

[oracle@oracle11g test]$ file /u01/oracle/dbs/spfilewilson.ora

/u01/oracle/dbs/spfilewilson.ora: data //二进制格式

 

 

使用create pfile命令将二进制的spfile导出为pfile文件。

 

 

SQL> conn / as sysdba

Connected.

SQL> create pfile='/test/pfile.ora' from spfile;

File created.

 

//切换到文件系统

[oracle@oracle11g ~]$ cd /test

[oracle@oracle11g test]$ ls -l

total 4

-rw-r--r--  1 oracle oinstall 963 Jun  1 04:49 pfile.ora

[oracle@oracle11g test]$ file pfile.ora

pfile.ora: ASCII text

 

 

展开文件pfile.ora,可以直接获取到参数文件中包括的所有参数。

 

 

[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'

 

 

相对于Oracle内部控制文件包括的巨大参数数量,参数文件Parameter File中包括了一些很核心的重要参数。

 

 

接下来,我们打算针对不同类型对这些参数进行分析和解释。

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17203031/viewspace-697141/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
求道~

注册时间:2010-11-30

  • 博文量
    545
  • 访问量
    7677504