ORACLE数据库技术实用详解
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

4.2 静态参数文件

在Oracle 9i之前,我们一直使用静态的文本文件来保存初始化参数的配置,Oracle为该文件起了个名字叫pfile(也就是parameter file的意思)。我们必须通过操作系统的文本编辑器对该文件进行编辑(比如,Windows下我们可以使用notepad;UNIX/Linux下则可以使用vi等)。初始化参数以条目的形式存放在该文件里,一个条目就是一行记录。比如,我们希望将shared pool的大小设置为200MB,则我们可以在pfile里写上:

    shared_pool_size = 200M

这里显示的就是一个条目。下面的内容为该文件的一个例子:

    audit_file_dest='/u01/app/oracle/admin/orcl/adump'
    compatible='10.2.0.1.0'
    control_files='/u01/app/oracle/oradata/orcl/control01.ctl','/u01/app/oracle/oradata/or
cl/control02.ctl','/u01/app/oracle/oradata/orcl/control03.ctl'
    core_dump_dest='/u01/app/oracle/admin/orcl/cdump'
    db_block_size=8192
    db_name='ora10g'
    shared_pool_size=80M
    shared_pool_size=100M
    ……

从这里可以看到,我们可以为初始化参数设置多个值,比如上面的control_files参数。同时,我们也可以为相同的初始化参数设置多个条目,就像上面所显示的那样,我们为shared_pool_size设置了两个条目,分别是80MB和100MB,这时shared pool到底多大呢?对于重复设置的参数来说,Oracle取最后那个参数的值,也就是最终shared pool为100MB。

Oracle 9i之前,当我们启动数据库实例,而又没有明确指定要用哪个初始化参数文件来启动当前实例时,Oracle会自动去默认目录下找默认的pfile是否存在,如果存在则会使用该pfile来启动实例。对于Windows来说,默认目录为%ORACLE_HOME%\database;对于UNIX/Linux来说,默认目录则为$ORACLE_HOME/dbs。

在查找默认的pfile时,Oracle会先找initSID.ora(这里的SID为数据库实例名,对于上面我们创建的数据库来说,pfile就是initora10g.ora文件)。如果找到则用该初始化参数文件启动实例。否则,会查找init.ora文件是否存在,如果没有找到init.ora,则Oracle会显示如下的错误消息:

    SQL> startup
    ORA-01078: failure in processing system parameters
    LRM-00109: could not open parameter file '/u01/app/oracle/product/10.2.0/db_1/dbs/
initora10g.ora'

很明显,Oracle告诉我们没有找到初始化参数文件(也就是initora10g.ora),所以不能启动数据库实例。不过我们可以在启动实例时,告诉Oracle不要去默认目录下找默认pfile,而是使用我们指定的pfile来启动数据库实例。如下所示:

    SQL> startup pfile=/u01/app/oracle/my_init.ora

正像这里所显示的,我们启动数据库时,指定my_init.ora作为启动数据库时的参数文件,从而改变了Oracle的默认行为。

对于pfile来说,在启动数据库实例的时候,会打开该文件,并读取一次该文件,把里面的内容读取完毕,调入内存以后,该文件就不会再被读取了。也就是说,如果我们手工修改了该文件里的参数值,那么只有在下次重新启动数据库实例的时候,我们所做的修改才能生效。