• 初始化参数文件


    1、初始化参数文件
     
    启动实例时会读取初始化参数文件。参数文件有两种类型。
     
    • 服务器参数文件(SPFILE):
    二进制文件,由oracle server维护,rman可以备份。
    创建spfile
    create spfile[=‘路径’ ]from pfile[=‘路径’];
     
    这是首选的初始化参数文件类型。
    这是一个由数据库服务器写入或读取的二进制文件,不得手动进行编辑。
    此文件驻留在执行Oracle 实例的服务器上,而且永远存在,不受数据库关闭和启动的影响。
    文件默认名为spfile<SID>.ora,启动时会自动搜索此文件。
     
    • 文本初始化参数文件:
    文本文件,操作系统命令修改,手动修改,下次启动有效实例启动时打开
    默然路径:$ORACLE_HOME/dbs
    创建pfile
    create pfile from spfile
    或者cp init.ora $ORACLE_HOME/dbs/inittest0924.ora
     
    这类初始化参数文件可由数据库服务器读取,但不能由其写入。
    必须使用文本编辑器手动设置和更改初始化参数设置,这些设置是永久的,不受数据库关闭或启动的影响。
    此文件的默认名称为init<SID>.ora,如果启动时未找到SPFILE,则自动搜索此文件。
    建议创建SPFILE,从而以动态方式维护初始化参数。通过使用SPFILE,可以在服务器端的磁盘文件中永久存储和管理初始化参数。
     
    2、初始化参数的类型
     
    Oracle DB 服务器有下列类型的初始化参数:
     
    派生参数
     
    一些初始化参数是派生的,也就是说它们的值是通过计算其它参数的值得来的。通常,不应变更派生参数的值。但如果进行了变更,则需指定的值将覆盖计算得出的值。
    例如,SESSIONS参数的默认值派生于PROCESSES参数的值。如果PROCESSES的值发生更改,则SESSIONS的默认值也会发生更改,除非使用指定的值覆盖它。
     
    与操作系统相关的参数
     
    一些初始化参数的有效值或值范围与主机操作系统相关。例如,
    DB_FILE_MULTIBLOCK_READ_COUNT参数指定在一次顺序扫描期间在一个I/O 操作中读取的最大块数;此参数与平台相关。
    这些块的大小(由DB_BLOCK_SIZE设置)的默认值与操作系统相关。
     
    设置参数值
     
    初始化参数最有可能改进系统性能。一些参数设置容量限制,但不影响性能。
    例如,当OPEN_CURSORS的值为10时,尝试打开第11 个游标的用户进程将收到错误消息。有些参数会影响性能,但不施加绝对限制。
    例如,减小OPEN_CURSORS的值可能会降低性能,但不会阻止工作。
    增大参数值也许可以改善系统性能,但增大大多数参数也会增加系统全局区(SGA) 大小。
    较大的SGA 可以将数据库性能提升至某个点。在虚拟内存操作系统中,如果SGA 是交换进/出内存的,则太大的SGA 会降低性能。
    设置控制虚拟内存工作区域的操作系统参数时,应考虑SGA 大小。操作系统配置也会限制SGA 的最大大小。
     
     
    3、简化初始化参数
     
    初始化参数有两种类型:基本初始化参数和高级初始化参数
     
    大多数情况下,只需设置和优化30 个基本参数便可获得合理的数据库性能。极少数情况下,需要修改高级参数才能获得优化的性能。
    基本参数指的是为了让数据库以良好性能运行而设置的参数。其它所有参数都被认为是高级参数。
    基本参数示例:
    • 确定全局数据库名称:DB_NAME和DB_DOMAIN
    • 指定快速恢复区:DB_RECOVERY_FILE_DEST和DB_RECOVERY_FILE_DEST_SIZE
    • 指定DDL 锁定超时:DDL_LOCK_TIMEOUT
    • 指定还原空间管理的方法:UNDO_MANAGEMENT
    • COMPATIBLE初始化参数和不可逆兼容性
     
     
    4、初始化参数:示例
    CONTROL_FILES参数:指定一个或多个控制文件名。Oracle 强烈建议多路复用并镜像控制文件。值范围:一个到八个文件名(带路径名)。默认范围:与操作系统相关。
     
    DB_FILES参数:指定可为此数据库打开的最大数据库文件数。值范围:与操作系统相关。默认值:与操作系统相关(在Solaris 上为200)。
     
    PROCESSES参数:指定可同时连接到Oracle 服务器的最大操作系统用户进程数。此值应允许所有后台进程和用户进程连接到服务器。值范围:从6 到一个与操作系统相关的值。默认值:与操作系统相关。
     
    DB_BLOCK_SIZE参数:指定一个Oracle DB 块的大小(字节)。这个值是在创建数据库时设置的,此后不可更改。该值指定数据库的标准块大小所有表空间默认情况下将使用该大小。值范围:2048 到32768(与操作系统相关)。默认值:8192(与操作系统相关)。
     
    DB_CACHE_SIZE参数:指定标准块缓冲区高速缓存的大小。值范围:至少为16 MB。默认值:48 MB。
     
    SGA_TARGET指定所有SGA 组件的总大小。如果指定了SGA_TARGET,则会自动调整以下内存池的大小:
    • 缓冲区高速缓存(DB_CACHE_SIZE)
    • 共享池(SHARED_POOL_SIZE)
    • 大型池(LARGE_POOL_SIZE)
    • Java 池(JAVA_POOL_SIZE)
    • 流池(STREAMS_POOL_SIZE)
     
    如果将这些自动调整的内存池设置为非零值,则自动共享内存管理(ASMM) 将这些值作为下限。如果某个应用程序组件需要内存达到下限数量才能正常使用,则应当设置下限值。
    以下池是手动调整大小的组件,不受ASMM 的影响:
    • 日志缓冲区
    • 其它缓冲区高速缓存(如KEEP和RECYCLE)和其它块大小
    • 固定SGA 和其它内部分配
    启用ASMM 时,会从SGA_TARGET的总可用内存中减去分配给上述池的内存。
    注:MMON 进程计算自动优化的内存池的值以支持ASMM。
     
    MEMORY_TARGET指定Oracle 系统范围内可用的内存。数据库将内存调整为MEMORY_TARGET值,并根据需要减小或增加SGA 和PGA。
    在基于文本的初始化参数文件中,如果省略MEMORY_MAX_TARGET并包括MEMORY_TARGET的值,数据库会自动将MEMORY_MAX_TARGET设置为MEMORY_TARGET的值。
    如果省略MEMORY_TARGET所对应的行并包括MEMORY_MAX_TARGET的值,则MEMORY_TARGET参数默认为零。
    启动后,如果MEMORY_TARGET不超过MEMORY_MAX_TARGET值,则可以动态地将该参数更改为非零值。
    可以使用ALTER SYSTEM命令修改MEMORY_TARGET参数。值范围是从152 MB 到MEMORY_MAX_TARGET。
     
    PGA_AGGREGATE_TARGET参数指定分配给此实例所挂接的所有服务器进程的程序全局区(PGA) 内存量。
    这些内存不驻留在系统全局区(SGA) 中。数据库将此参数用作要使用的目标PGA 内存量。
    设置此参数时,从系统上可供Oracle 实例使用的总内存中减去SGA。值范围由整数加上字母K、M或G(分别以KB、MB 或GB 为单位指定此限制)构成。最小值是10 MB,最大值是4096 GB。默认值是10 MB 或SGA 大小的20%(取两者中较大的值)。
     
    SHARED_POOL_SIZE参数:指定共享池的大小(字节)。共享池包含诸如共享游标、存储过程、控制结构和并行执行消息缓冲区等对象。该值比较大时可以改进多用户系统的性能。值范围:与操作系统相关。默认值:操作系统是64 位时为64 MB;否则为16 MB。
     
    UNDO_MANAGEMENT参数:指定系统应使用的还原空间管理模式。如果设置为AUTO,则在自动还原管理(AUM) 模式下启动实例。否则,在回退还原(RBU) 模式下启动实例。在RBU 模式下,还原空间在外表上被分配为回退段。在AUM 模式下,还原空间在外部被分配为还原表空间。值范围:AUTO或MANUAL。如果启动第一个实例时省略了UNDO_MANAGEMENT参数,则使用默认值AUTO。
     
     
    查看pfile内容
     
    [oracle@rtest dbs]$ pwd
    /u01/app/oracle/product/11.2.0/dbhome_1/dbs
    [oracle@rtest dbs]$ more inittest0924.ora
    # Oracle init.ora parameter file generated by instance test0924 on 09/27/2013 14:34:25
    audit_file_dest='/u01/app/oracle/admin/test0924/adump'
    audit_trail='DB'
    background_dump_dest='/u01/app/oracle/diag/rdbms/test0924/test0924/trace' #Deprecate parameter
    compatible='11.2.0.0.0'
    control_files='/u01/app/oracle/oradata/test0924/control01.ctl'
    control_files='/u01/app/oracle/fast_recovery_area/test0924/control02.ctl'
    core_dump_dest='/u01/app/oracle/diag/rdbms/test0924/test0924/cdump'
    db_block_size=8192
    db_domain=''
    db_keep_cache_size=48M
    db_name='test0924'
    db_recovery_file_dest='/u01/app/oracle/fast_recovery_area'
    db_recovery_file_dest_size=4122M
    diagnostic_dest='/u01/app/oracle'
    dispatchers='(PROTOCOL=TCP) (SERVICE=test0924XDB)'
    log_buffer=19365888 # log buffer update
    open_cursors=300
    optimizer_dynamic_sampling=2
    optimizer_mode='ALL_ROWS'
    pga_aggregate_target=798M
    plsql_warnings='DISABLE:ALL' # PL/SQL warnings at init.ora
    processes=150
    query_rewrite_enabled='TRUE'
    remote_login_passwordfile='EXCLUSIVE'
    resource_manager_plan=''
    result_cache_max_size=12M
    sga_target=2400M
    shared_pool_size=496M
    skip_unusable_indexes=TRUE
    undo_tablespace='UNDOTBS1'
    user_dump_dest='/u01/app/oracle/diag/rdbms/test0924/test0924/trace' #Deprecate parameter
     
     
    查看spfile内容
    [oracle@rtest dbs]$ pwd
    /u01/app/oracle/product/11.2.0/dbhome_1/dbs
    [oracle@rtest dbs]$ strings spfiletest0924.ora
    test0924.__db_cache_size=1811939328
    test0924.__java_pool_size=16777216
    test0924.__large_pool_size=16777216
    test0924.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
    test0924.__pga_aggregate_target=838860800
    test0924.__sga_target=2516582400
    test0924.__shared_io_pool_size=0
    test0924.__shared_pool_size=570425344
    test0924.__streams_pool_size=16777216
    *.audit_file_dest='/u01/app/oracle/admin/test0924/adump'
    *.audit_trail='db'
    *.compatible='11.2.0.0.0'
    *.control_files='/u01
    /app/oracle/oradata/test0924/control01.ctl','/u01/app/oracle/fast_recovery_area/test0924/control02.ctl'
    *.db_block_size=8192
    *.db_domain=''
    *.db_keep_cache_size=50331648
    *.db_name='test0924'
    *.db_recovery_file_dest='/u01/app/oracle/fast_recovery_area'
    *.db_recovery_file_dest_size=4322230272
    *.diagnostic_dest='/u01/app/oracle'
    *.dispatchers='(PROTOCOL=TCP) (SERVICE=test0924XDB)'
    *.open_cursors=300
    *.pga_aggregate_target=836763648
    *.processes=150
    *.remote_login_passwordfile='EXCLUSIVE'
    *.sga_target=2516582400
    *.shared_pool_size=520093696
    *.undo_tablespace='UNDOTBS2'
     
     
    5、使用SQL*Plus 查看参数
     
    可以查询数据V$PARAMETER字典视图以查找各个参数的值。
    V$PARAMETER显示当前会话中的当前参数值。
    还可以使用带有任意字符串的SHOW PARAMETER命令来查看包含该字符串的参数。
    以下示例中的查询请求的是参数的名称和值,该示例使用WHERE子句来指定特定参数名称:
     
     
    sys@TEST0924> SELECT name, value FROM V$PARAMETER WHERE name LIKE '%pool%';
    NAME VALUE
    ------------------------------ --------------------
    shared_pool_size 520093696
    large_pool_size 0
    java_pool_size 0
    streams_pool_size 0
    shared_pool_reserved_size 27682406
    buffer_pool_keep
    buffer_pool_recycle
    global_context_pool_size
    olap_page_pool_size 0
    9 rows selected.
     
     
    视图的说明:
     
    sys@TEST0924> desc v$parameter
    Name Null? Type
    ----------------------------------------------------- -------- ------------------------------------
    NUM NUMBER
    NAME VARCHAR2(80)
    TYPE NUMBER
    VALUE VARCHAR2(4000)
    DISPLAY_VALUE VARCHAR2(4000)
    ISDEFAULT VARCHAR2(9)
    ISSES_MODIFIABLE VARCHAR2(5)
    ISSYS_MODIFIABLE VARCHAR2(9)
    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
     
    第二个示例显示使用SQL*Plus SHOW PARAMETER命令来查看参数设置。还可以使用该命令查找包含一个文本字符串的所有参数。
    例如,可以通过使用以下命令查找包括字符串sga的所有参数名:
     
    sys@TEST0924> show parameter sga
    NAME TYPE VALUE
    ------------------------------------ ----------- ------------------------------
    lock_sga boolean FALSE
    pre_page_sga boolean FALSE
    sga_max_size big integer 2400M
    sga_target big integer 2400M
     
    包含参数相关信息的其它视图
    • V$SPPARAMETER:显示有关服务器参数文件内容的信息。如果未使用服务器参数文件来启动实例,则该视图每一行的ISSPECIFIED列中的值为FALSE。
     
    sys@TEST0924> desc V$SPPARAMETER
    Name Null? Type
    ----------------------------------------------------- -------- ------------------------------------
    SID VARCHAR2(80)
    NAME VARCHAR2(80)
    TYPE VARCHAR2(11)
    VALUE VARCHAR2(255)
    DISPLAY_VALUE VARCHAR2(255)
    ISSPECIFIED VARCHAR2(6)
    ORDINAL NUMBER
    UPDATE_COMMENT VARCHAR2(255)
     
    • V$PARAMETER2:显示当前对会话有效的初始化参数的相关信息,每个参数值显示为视图中的一行。新会话将从V$SYSTEM_PARAMETER2视图中显示的实例范围内的值中继承参数值。
     
    sys@TEST0924> desc V$PARAMETER2
    Name Null? Type
    ----------------------------------------------------- -------- ------------------------------------
    NUM NUMBER
    NAME VARCHAR2(80)
    TYPE NUMBER
    VALUE VARCHAR2(4000)
    DISPLAY_VALUE VARCHAR2(4000)
    ISDEFAULT VARCHAR2(6)
    ISSES_MODIFIABLE VARCHAR2(5)
    ISSYS_MODIFIABLE VARCHAR2(9)
    ISINSTANCE_MODIFIABLE VARCHAR2(5)
    ISMODIFIED VARCHAR2(10)
    ISADJUSTED VARCHAR2(5)
    ISDEPRECATED VARCHAR2(5)
    ISBASIC VARCHAR2(5)
    DESCRIPTION VARCHAR2(255)
    ORDINAL NUMBER
    UPDATE_COMMENT VARCHAR2(255)
     
    • V$SYSTEM_PARAMETER:显示当前对实例有效的初始化参数的相关信息。
     
    sys@TEST0924> desc V$SYSTEM_PARAMETER
    Name Null? Type
    ----------------------------------------------------- -------- ------------------------------------
    NUM NUMBER
    NAME VARCHAR2(80)
    TYPE NUMBER
    VALUE VARCHAR2(4000)
    DISPLAY_VALUE VARCHAR2(4000)
    ISDEFAULT VARCHAR2(9)
    ISSES_MODIFIABLE VARCHAR2(5)
    ISSYS_MODIFIABLE VARCHAR2(9)
    ISINSTANCE_MODIFIABLE VARCHAR2(5)
    ISMODIFIED VARCHAR2(8)
    ISADJUSTED VARCHAR2(5)
    ISDEPRECATED VARCHAR2(5)
    ISBASIC VARCHAR2(5)
    DESCRIPTION VARCHAR2(255)
    UPDATE_COMMENT VARCHAR2(255)
    HASH NUMBER
     
    6、 更改初始化参数值
     
    初始化参数有两种类型。
    静态参数:影响实例或整个数据库,只能通过编辑init.ora和SPFILE 进行修改。静态参数要求关闭然后重新启动数据库才能生效。无法对当前实例更改静态参数。
    动态参数可以在数据库联机时更改。
     
    有两种类型的动态参数:
    “会话级别参数”仅影响一个用户会话。示例包括国家语言支持(NLS) 参数,这些参数可用于为排序、日期等参数指定国家语言设置。
    这些参数可以在某个给定会话中使用,并且会在该会话结束时失效。
    • “系统级别参数”影响整个数据库和所有会话。示例包括修改SGA_TARGET值和设置归档日志目标位置。这些参数在指定的SCOPE内保持有效。
    要使它们永久有效,必须指定SCOPE=BOTH 选项或手动编辑PFILE,将这些参数设置添加到SPFILE 中。
    可以使用ALTER SESSION和ALTER SYSTEM命令更改动态参数。
    使用ALTER SYSTEM语句的SET子句可以设置或更改初始化参数值。
     
    可选的SCOPE子句用于指定更改的作用域,如下所示:
    • SCOPE=SPFILE:此更改仅在服务器参数文件中应用。不会对当前实例进行更改
    对于动态和静态参数,更改在下一次启动后生效,并且永久保持有效。对于静态参数来说,这是唯一可以指定的SCOPE值。
    • SCOPE=MEMORY:此更改仅应用到内存中。对当前实例进行更改,且更改立即生效
    对于动态参数,更改立即生效,但不会永久保持,因为服务器参数文件不会进行更新。
    对于静态参数,不允许进行该指定。
    • SCOPE=BOTH:此更改会应用到服务器参数文件和内存中。对当前实例进行更改,且更改立即生效。
    对于动态参数,更改永久保持有效,因为服务器参数文件会进行更新。
    对于静态参数,不允许进行该指定。
    如果实例不是使用服务器参数文件启动的,则指定SCOPE=SPFILE或SCOPE=BOTH是错误的。
    如果实例是使用服务器参数文件启动的,则默认值为SCOPE=BOTH;
    如果实例是使用文本初始化参数文件启动的,则默认值为MEMORY。
    对于动态参数,还可以指定DEFERRED关键字。如果指定了该关键字,则更改仅对于以后的会话有效。
    如果将SCOPE指定为SPFILE或BOTH,则使用可选的COMMENT子句可以将一个文本字符串与参数更新关联起来。此注释会写入服务器参数文件中。
     
    7、更改参数值:示例
     
    sys@TEST0924> ALTER SESSION
    2 SET NLS_DATE_FORMAT ='mon dd yyyy';
    Session altered.
    sys@TEST0924> SELECT SYSDATE FROM dual;
    SYSDATE
    -----------
    oct 02 2013
    这是一个更改会话级别参数的示例。用户要将会话日期格式设置为mon dd yyyy。因此,此日期的所有查询将以该格式显示日期。
    还可以使用PL/SQL 在应用程序中设置会话级别参数。
     
    sys@TEST0924> ALTER SYSTEM SET SEC_MAX_FAILED_LOGIN_ATTEMPTS=2 SCOPE=SPFILE;
    System altered.
    这是一个更改断开连接之前的最大登录失败尝试次数。经过指定的失败尝试次数之后,服务器进程会自动断开连接。
  • 相关阅读:
    PHP标准库 (SPL) 笔记
    PHP反射
    PHPer书单
    深入理解面向对象——六大基本原则
    Session自定义存储及分布式存储
    06- Shell脚本学习--其它
    05- Shell脚本学习--函数
    04- Shell脚本学习--条件控制和循环语句
    03- Shell脚本学习--字符串和数组
    02- Shell脚本学习--运算符
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13317130.html
Copyright © 2020-2023  润新知