• Oracle 参数文件 & 参数详解


    Oracle 参数文件
    参数文件主要用来记录数据库的配置,是 Oracle 中非常重要的文件。Instance 在启动阶段读取参数文件 ,并根据参数文件中的参数设置来配置数据库。

    参数文件分类

    • pfile :(parameter file)静态参数文件。
      1)文本文件,可以使用vi,vim等编辑器修改参数。
      2)修改参数下次重启实例才生效。
      3)pfile 参数文件可以不在 database server 上。
      4)命名方式:init+SID.ora 。
    • spfile :(system parameter file) 动态参数文件。
      1)二进制文件,不可以通过编辑器修改,可以使用 EM 或指令来修改(alter system|session set parameter_name = values <>)。
      2)Linux 下 strings 可以查看。
      3)必须在 database server 端的指定路径($ORACLE_HOME/dbs)下。
      4)支持RMAN备份。
      5)命名方式: spfile+SID.ora 。

    在这里插入图片描述
    参数文件优先级

    Oracle 启动时读取参数文件的顺序为:

    spfilesid.ora --> spfile.ora -->initsid.ora

    如果3个文件都不存在,则会报错。

    参数文件之间相互生成

    • 由 spfile 生成 pfile
    create pfile from spfile //执行完毕后,pfile 将保存为$ORACLE_HOME/dbs/init$ORACLE_SID.ora
    

    也可指定 pfile 的路径

    create pfile = '<dir>' from spfile;
    

    例:

    SQL>create pfile='/oradata/oracle/app/oracle/product/12.1.0/dbhome_1/dbs/wind.ora' from spfile;
    
    • 由 pfile 生成 spfile
    create spfile from pfile////执行完毕后,pfile 将保存为$ORACLE_HOME/dbs/spfile$ORACLE_SID.ora
    

    指定 pfile 路径

    create spfile from pfile = '<dir>'
    

    指定 pfile 路径及生成的 spfile 存放路径

    create spfile = '<dir>' from pfile = '<dir>'
    

    参数文件示例

    $ cat initstudy.ora
    study.__data_transfer_cache_size=0
    study.__db_cache_size=1375731712
    study.__java_pool_size=16777216
    study.__large_pool_size=33554432
    study.__oracle_base='/oradata/oracle/app/oracle'#ORACLE_BASE set from environment
    study.__pga_aggregate_target=1325400064
    study.__sga_target=1962934272
    study.__shared_io_pool_size=100663296
    study.__shared_pool_size=419430400
    study.__streams_pool_size=0
    *._catalog_foreign_restore=FALSE
    *.audit_file_dest='/oradata/oracle/app/oracle/admin/study/adump'
    *.audit_trail='db'
    *.compatible='12.1.0.2.0'
    *.control_files='/oradata/oracle/app/oracle/oradata/study/control01.ctl','/oradata/oracle/app/oracle/fast_recovery_area/study/control02.ctl'
    *.db_block_size=8192
    *.db_domain=''
    *.db_name='study'
    *.db_recovery_file_dest='/oradata/oracle/app/oracle/fast_recovery_area'
    *.db_recovery_file_dest_size=4560m
    *.diagnostic_dest='/oradata/oracle/app/oracle'
    *.dispatchers='(PROTOCOL=TCP) (SERVICE=studyXDB)'
    *.enable_pluggable_database=true
    *.memory_target=3128m
    *.open_cursors=300
    *.processes=300
    *.remote_login_passwordfile='EXCLUSIVE'
    *.undo_tablespace='UNDOTBS1'
    

    参数详解可参考:http://blog.itpub.net/17203031/viewspace-697335/

    Oracle 参数
    上文已经通过 initstudy.ora 文件的内容向大家展示了 Oracle 的一些参数。下面将进一步讲解。

    Oracle 参数分类

    • 动态参数
      在 spfile 读到内存后,有一部分参数可以直接在内存中修改,并对当前 instance 立即生效,这样的参数叫动态参数。动态参数在 instance 关闭后失效。
    • 静态参数
      除了动态参数都是静态参数。静态参数需要修改 spfile 文件。静态参数需重启 Instance 才生效。
      在这里插入图片描述

    修改 spfile 文件的方法:

    alter system set 参数=值 [scope=memory|spfile|both] 
    
    alter system reset 参数 [scope=memory|spfile|both] SID='*' //恢复缺省值
    

    scope=memory :参数修改后立刻生效,但不修改 spfile 文件。
    scope=spfile :修改了 spfile 文件,重启后生效。
    scope=both :前两种都要满足。
    如果不写 scope,即缺省,缺省值为scope=both 。

    注意:不修改 spfile,是无法更改静态参数的呦。

    参数修改

    Oracle中,有些参数可以在 session 级别修改,有些则必须在 system 级别修改,有些参数不需要重启就能马上生效,有些参数必须重启才能生效。

    那要如何知道这些信息呢?又该如何修改这些参数呢?视图 v$parameter 提供了这些信息。

    SQL> desc v$parameter;
     Name                                      Null?    Type
     ----------------------------------------- -------- ----------------------------
     NUM                                                NUMBER
     NAME                                               VARCHAR2(80)
     TYPE                                               NUMBER
     VALUE                                              VARCHAR2(4000)
     DISPLAY_VALUE                                      VARCHAR2(4000)
     DEFAULT_VALUE                                      VARCHAR2(255)
     ISDEFAULT                                          VARCHAR2(9)
     ISSES_MODIFIABLE                                   VARCHAR2(5)
     ISSYS_MODIFIABLE                                   VARCHAR2(9)
     ISPDB_MODIFIABLE                                   VARCHAR2(5)
     ISINSTANCE_MODIFIABLE                              VARCHAR2(5)
     ISMODIFIED                                         VARCHAR2(10)
     ISADJUSTED                                         VARCHAR2(5)
     ISDEPRECATED                                       VARCHAR2(5)
     ISBASIC                                            VARCHAR2(5)
     DESCRIPTION                                        VARCHAR2(255)
     UPDATE_COMMENT                                     VARCHAR2(255)
     HASH                                               NUMBER
     CON_ID                                             NUMBER
    

    重点介绍该视图的以下几列:
    ISSYS_MODIFIABLE :这一列标志该参数是否可以在system级别被修改,对应 alter session 命令。

    SQL> select distinct issys_modifiable from v$parameter;
    
    ISSYS_MOD
    ---------
    IMMEDIATE  //对应 scope=memory
    FALSE      //只能 scope=spfile,即修改 spfile 文件,下次启动才生效。
    DEFERRED   //其他 session 有效
    

    其中有三个值:

    • IMMEDIATE —— 表示修改之后立即生效;
    • DEFERRED —— 表示下个 session 才生效,当前 session 尚未生效;
    • FALSE —— 表示实例重启后才能生效。

    ISSES_MODIFIABLE :这一列标志该参数是否可以在 session 级别被修改,对应 alter system 命令。

    SQL> select distinct isses_modifiable from v$parameter;
    
    ISSES
    -----
    TRUE  //表示可以修改 
    FALSE //表示不能修改
    

    其中有两个值:
    TRUE —— 表示可以修改;
    FALSE —— 表示不能修改。

    为了更好的理解上面的内容,下面通过4个典型参数做进一步说明。

    SQL>  select name,ISSES_MODIFIABLE,ISSYS_MODIFIABLE from v$parameter where name in ('workarea_size_policy','audit_file_dest','sga_target','sga_max_size');
    

    在这里插入图片描述
    1)workarea_size_policy 可在 session 级别修改,可以通过 alter session 修改,修改后立即生效。

    先查看当前配置:

    SQL>  show parameter workarea_size_policy
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    workarea_size_policy                 string      AUTO
    

    在session级别修改:

    SQL> alter session set workarea_size_policy=MANUAL;
    Session altered.
    

    在当前 session 查看,可以发现修改已经生效:

    SQL> show parameter workarea_size_policy
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- -------------------
    workarea_size_policy                 string      MANUAL
    

    2)sga_target 可在 system 级别修改,可以通过 alter system 修改,修改后立即生效。

    先查看当前配置:

    SQL> show parameter sga_target
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- --------------
    sga_target                           big integer 1000M
    

    在 system 级别修改:

    SQL> alter system set sga_target=1500M;
    System altered.
    

    用alter system修改后立即生效:

    SQL> show parameter sga_target
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------
    sga_target                           big integer 1500M
    

    3) audit_file_dest 可在 system 级别修改,可以通过 alter system 修改,下个session才生效。

    先查看当前配置:

    SQL> show parameter audit_file_dest
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    audit_file_dest                      string      /oradata/oracle/app/oracle/admin/study/adump
    

    在 system 级别修改:

    SQL> alter system set audit_file_dest='/oradata/oracle/app/oracle/admin/study/adump/test' deferred;
    System altered.
    

    注意:后面必须得加关键字 deferred,否则会报错。

    在当前 session 查询,还是原值:

    SQL> show parameter audit_file_dest
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    audit_file_dest                      string      /oradata/oracle/app/oracle/admin/study/adump
    

    重新开个session,在新的 session 中查询,是修改后路径:

    SQL> show parameter audit_file_dest
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    audit_file_dest                      string      /oradata/oracle/app/oracle/admin/study/adump/test
    

    4)sga_max_size 可在 system 级别修改,可以通过 alter system 修改,需重启实例才能生效。

    先查看当前配置:

    SQL> show parameter sga_max_size
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    sga_max_size                         big integer 3136M
    

    在 system 级别修改:

    SQL> alter system set sga_max_size=3200 scope=spfile;
    System altered.
    

    注意:后面必须得加scope=spfile,否则会报错。

    实例重启之前查看,该参数还是原来值:

    SQL> show parameter sga_max_size
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    sga_max_size                         big integer 3136M
    

    重启实例:

    SQL> shutdown immediate
    SQL> startup
    

    再次查看,该参数值已更新:

    SQL> show parameter sga_max_size
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    sga_max_size                         big integer 3200M
    

    参考:http://blog.itpub.net/17203031/viewspace-697335/

  • 相关阅读:
    find实现特殊功能示例
    shell脚本之流程控制语句
    批量kill java进程方法-引出子shell和反引用
    一些shell默认的变量
    打印脚本执行进度条
    设置shell脚本静默方式输入密码方法
    shell监控之列出1小时内cpu占用最多的10个进程
    shell之使用paste命令按列拼接多个文件
    shell技巧之以逆序形式打印行
    shell之使用cut切割文本文件
  • 原文地址:https://www.cnblogs.com/ruishine/p/14392684.html
Copyright © 2020-2023  润新知