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

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

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

首先说说启动过程中,参数文件Parameter File的作用。Oracle启动过程共分为三个阶段:nomount、mount和open。其中,涉及到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产品软件的基础目录base和Oracle数据库安装的Home路径。在启动sqlplus的时候,三个参数都会传入到sqlplus的上下文环境。

在进行startup的时候,开始是nomount阶段。Oracle首选去读取三个环境变量值,找到$ORACLE_HOME对应的目录结构。目前Oracle目录结构大都遵循OFA(Optimal Flexible Architecture最佳灵活体系结构)。简单来说,就是将各种配置文件都遵守相同部署规范和存储结构。在这个体系中,Linux/Unix描述参数文件通常都在$ORACLE_HOME/dbs(NT体系下目录为$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

NAMETYPEVALUE

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

spfilestring/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 Jun1 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中包括了一些很核心的重要参数。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值