oracle-7参数文件的管理

时间:2022-05-30 04:00:35

参数文件的管理:
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='*'

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