zoukankan      html  css  js  c++  java
  • oracle-7参数文件的管理

    参数文件的管理:
    1.参数文件的作用:记录数据库的配置的

    (1)pfile  ---> 文本文件

    (2)spfile --->服务器的参数文件(二进制的)

    两个参数文件的区别:

    pfile   

    (1)文本文件,可编辑,文件名:init<SID>.ora

    spfile

    (2)二进制文件,只能放在oracle的服务器端,文件名:spfile<SID>.ora,因为他是二进制文件,所以他可以被rman 备份(因为rman只能备份二进制文件)

    两种文件的修改方式不同

    pfile 直接用编辑器进行修改

    但是spfile 是二进制的,所以他的修改方式是:
    alter   system|session    set    parameter_name=values<>;

    两种文件的优先级别不同

    oracle 启动的时候要使用参数文件

    oracle启动的时候

    先找spfile<SID>.ora,找不到的时候再找下面的

    再找spfile.ora,找不到再找下面的

    再找init<SID>.ora  这个是pfile的文本参数文件

    都找不到。oracle启动报错

    参数文件的位置:

    $ORACLE_HOME/dbs/spfile<SID>.ora

    init<SID>.ora 的路径: $ORACLE_HOME/dbs/init<SID>.ora

    pfile文件的位置     $ORACLE_BASE/admin/$ORACLE_SID/pfile(默认是在这个位置下面的额)

    下面有一个init.ora.4122016112837(系统的初始化的文件),这个是初始化第一次用的,以后不会再用了。pfile文件的位置就在这,只是暂时还没有

    默认情况下10g及其以后只使用pfile了,不再使用spfile 了,pfile 文件还是在上面的这个位置,只是暂时还没有就是喽

     上面说的是参数文件的分类及其位置:

    下面说一下,参数文件之间的互相转化:
    比说我现在想把spfile 文件转化车pfile 文件

    create pfile   from  spfile

    然后就会创建一个pfile 文件到默认的pfile文件的位置:$ORACLE_BASE/admin/$ORACLE_SID/pfile

    但是呢,我们也可以指定pfile 的路劲

    create pfile=‘xxxxx’   from  spfile

    其他的转化同上理

    oracle 11g还有一个牛逼的指令

    比如说我们现在把spfile 文件给删了,下次启动oracle的时候就会报错,这个时候我们执行

    crete  spfile='xxxxx'  from  memory

    下面实战,我们会看到我们之前装的数据库在$ORALCE_HOME/dbs下面没有init<SID>.ora这个pfile的文本参数文件

    我们登录oracle

    sqlplus   /    as   sysdba;

    create   pfile    from    spfile  ;

    然后我们在切换到$ORALCE_HOME/dbs下面会看到initesbtest.ora 文件,这个就是pfile 的文本参数文件了

    正在用的文件是不能转换的,但是你可以把转的路径改一下就可以转换了

    参数文件到底有什么作用:

    怎么查看当前参数文件是哪一个

    SQL> show parameter service _name      这个可以查看当前是哪个数据库

    NAME                     TYPE     VALUE
    ------------------------------------ ----------- ------------------------------
    service_names                 string     esbtes

    SQL> select distinct ISSPECIFIED from v$spparameter;

    ISSPEC
    ------
    TRUE
    FALSE

    我们看第一个值,看第一个值是TRUE的话,则使用的是spfile,如果第一个值是FALSE 的话,使用的就是pfile文件,这里我的第一个值是TRUE,所以我这里使用的是spfile,这里我们看到既有TRUE,又有FALSE,说说明我们两种参数文件都有,但是我们只看第一行。

    还有一种方法是:
    SQL> alter system set sga_target=200m scope=spfile;

    System altered.

    这里我修改这个参数,这里显示修改成功,说明我的启动方式读取的参数文件是spfile ,反之就是pfile

    上面这两种是读取的是哪一种参数文件

    下面说一下参数文件的修改

    alter   system|session  set   参数文件名=values   scope=memory|spfile|both;

    memory    只对当前的instance内存有效,下次启动无效

    spfile   只对spfile 进行修改,下次启动才能生效,当前的实例内存没有修改

    both  内存和spfile都进行了修改。如果这里不指定scope,默认就是both

    system 和  session 的区别:

    判断参数能被哪些地方进行修改。我们查看视图   v$parameter

    isses_modifiable可以被alter   session 修改

    issys_modifiable 可以被alter   system修改

    查看我当前的SID

    SQL> select instance_name from v$instance
      2  ;

    INSTANCE_NAME
    ----------------
    esbtest

    比如说我现在想修改一个参数

    我们可以通过参数文件产看有哪些参数

    比如说这里我想修改内存

    SQL> show parameter sga_

    NAME                     TYPE     VALUE
    ------------------------------------ ----------- ------------------------------
    sga_max_size                 big integer 200M
    sga_target                 big integer 200M
    SQL>

    SQL> alter system set sga_max_size=250m;
    alter system set sga_max_size=250m
                     *
    ERROR at line 1:
    ORA-02095: specified initialization parameter cannot be modified


    SQL> a scope=spfile
      1* alter system set sga_max_size=250mscope=spfile

    这里修改内存报错,是因为这是一个特殊的初始化参数,不能被修改,只能改到参数文件中,让他下次启动的时候生效,这个就是静态的参数。加一个spfile

    我们也可以指定修改某一个实例的参数,即加一个sid

    alter system set sga_max_size=250m scope=spfile  sid='orcl'

    上面这个命令适合单机有多个实例

    alter   session   xxxxxx对会话进行修改

    SQL> 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

     ISSES_MODIFIABLE      等于TRUE 能被  system修改

     ISSYS_MODIFIABLE       等于TRUE能被  session修改

     select name,isses_modifiable,issys_modifiable from v$parameter;

    我们可以通过上面的命令查看哪些值能被system|session 进行修改

    SQL> select distinct issys_modifiable from v$parameter;

    ISSYS_MOD
    ---------
    IMMEDIATE     动态参数,可以直接修改到内存当中  alter   system  set XXX
    FALSE             静态参数,不能直接修改到内存,需要加上scope,比如,alter  system   XXX  scope=spfile,下次启动才能生效
    DEFERRED      会话参数   alter session set XXX,只对当前会话生效

    参数的删除

    要是pfile ,直接进行修改删除

    要是spfile 的话,需要执行

    alter system  reset   <xxxx>  scope=spfile sid='*'

    这里还有一种隐藏参数,这里我没有听,太累了。上课好枯燥啊啊

  • 相关阅读:
    Vue3+Element-Plus-admin
    uniapp UI库推荐 uView官网/文档
    js 获取本月月初和月末时间操作
    el-dialog 无法弹出来
    Vue核心技术 Vue+Vue-Router+Vuex+SSR实战精讲
    sed 相关命令
    docker 启动 ubuntu
    vue 配置 history 模式
    typescript 相关
    fiddler 图片下载
  • 原文地址:https://www.cnblogs.com/smail-bao/p/5550284.html
Copyright © 2011-2022 走看看