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

Oracle数据库学习笔记(三)

Initialization Parameter Files

?

?

????? 一个Oracle Instance在启动之前,他必须有一些必要的参数,这些参数称为初始化参数,这些参数保存在一个初始化参数文件中。初始化参数文件就是Oracle在执行启动命令时,这时Oracle会去自动的读取一个初始化参数文件。
????? 初始化参数文件中的参数规定了SGA的SIZE、各个SGA Components的SIZE以及Background Process有几个(即那些启动那些不启动)等信息。

Oracle Instance有两种类型的参数:

  • 显示的参数 :在参数文件中显示的规定了参数值。
  • 隐式的参数 :由于Oracle的参数近200个,不可能在参数文件中把参数列全了,??????????? 如果在参数文件中不体现出来,那么就采用Oracle的默认值。

????? Oracle Instance的参数文件可以存在多个,可以在启动前去指定Oracle Instance使用哪个参数文件。参数文件里面记录的这些参数,也可以在Oracle Instance运行起来后进行修改,修改的效果不同,有的参数可以修改内存里的参数,有的参数可以把把参数文件和内存中的参数一并修改了,有的参数仅能修改参数文件中的数据。
Oracle Instance有两种类型的参数文件:

  • 静态参数文件 (Static Parameter file? PFILE)
  • 持久性服务器参数文件 (Persistent Server parameter file? SPFILE)

下图为使用Linux中的oracle用户启动Oracle Instance:

?

????? 当进入SQL*Plus后输入命令【startup】,这时Oracle就会自动的去读取一个参数文件,并且按照参数文件的规定,启动Oracle Instance。
????? 当Oracle Instance启动起来后,想去查看初始化参数,可以通过Oracle提供的一个视图v$parameter进行查看。下图为该视图的表结构。

?

下图为查询某一个参数的配置:

?

?

使用show parameter命令查询参数的时候可以仅输入命令的前几个字母就行。

?

?

在SQL*Plus中可以设置显示模式,例如设置某一列的宽度:
col name format a20? 表示name字段显示20个字符
col value format a30 表示value字段显示30个字符

PFILE(Static Parameter file)

?

????? PFILE就是一个文本文件,可以使用操作系统自带的文本编辑器去编辑,可以手工进行修改。假设Oracle Instance正在运行,这时修改了PFILE类型的参数文件后,他仅仅是修改了这个参数文件,无法使修改后的参数文件立即生效,只能重启Oracle Instance才可以生效。PFILE在Oracle Instance启动的时候打开。
????? PFILE在Linux下的缺省目录【$ORACLE_HOME/dbs】,具体可以参考Oracle提供的一个示例文件【init.ora】

?

????? PFILE在Windows下的缺省目录是【$ORACLE_HOME/database】
????? Oracle有一个命名惯例,例如:PFILE的惯例就是【initSID.ora】
????? 一般安装数据库是采用DBCA的方式进行创建(使用该方式创建的数据,在数据库创建完成时,其初始化参数文件也已经创建完毕,使用DBCA的方式默认配置文件为SPFILE),如果需要手工进行安装数据库,并手工去配置初始化参数文件,可以先将其他地方的数据库参数文件拷贝到新安装Oracle的机器上,或者其实在Oracle安装好之后在其目录下有一个提供参考的配置文件实例init.ora文件。需要注意的是拷贝时应注意PFILE的命令惯例。

cp init.ora $ORACLE_HOME/dbs/initdba01.ora
?

????? 拷贝完成之后,便可以修改初始化参数文件中的参数配置并指定数据库启动时需要读取的初始化参数文件。

?

????? 需要修改的参数:

  • db_name 需要修改成与SID相同。
  • db_block_size 设置Oracle的快的大小一般设置为8192(一般在32位的机器上都设置为8K),如果没有需要新建该属性。
  • control_files 设置Control文件的路径,需要根据自己的实际情况修改。

????? 由于数据库中自带的init.ora文件是提供与Oracle 8使用的,需要做很多修改,也很容易发生错误,建议最好使用SPFILE的方式。(具体的参数含义可以参考Oracle联机文档)

?

?

下图为PFILE Example

?

?

SID(Site Identifier)

?

?

????? SID在Oracle中很重要,一个Oracle服务器可以称为一个站点,Oracle在Linux下SGA的表现形式就是共享内存,而共享内存必须有一个uniqu