IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Oracle学习笔记——初始化参数

    果冻想发表于 2015-05-27 13:26:24
    love 0

    软件的配置文件

    基本上每个软件都有一些配置信息;在Windows系统中,很多软件都将这些配置信息写入注册表中;而在Linux系统中,则是在/etc目录下生成一个配置文件。

    这些配置文件无非就是记录一些参数值,在软件启动的时候读取这些参数值,对软件进行初始化。同理,对于Oracle来说,也存在着这么个配置文件,里面记录了一些初始化参数,在Oracle启动的时候,会读取这个配置文件中的数据对Oracle进行初始化。这篇文章就对Oracle启动过程中使用到的这个参数文件进行重点讲解与分析。

    Oracle的启动“配置文件”

    在《Oracle学习笔记——数据库启动原理》这篇文章中也说到了,Oracle的启动分为三步,在第一步启动实例的时候,需要读取配置文件,决定分配多大的内存,那这个配置文件是“何许人也”呢?

    在Oracle中,有两种类型的初始化配置文件,更多的时候,我们把这两种初始化配置文件叫做初始化参数文件。Oracle有许许多多的初始化参数,这些参数用于对整个数据库的资源、用户访问、进程等信息进行控制。而这些初始化参数就保存在这个初始化参数文件中,我们可以进行读取,甚至修改。在Oracle中,这两种类型的初始化参数文件分别是:

    1. PFILE文件;
    2. SPFILE文件;

    这两种初始化参数文件中记录的内容是一模一样的,只是文件格式不一样罢了,PFILE文件就是一个文本文件,而SPFILE则是一个二进制文件。

    下面就分别对这两种初始化参数文件进行总结。

    PFILE文件

    PFILE文件和很多的配置文件一样,就是一个简单的文本文件,使用你的文本编辑器就可以打开。可能包含以下信息:

    orcl.__db_cache_size=201326592
    orcl.__java_pool_size=4194304
    orcl.__large_pool_size=4194304
    orcl.__oracle_base='C:\Oracle11g'#ORACLE_BASE set from environment
    orcl.__pga_aggregate_target=281018368
    orcl.__sga_target=528482304
    orcl.__shared_io_pool_size=0
    orcl.__shared_pool_size=310378496
    orcl.__streams_pool_size=0
    *.audit_file_dest='C:\Oracle11g\admin\orcl\adump'
    *.audit_trail='db'
    *.compatible='11.2.0.0.0'
    ...    
    

    这就是PFILE文件中的一些参数信息,以key=value的形式记录。

    SPFILE文件

    SPFILE是一个二进制文件,如果直接打开的话,是不可阅读的。在打开数据库的情况下,我们可以运行以下命令检查当前使用的是SPFILE,还是PFILE。

     SHOW PARAMETER PFILE;
    

    当以SPFILE文件启动数据库时,则会显示出SPFILE的信息。以此我们就可以得到SPFILE的路径。

    修改初始化参数

    初始化参数文件中的参数是为了对数据库的资源,进程,内存等信息进行限制的,避免不了要对这些参数进行修改,以达到最优的性能。

    对于PFILE文件,可以直接使用文本编辑器打开,直接编辑,简单明了。但是存在一个问题,在数据库运行时,DBA不能永久修改初始化参数的值。要想永久修改初始化参数的值,DBA需要先关闭数据库,对参数文件PFILE进行修改,然后用修改后的PFILE重新启动数据库。

    当使用SPFILE文件时,修改初始化参数的SQL命令为:

    -- key表示需要修改的参数名称
    -- value表示修改以后的新值
    -- COMMENT表示对该字段进行的注释
    -- DEFERRED表示指定修改是在下次启动实例时再生效
    -- SCOPE表示修改应用的范围
        -- MEMORY表示仅仅是内存中,不写入SPFILE;下次实例启动时,修改就被丢弃
        -- SPFILE表示写入SPFILE中,但并不立即应用到当前实例中,下次启动实例时再生效
        -- BOTH(默认)表示立即生效并且写入SPFILE中
    -- SID表示修改应用的实例,如果指定*(默认选项),则是应用到所有实例
    
    ALTER SYSTEM SET =    
    

    但是对于SPFILE文件的修改,灵活性则非常的大。

    • 我们可以永久的修改初始化参数文件而不用重启数据库;
    • 我们可以临时的修改初始化参数文件,重新启动则会丢失修改;
    • 我们可以仅对本次会话修改初始化参数文件,会话结束则丢失修改。

    使用PFILE生成SPFILE文件

    初始化参数文件是一个非常重要的文件,它是DBA经过不断的调优而配置得来的,里面参数的价值千金,所以对于初始化参数的备份是必不可少的。至于备份我就不多说了,无非就是拷贝一份。如果现在我的手头只有PFILE文件,而没有SPFILE文件,那么如何生成一份SPFILE呢?

    我们可以通过SQL命令,使用PFILE文件生成SPFILE文件。命令如下:

     CREATE SPFILE='<指定生成的SPFILE文件路径>' FROM PFILE='<指定PFILE文件路径>';

    使用SPFILE文件生成PFILE文件

    如果我的手头只有SPFILE文件,那么我如何生成PFILE文件呢?同理,我们可以使用SPFILE来生成PFILE,命令如下:

    -- 从指定SPFILE文件创建PFILE
    CREATE PFILE='<指定生成的PFILE文件路径>' FROM  SPFILE='<指定SPFILE文件路径>';
    
    -- 从当前实例所使用的SPFILE文件创建PFILE
    CREATE  PFILE='<指定生成的PFILE文件路径>' FROM SPFILE;

    使用初始化参数文件启动数据库

    Oracle在启动实例的时候会读取初始化参数文件中的信息,如果我的手头现在有多个初始化参数文件,我想从指定的一个初始化参数文件启动数据库,那么如何从指定的初始化参数文件启动数据库呢?

    数据库的STARTUP命令中可以指定从哪个PFILE来启动,但是只能指定PFILE, 不能指定SPFILE文件。

    -- 指定SPFILE文件启动,出错
    SQL> STARTUP SPFILE='C:\MYSPFILE.ORA';
    SP2-0714: 无效的        STARTUP 选项组合
    
    -- 指定PFILE文件启动,正常启动
    SQL> STARTUP PFILE='C:\mypfile.ora';
    ORACLE 例程已经启动。
    
    Total System Global Area  535662592 bytes
    Fixed Size                  1375792 bytes
    Variable Size             327156176 bytes
    Database Buffers          201326592 bytes
    Redo Buffers                5804032 bytes
    数据库装载完毕。
    数据库已经打开。

    总结

    学习Oracle真的是一个漫长的过程。各种知识点,虽然有些知识学了,实践的机会很少;但是对于理解其它的知识点是非常有帮助的。

    2015年5月20日 于呼和浩特。



沪ICP备19023445号-2号
友情链接