问题6:spfile与pfile相关的知识

目的:了解spfile与pfile相关的知识
pfile:

1.pfile(parameter file),在oracle8i以前,使用pfile这样一个文本文件来存储数据库的初始化参数
2.数据库在启动时,通过读取参数文件来获得实例的参数设置
3.数据库正常运行的过程中,任何的对于该参数文件中参数的修改(这里的修改指的是在操作系统级别对该文件的编辑),只有在数据库重新启动的时候才生效
4.对于动态参数来说,通过命令alter system /alter session 就可以使修改立即生效
spfile:
1.oralce 9i以后,出现spfile(server parameter file),它是一个二进制文件,文件中的内容和以前的pfile中的内容相同
2.spfile是服务器端的初始化参数文件,在数据库的运行过程中,参数不会发生变化即如果是对静态参数的修改,不会生效直到重启数据库

3.使用alter system语句,对于实例参数的修改是永久的
4.如果第一次启动数据库使用的是pfile,那么oracle要求通过pfile来生成spfile
5.所有的对参数的定义及参数的存储都在spfile中,在集群中,spfile中的参数对于集群中的所有的实例来说,都是可用的
6.spfile允许动态进行修改,而不需要关闭实例,但重启之后修改才能生效
7.可以一直使用pfile来加载实例的配置,但是就不能对实例进行更加简便的管理和动态修改参数
注意:
默认情况下,如果没有定义用pfile来启动数据库,那么oracle会通过spfile来启动数据库

SERVER PARAMETER FILE(spfile):

=============================
1.从根本上来说,spfile是存储初始化参数的一个库
2.存储在spfile中的参数是永久的,意思是,在数据库的状态出于shutdown 和startup之间时,任何参数的修改都是永久的。
3.通过这种方式,任何通过alter system修改的参数都是永久的

同样,spfile为oracle服务器的自我调整提供了一个基础。
4.对于RAC系统来说,另外的一个好处是,一个参数文件可以被集群中的所有的实例公用。尽管使用一个文件来定义参数,但是这个文件中提供了不同的参数格式,如为所有实例定义的一般参数和为某些实例设置的特定的参数
5.spfile是一个二进制文件,不能进行浏览、不能通过文本编辑器进行编辑
6.oracle提供了其他的接口即方式来查看和修改参数设置
7.默认的情况下,oracle通过spfile来启动实例
8.如果启动的语句中不包括pfile子句,那么就是通过spfile来启动实例
9.如果选择通过pfile来启动实例,那么必须在startup命令中加上pfile子句

设置spfile参数值:
==============
1.使用SID标识符,用来在spfile中定义某个实例的参数
2.在设置参数时,用“*” 和实例名字来定义参数值,如下所示:
*.open_cursors=400 # 数据库级别的修改
racdb1.open_cursors=800# 对于RACDB1实例的修改
【注意】
* 代表所有的实例,尽管open_cursors对于所有的实例参数为400,但是对于实例RACDB1来说,800这个参数仍然有效
即单个实例的参数值的优先级高于所有实例通用参数值的优先级
3.有些参数是动态的,因此这些参数可以通过alter session 和 alter system语句进行修改,如下例的语句:
alter session set parameter_name = value
alter system set parameter_name = value[deferred]
4.在alter system语句中通过set来修改参数值
5.scope子句,定义修改的范围,如下所示:
scope=spfile
对于静态和动态参数,所有的改变都记录在spfile中,在下次重启后生效
scope=memory

对于动态参数来说,变化只是记录在内存中,在这个子句中,不允许对静态参数进行修改
scope=both

对于动态参数,变化被记录在内存和spfile中,不允许对静态参数进行修改。
对于动态参数来说,同样可以定义DEFERRED关键字,定义了这个选项后,参数的修改在以后的会话中生效

举例:
====
以下的语句会影响所有的实例。但是这个值仅仅对当前实例是有效即参数的修改被记录到了内存中,这些值没有被写入到spfile中
alter system set open_cursors=500 sid='*' scope=memory;
下面的语句重置实例RACDB1的参数值:
alter system reset open_cursors scope=spfile sid='racdb1';
通过以下的命令来重置参数值,对于集群中的所有实例都生效:

alter system reset open_cursors scope=spfile sid = '*';

创建一个spfile:
============
1.spfile是通过init.ora即文本初始化参数文件,在初始化过程中被创建的
2.在使用startup命令之前,必须进行创建spfile
3.使用create spfile语句来创建spfile
以下的例子是通过一个初始化参数文件来创建spfile:
create spfile from pfile = '/u01/oracle/product/920/dbs/initrac1.ora';
下面这个例子,表示创建一个spfile,并且赋予它一个名字
create spfile = '/u01/oracle/product/920/dbs/racdb_spfile.ora' from pfile = '/u01/oracle/product/920/dbs/init.ora';

导出spfile:
========
通过spfile来创建一个文本格式的初始化参数文件,在以下情况这种转换非常有用:
1)对spfile进行备份

2)为了对当前实例的设置进行诊断,列出所有的参数值
3)为了修改spfile,先对它进行转换,对输出的文件进行编辑,重建spfile
下面的例子是通过spfile来创建文本形式的初始化参数文件:

creae pfile from spfile;
以下定义了pfile的名字

create pfile='/u01/oracle/product/920/dbs/racdb_init.ora' from spfile='/u01/oracle/product/dbs/racdb_spfile.ora';

检查当前数据库使用的是不是spfile?
============================
通过以下的查询,查看数据库使用的是不是spfile:
1)SQL> select name, value from v$parameter where name = 'spfile';
NAME VALUE
-------------------- ----------------------------------------
spfile /u01/app/oracle/product/10.2.0/db_1/dbs/
spfileradius.ora

2)SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /u01/app/oracle/product/10.2.0
/db_1/dbs/spfileradius.ora


通过查看v$spparameter视图,可以查看到spfile中的内容
设置以下的参数:
SQL> alter system set timed_statistics=false scope=spfile;
查看这个参数的修改是否成功
SQL> select name, value from v$parameter where name = 'timed_statistics';

NAME VALUE
-------------------- ----------
timed_statistics TRUE

查看v$spparameter视图
SQL> select name, value from v$spparameter where name = 'timed_statistics';
NAME VALUE
-------------------- ----------
timed_statistics FALSE
【说明】

spfile中的内容已经被修改,在下次重启之后生效,但是当前的参数值并没有发生变化,一直生效,直到重启数据库
--END--
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值