zoukankan      html  css  js  c++  java
  • Oracle体系结构之参数文件管理

    参数文件作用:主要用来记录数据库配置信息,数据库在启动时,需要读取参数文件中关于控制文件的信息,分配内存,打开进程,会话等。数据库启动时第一个读取参数文件。

    参数文件分类:

             1)pfile:文本文件,vim编辑器编辑,文件名:init<sid>.ora

             2)spfile:二进制文件,9i后推出使用,服务器参数文件,只能存在服务器端,文件名:spfile<sid>.ora,可以被rman备份。

    区别:

    pfile:文本,可被vi编辑,init<sid>.ora

    spfile:二进制,服务器端,spfile<sid>.ora,可以被rman备份,只能被alter session|system命令修改。

    修改方式不同:pfile可用vi编辑;spfile只能通过alter session|system命令修改。

    优先级别:1)spfile<sid>.ora  2)spfile.ora    3)init<sid>.ora 如果三个文件都不存在,oracle启动报错。

    存在位置不同:pfile可以在客户端也可以在服务器端;spfile只能存放在服务器端。

    参数文件路径:

    spfie:$ORACLE_HOME/dbs/spfile<SID>.ora

    [oracle@localhost dbs]$ ls $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora

    /u01/oracle/10g/dbs/spfileorcl.ora

    [oracle@localhost dbs]$ ls $ORACLE_HOME/dbs/spfilerezin.ora

    pfile:

             9i: $ORACLE_HOME/dbs/init$ORACLE_SID.ora

             10g: [oracle@localhost dbs]$ ls $ORACLE_BASE/admin/$ORACLE_SID/pfile/

                       init.ora.21220155120

    参数文件转换:以下命令都可以指定路径,如果不指定路径则新生成文件存放默认路径。

    从spfile-->pfile:

             SQL>create pfile='<路径>' from spfile='<路径>';

    从pfile-->spfile:

             SQL>create spfile='<路径>' from pfile='<路径>';

    11g新指令:

             SQL>create spfile='<路径>' from memory;

    使用指定参数文件启动数据库:SQL>startup pfile|spfile='<路径>';

             SQL>startup pfile='$ORACLE_HOME/dbs/initorcl.ora';

    修改参数文件方法:通过pfile修改spfile

    手工编辑pfile文件:[oracle@localhost dbs]$ vi initorcl.ora

    关闭数据库:SQL>shutdown immediate

    使用指定参数文件启动数据库:SQL>startup pfile='$ORACLE_HOME/dbs/initorcl.ora';

    重新生成spfile文件:SQL>create spfile from pfile;

    如何知道当前数据库使用的是哪一个参数文件启动的:

    方法一:查看当前数据库实例名:查询service_name参数或者查询v$instance视图。

    SQL> show parameter service_name

    NAME                                 TYPE        VALUE

    ------------------------------------ ----------- --------------------------------------------

    service_names                          string         orcl

    SQL>select instance_name from v$instance;

    INSTANCE_NAME

    ----------------

    orcl

    查看当前使用的是哪一个参数文件:

    SQL> select distinct ISSPECIFIED  from v$spparameter;

    ISSPEC

    ------

    TRUE

    FALSE

    第一个值为true表示spfile启动,否则pfile启动。

    方法二:alter system|session修改参数文件,能修改spfile起动,反之,pfile起动。

    修改参数文件:

    pfile:vi编辑,下次启动生效。

    spfile:alter system|session set parametername=<parametername>

    scope=memory | spfile |both sid=<'sid'>|'*';

             memory:表示只修改当前实例内存有效,下次启动失效。

             spfile:针对spfile修改,下次启动生效。

             both:当前内存和spfile都被修改,不指定scope即是此项(默认)。

    可以从v$parameter视图中来得到哪些可以使用alter system修改,哪些可以使用alter session来修改。

    SQL> col name for a40

    SQL> select NAME,ISSES_MODIFIABLE,ISSYS_MODIFIABLE from v$parameter

    2  where name like 'sql%';

    NAME ISSES ISSYS_MOD

    ---------------------------------------- ----- ---------

    sql_trace                                TRUE  IMMEDIATE

    sql92_security                           FALSE FALSE

    sql_version                              TRUE  FALSE

    sqltune_category                         TRUE  IMMEDIATE

     

    SQL> select distinct issys_modifiable from v$parameter;

    ISSYS_MOD

    ---------

    IMMEDIATE   /*动态参数,直接修改到内存的参数alter system set <> = <>,后面不需要跟scope*/

    FALSE       /*静态参数,不能直接修改到内存,alter system set <> = <> scope = spfile*/

    DEFERRED    /*会话级别参数,直接通过alter session set <> = <>*/

    常用参数:[oracle@localhost dbs]$ vim $ORACLE_HOME/dbs/initorcl.ora

    orcl.__db_cache_size=192937984

    orcl.__java_pool_size=4194304

    orcl.__large_pool_size=4194304

    orcl.__shared_pool_size=75497472

    orcl.__streams_pool_size=0

    *.audit_file_dest='/u01/oracle/admin/orcl/adump'

    *.background_dump_dest='/u01/oracle/admin/orcl/bdump'

    *.compatible='10.2.0.1.0'

    *.control_files='/u01/oracle/oradata/orcl/control01.ctl','/u01/oracle/oradata/orcl/control02.ctl','/u01/oracle/oradata/orcl/control03.ctl'

    *.core_dump_dest='/u01/oracle/admin/orcl/cdump'

    *.db_block_size=8192

    *.db_domain=''

    *.db_file_multiblock_read_count=16

    *.db_name='orcl'

    *.db_recovery_file_dest='/u01/oracle/flash_recovery_area'

    *.db_recovery_file_dest_size=2147483648

    *.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'

    *.job_queue_processes=10

    *.open_cursors=300

    *.pga_aggregate_target=94371840

    *.processes=150

    *.remote_login_passwordfile='EXCLUSIVE'

    *.sga_target=285212672

    *.undo_management='AUTO'

    *.undo_tablespace='UNDOTBS1'

    *.user_dump_dest='/u01/oracle/admin/orcl/udump'

    隐藏参数:死马当活马医,不建议用。

    SQL> desc x$ksppi /*Name列中为隐藏参数的名字*/

    Name Null?    Type

    ----------------------------------------- -------- ----------------------------

    ADDR                                               RAW(4)

    INDX                                               NUMBER

    INST_ID                                            NUMBER

    KSPPINM                                            VARCHAR2(80)

    KSPPITY                                            NUMBER

    KSPPDESC                                           VARCHAR2(255)

    KSPPIFLG                                           NUMBER

    KSPPILRMFLG                                        NUMBER

    KSPPIHASH                                          NUMBER

    --下面视图中为隐藏参数的值

    SQL> desc x$ksppcv

    Name Null?    Type

    ----------------------------------------- -------- ----------------------------

    ADDR                                               RAW(4)

    INDX                                               NUMBER

    INST_ID                                            NUMBER

    KSPPSTVL                                           VARCHAR2(512)

    KSPPSTDVL                                          VARCHAR2(512)

    KSPPSTDF                                           VARCHAR2(9)

    KSPPSTVF                                           NUMBER

    KSPPSTCMNT                                         VARCHAR2(255)

    --使用下面的命令来查看系统中的隐藏参数;

    SQL> select ksppinm,ksppstvl from x$ksppi a,x$ksppcv b where a.indx = b.indx and ksppinm like '%_allow%';

    KSPPINM                                                            KSPPSTVL

    ----------------------------------------                           ----------

    _allow_level_without_connect_by                                    FALSE

    _asm_allow_only_raw_disks                                          TRUE

    _asm_allow_resilver_corruption                                     FALSE

     

     

    参数删除:恢复默认值。

    pfile:可以直接vi或vim修改或删除。

    spfile:以下命令进行删除,参数文件将恢复默认值。

    SQL>alter system|session reset parametername=<name>

    scope= memory | spfile |both sid=<'sid'>|'*';

    查看参数文件:show parameter <参数文件名称|名称关键字>

    事件参数:events

                       修改事件参数:alter session set events <>;

    练习:

             1、pfile和spfile的修改?

             pfile可以直接通过vim编辑器修改;spfile可以通过vim修改pfile-->shutdown immediate-->startup pfile='路径'-->create spfile from pfile,spfile也可以通过alter system|session set parametername=<values> scope=memory|spfile|both sid='<sid|*>';方法修改。

             2、区分系统用哪个参数文件启动?

             通过查询v$spparameter视图中ISSPECIFIED字段值查看;也可以通过修改系统参数alter

    system|session set 方式,如果修改成功则证明是spfile启动,反之pfile启动。

             3、总结出最少的参数启动数据库需要哪些参数?

             4、熟悉常用的隐藏参数?

  • 相关阅读:
    Alone
    vue父组件中调用子组件的方法
    常用CSS的布局问题;
    Flex语法和常用鼠标手势
    如何解决浮动元素高度塌陷---CSS
    Vue中使用 iview 之-踩坑日记
    路由懒加载---Vue Router
    <input type="file">如何实现自定义样式
    sticky -- position定位属性sticky值之粘性定位;
    Vue组件传值(三)之 深层嵌套组件传值
  • 原文地址:https://www.cnblogs.com/wcwen1990/p/4338588.html
Copyright © 2011-2022 走看看